getting started with a cortex-m3 board steven guan and joe hale, nxp semiconductors if you have not...
TRANSCRIPT
Getting Started with a Cortex-M3 Board
Steven Guan and Joe Hale,NXP Semiconductors
If 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
2
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!
3
Introduction to the ARM Cortex-M Family
ARM Cortex Family
5
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
6
ARM Cortex-M series
7
Example Cortex-M0/M0+ MCU
8
Getting started with the NXP LPCXpresso1549 Cortex-M3
Development Board
NXP LPC1549 Series Specifications
10
SYSTEM INTERFACES
ANALOG
ADCs (2) 12 ch, 12-b, 2 Msps
ADCs (2) 12 ch, 12-b, 2 Msps
DACDAC
MEMORY
Mul
tilay
er B
us M
atrix
EEPROM 4 kBEEPROM 4 kB
Flash 256 kBFlash
256 kB
RAM 36 kBRAM 36 kB
ROMROM
ARM Cortex-M3Up to 72 MHz
ARM Cortex-M3Up to 72 MHz
UART (3)UART (3)
JTAGJTAG
CAN (& PHY)CAN (& PHY)
SWDSWD
USB (FS Dev) USB (FS Dev)Power Management UnitPMU, power modes, BOD,
single VDD power supply, POR
Power Management UnitPMU, power modes, BOD,
single VDD power supply, POR
Clock Generation Unit12 MHz, 1% IRC OSC, 1-24 MHz System OSC, System (CPU) PLL
Clock Generation Unit12 MHz, 1% IRC OSC, 1-24 MHz System OSC, System (CPU) PLL
USB PLLUSB PLL
TIMERS
SCTimer/PWM (4)SCTimer/PWM (4)
WWDTWWDT
RTCBattery pin
RTCBattery pin SystickSystick
Comparators (4)Comparators (4)
sDMA (18 ch)sDMA (18 ch)
CRC EngineCRC Engine
GPIO (30-78)GPIO (30-78)
Pin Switch MatrixPin Switch Matrix
QEIQEI
Temp SensorTemp Sensor
SPI (2)SPI (2) I2C (Fm+)I2C (Fm+)
LPCXpresso1549 Board from NXP
11
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
12
Introduction to Integrated Development Environments (IDEs)
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.
14
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
15
How does an IDE work?
16
Development PC
Code Compilation
Application BinaryApplication Binary
MCU DebuggerMCU Debugger MicrocontrollerMicrocontrollerUSB 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
17
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
18
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
19
Demo: Polling vs. Interrupts and their effect on power
• Aim to minimize power consumption to maximize battery life
• Measure power to direct optimization
20
Modern Debugging Tools on a Cortex-M Core
• Code stepping• Breakpoints• Variable Viewer• SWO Tracing
21
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
22
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
23
Questions?
Thank you for attending this Embedded TechCon class!