Document 7182946

Download Report

Transcript Document 7182946

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 CortexM3 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
Flash
256 kB
ARM Cortex-M3
Up to 72 MHz
RAM 36 kB
EEPROM 4 kB
sDMA (18 ch)
Pin Switch Matrix
ROM
CRC Engine
GPIO (30-78)
Power Management Unit
PMU, power modes, BOD,
single VDD power supply, POR
Clock Generation Unit
12 MHz, 1% IRC OSC, 1-24 MHz
System OSC, System (CPU) PLL
Multilayer Bus Matrix
USB PLL
MEMORY
CAN (& PHY)
USB (FS Dev)
SPI (2)
I2C (Fm+)
JTAG
SWD
UART (3)
SYSTEM
SCTimer/PWM (4)
INTERFACES
QEI
WWDT
RTC
Battery pin
TIMERS
ADCs (2)
12 ch, 12-b, 2 Msps
Comparators (4)
Systick
DAC
Temp Sensor
ANALOG
10
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
Workspace
Library
Project
Source File
Source File
Application
Project
Source File
Source File
Source File
15
How does an IDE work?
Development PC
Workspace
Project #1
Project #2
Project #3
Code Compilation
Application Binary
USB Cable
MCU Debugger
Microcontroller
16
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!