270 likes | 354 Views
Explore ARM Cortex-M series, NXP LPC1549 board, IDEs, embedded programming techniques, debugging tools, and common pitfalls in this workshop. Learn to use Keil MDK, debug using LPCXpresso1549, and optimize power consumption with modern tools.
E N D
Getting Started with a Cortex-M3 Board Steven Guan and Joe Hale,NXP SemiconductorsIf you have not already downloaded the class prerequisites, please get the attention of an NXP representative.
Class Agenda • Introduction to the ARM Cortex-M series • Getting started with the NXP LPC1549 Cortex-M3 board • Introduction to Integrated Development Environments • Programming techniques for embedded systems • Modern debugging tools on a Cortex-M3 core • Common Pitfalls
Class Prerequisites • You should have already downloaded and installed (if applicable): • Keil MDK (download and install) • Keil MDK Cortex-M Legacy (download and install) • Segger J-Link Software (download and install) • LPC1549 LPCOpen Software Platform (download) • If you have not downloaded the software, Please get the attention of an NXP representative!
What is a Cortex-M series core? • 32-bit memory architecture • ARM Thumb-2 ISA • Optimized for low power • Trades processing power for lower cost and smaller size
Getting started with the NXP LPCXpresso1549 Cortex-M3 Development Board
NXP LPC1549 Series Specifications MEMORY ARM Cortex-M3 Up to 72 MHz Flash 256kB RAM 36 kB EEPROM 4 kB SYSTEM Pin Switch Matrix sDMA(18 ch) ROM CRC Engine USB PLL GPIO (30-78) Power Management Unit PMU, power modes, BOD, single VDD power supply, POR INTERFACES CAN (& PHY) USB (FS Dev) Multilayer Bus Matrix SPI (2) I2C (Fm+) Clock Generation Unit 12 MHz, 1% IRC OSC, 1-24 MHz System OSC, System (CPU) PLL JTAG SWD UART (3) TIMERS SCTimer/PWM (4) QEI ANALOG ADCs (2) 12 ch, 12-b, 2 Msps WWDT Comparators (4) RTCBattery pin Systick DAC Temp Sensor
LPC Link-2 Debugger • Debugger acts as middleman between MCU and PC • Integrated onto LPC1549 Cortex-M3 board • LPC Link-2 can be flashed to emulate third party debuggers • J-Link pre-installed on the boards given away today • Can also be used as a standalone probe
What is an IDE? • Software application used to facilitate software development • Source code editor • Code compiler, including automated building tools • Software debugger • Examples include Keil MDK, IAR Embedded Workbench, NXP LPCXpresso IDE, etc.
How does an IDE work? • Individual source files make up a Project • Projects are organized into a Workspace • A Project may be compiled into a library or application code
How does an IDE work? Development PC Code Compilation Application Binary MCU Debugger Microcontroller USB Cable
Hands On: Intro to Keil MDK • Complete the worksheet that we are passing out in order to: • Familiarize yourself with the Keil MDK GUI • Get comfortable working with projects in a workspace • Use the LPCOpen software platform to successfully compile and download your first application onto the LPC1549! • If you run into issues, contact the closest NXP representative for assistance
Debug Session • IDE will use the MCU debugger to communicate with MCU through Serial Wire Debug (SWD) pins • IDE will gain access to system memory, peripherals, and debug registers • Enables plethora of debug features to help aid software development
Programming Techniques for an Embedded System • Grand Loop Design • All system events addressed inside a while(1) loop that never exits • Polling method • Service event by constantly checking • Interrupt method • Service event when system is told to service
Demo: Polling vs. Interrupts and their effect on power • Aim to minimize power consumption to maximize battery life • Measure power to direct optimization
Modern Debugging Tools on a Cortex-M Core • Code stepping • Breakpoints • Variable Viewer • SWO Tracing
Demo: SWO Tracing • Non-intrusive debugging • Uses one extra SWD pin as data input/output • PC sampling • Interrupt entries and exits • Instrumentation with ITM • Data watch
Common Pitfalls • Compiler code optimization • Reorders instructions to speed up code execution, making code stepping hard to follow • Use the volatile keyword to prevent variables from being “optimized out” • Use breakpoints to step through interrupt handler code • Don’t use printf() or its deviations
Questions? Thank you for attending this Embedded TechCon class!