Transcript Lec1

EE 319K
Introduction to Microcontrollers
Lecture 1: Introduction,
Embedded Systems, Product
Life-Cycle, ARM Programming
Bard, Gerstlauer, Valvano, Yerraballi
1-1
Agenda
Course Description
Book, Labs, Equipment
Grading Criteria
Expectations/Responsibilities
Prerequisites
Embedded Systems
Microcontrollers
Product Life Cycle
Analysis, Design, Implementation, Testing
Flowcharts, Data-Flow and Call Graphs
ARM Architecture
Programming
Integrated Development Environment (IDE)
Bard, Gerstlauer, Valvano, Yerraballi
1-2
EE306 Recap: Digital Logic
+3.3V
p-type
A p-type n-type ~A
0 V active off +3.3V
+3.3V off active 0V A
gate
n-type
gate
Digital
Analog 0
"0"
Illegal
1.3
2.0
Positive logic:
True is higher voltage
False is lower voltage
Bard, Gerstlauer, Valvano, Yerraballi
source
drain
~A
drain
source
"1"
5V
~A
A
74HC04
A
0
1
~A
1
0
 AND, OR, NOT
 Flip flops
 Registers
Negative logic :
True is lower voltage
False is higher voltage
1-3
EE302 Recap: Ohm’s Law
V=I*R
I=V/R
R=V/I
Voltage = Current * Resistance
Current = Voltage / Resistance
Resistance = Voltage / Current
I = 3.7mA
I
V
R
•P = V * I
•P = V2 / R
•P = I2 * R
Battery
V=3.7V
R = 1k
Resistor
Power = Voltage * Current
Power = Voltage2 / Resistance
Power = Current2 * Resistance
Bard, Gerstlauer, Valvano, Yerraballi
1-4
Embedded System
automotive
medical
communications
microcomputer
appliances
consumer electronics
LM3S or LM4F
Processor
I/O Ports
RAM
ROM
Bus
ADC
 Ubiquitous, invisible
 Hidden (computer inside)
 Dedicated purpose
 MicroProcessor
Embedded system
Microcontroller
 Embedded Systems are
everywhere
Electrical,
mechanical,
chemical,
or
optical
devices
DAC
Analog
signals
Bard, Gerstlauer, Valvano, Yerraballi
 Intel: 4004, ..8080,..
x86
 Motorola: 6800, ..
6812,.. PowerPC
 ARM, DEC, SPARC, MIPS,
PowerPC, Natl. Semi.,…
 MicroController
 Processor+Memory+
I/O Ports (Interfaces)
1-5
Embedded Systems
A reactive system continuously
accepts inputs
performs calculations
generates outputs
A real time system
Specifies an upper bound on the time
required to perform the
input/calculation/output in reaction to
external events
Bard, Gerstlauer, Valvano, Yerraballi
1-6
Microcontroller
 Processor – Instruction Set
 CISC vs. RISC
 Memory
 Non-Volatile
o ROM
o EPROM, EEPROM, Flash
 Volatile
o RAM (DRAM, SRAM)
 Interfaces
 H/W: Ports
 S/W: Device Driver
 Parallel, Serial, Analog, Time
 I/O
 Memory-mapped vs. I/O mapped
Bard, Gerstlauer, Valvano, Yerraballi
1-7
Texas Instruments TM4C123
Systick
NVIC
Cortex M4
System Bus Interface
GPIO Port A
PA7
PA6
PA5/SSI0Tx
PA4/SSI0Rx
PA3/SSI0Fss
PA2/SSI0Clk
PA1/U0Tx
PA0/U0Rx
PC7
PC6
PC5
PC4
PC3/TDO/SWO
PC2/TDI
PC1/TMS/SWDIO
PC0/TCK/SWCLK
GPIO Port B
Eight
UARTs
Four
I2Cs
Four
SSIs
CAN 2.0
GPIO Port C
GPIO Port D
USB 2.0
Twelve
Timers
JTAG
Six
64-bit wide
GPIO Port E
PE5
PE4
PE3
PE2
PE1
PE0
PD7
PD6
PD5
PD4
PD3
PD2
PD1
PD0
GPIO Port F
Two Analog
Comparators
ADC
2 channels
12 inputs
12 bits
Advanced High Performance Bus
PB7
PB6
PB5
PB4
PB3/I2C0SDA
PB2/I2C0SCL
PB1
PB0
Two PWM
Modules
ARM Cortex-M4
+ 256K EEPROM
+ 32K RAM
+ JTAG
+ Ports
+ SysTick
+ ADC
+ UART
PF4
PF3
PF2
PF1
PF0
Advanced Peripheral Bus
Bard, Gerstlauer, Valvano, Yerraballi
1-8
Product Life Cycle
• Specifications
• Constraints
Requirements
Constraints
Design
Analyze
the
problem
• Block diagrams
• Data flow graphs
Development
New requirements
New constraints
Deployment
Done
Testing
• Hardware
• Software
Implementation(Real)
Analysis (What?)
Hardware, Software
Requirements ->
Specifications
Testing (Works?)
Design (How?)
Validation:Correctness
High-Level: Block Diagrams
Performance: Efficiency
Engineering: Algorithms,
Maintenance (Improve)
Data Structures, Interfacing
Bard, Gerstlauer, Valvano, Yerraballi
1-9
Data Flow Graph
Lab 8: Position Measurement System
Position Voltage
0 to 3 cm 0 to +3V
Position
Sensor
Sample
0 to 4095
ADC
hardware
ADC
driver
Sample
0 to 4095
SysTick
ISR
SysTick
hardware
LCD
display
Bard, Gerstlauer, Valvano, Yerraballi
Fixed-point
0 to 3.000
LCD
driver
1-10
Call Flow Graph
Position Measurement System
SysTick
ISR
main
SysTick
init
ADC
driver
SysTick
hardware
ADC
hardware
Bard, Gerstlauer, Valvano, Yerraballi
LCD
driver
LCD
hardware
1-11
Structured Programming
Common Constructs (as Flowcharts)
Sequence
Conditional
While-loop
Block 1
Block 2
Parallel
Fork
Join
Block 1
Block 2
Distributed
Block
Interrupt-driven concurrent
Trigger
main
interrupt
main1
main2
Init1
Init2
Init
Body1
Body2
Body
Bard, Gerstlauer, Valvano, Yerraballi
Return from
interrupt
1-12
Flowchart
Toaster oven:
Cook
main
Output heat
is on
Input from
switch
Start
Not pressed
Input toast
temperature
Pressed
Cook
Too cold
toast < desired
toast  desired
Output heat
is off
return
Coding in assembly and/or high-level language (C)
Bard, Gerstlauer, Valvano, Yerraballi
1-13
Flowchart

Example 1.3. Design a flowchart for a system that performs two independent
tasks. The first task is to output a 20 kHz square wave on PORTA in real time
(period is 50 ms). The second task is to read a value from PORTB, divide the
value by 4, add 12, and output the result on PORTD. This second task is repeated
over and over.
main
A
Input n from B
PORTB
n = (n/4)+12
C
Output n to
PORTD
D
Clock
PORTA =
PORTA^1
Bard, Gerstlauer, Valvano, Yerraballi
<
E
>
void SysTick_Handler(void){
PORTA = PORTA^0x01;
E
}
>
void main(void){
unsigned long n;
while(1){
n = PORTB;
n = (n/4)+12;
PORTD = n;
}
}
A
B
C
D
1-14
ARM Cortex M4-based System
System bus
Microcontroller
ARM® CortexTM-M
processor
Input
ports
PPB
Internal
peripherals
Advanced
High-perf
Bus
Instructions
Flash ROM
ICode bus
DCode bus
Output
ports
Data
RAM
 ARM Cortex-M4 processor
 Harvard architecture
 Different busses for instructions and data
 RISC machine
 Pipelining effectively provides single cycle operation for many
instructions
 Thumb-2 configuration employs both 16 and 32 bit instructions
Bard, Gerstlauer, Valvano, Yerraballi
1-15
ARM ISA: Thumb2 Instruction Set
 Variable-length instructions
ARM instructions are a fixed
length of 32 bits
Thumb instructions are a fixed
length of 16 bits
Thumb-2 instructions can be
either 16-bit or 32-bit
 Thumb-2 gives approximately 26%
improvement in code density over
ARM
 Thumb-2 gives approximately 25%
improvement in performance over
Thumb
Bard, Gerstlauer, Valvano, Yerraballi
1-16
ARM ISA: Registers, Memory-map
General
purpose
registers
Stack pointer
Link register
Program counter
Condition Code Bits
N negative
Z zero
V overflow
C carry
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13 (MSP)
R14 (LR)
R15 (PC)
Indicates
Result is negative
Result is zero
Signed overflow
Unsigned overflow
Bard, Gerstlauer, Valvano, Yerraballi
256k Flash
ROM
32k RAM
0x0000.0000
0x0003.FFFF
0x2000.0000
0x2000.7FFF
I/O ports
0x4000.0000
0x400F.FFFF
Internal I/O
PPB
0xE000.0000
0xE004.1FFF
TI TM4C123
Microcontroller
1-17
LC3 to ARM - Data Movement
LEA R0, Label
;R0 <- PC + Offset to Label
ADR R0,Label or LDR R0,=Label
LD
R1,Label
LDR R0,=Label
LDRH R1,[R0]
LDR R1,R0,n
; R1 <- M[PC + Offset]
; Two steps: (i) Get address into R0
; (ii) Get content of address [R0] into R1
; R1 <- M[R0+n]
LDRH R1,[R0,#n]
LDI
R1,Label
; R1 <- M[M[PC + Offset]]
; Three steps!!
ST R1,Label
LDR R0,=Label
STRH R1,[R0]
STR R1,R0,n
; R1 -> M[PC + Offset]
; Two steps: (i)Get address into R0
; (ii) Put R1 contents into address in R0
; R1 -> M[R0+n]
STRH R1,[R0,#n]
STI R1,Label
; R1 -> M[M[PC + Offset]]
; Three steps!!
Bard, Gerstlauer, Valvano, Yerraballi
1-18
LC3 to ARM – Arithmetic/Logic
ADD R1, R2, R3
ADD R1,R2,R3
ADD R1,R2,#5
ADD R1,R2,#5
AND R1,R2,R3
AND R1, R2, R3
; R1 <- R2 + R3
; 32-bit only
; R1 <- R2 + 5
; 32-bit only, Immediate is 12-bit
; R1 <- R2 & R3
; 32-bit only
AND R1,R2,#1
AND R1, R2, #1
; R1 <- Bit 0 of R2
; 32-bit only
NOT R1,R2
; R1 -> ~(R2)
EOR R1,R2,#-1
; -1 is 0xFFFFFFFF,
; so bit XOR with 1 gives complement
Bard, Gerstlauer, Valvano, Yerraballi
1-19
LC3 to ARM – Branches
BR Target
; PC <- Address of Target
B Target
BRnzp Target
; PC <- Address of Target
B Target
BRn Target
BMI Target
BRz Target
; PC <- Address of Target if N=1
; Branch on Minus
; PC <- Address of Target if Z=1
BEQ Target
BRp Target
; PC <- Address of Target if P=1
No Equivalent
BRnp Target
; PC <- Address of Target if Z=0
BNE Target
BRzp Target
BPL Target
BRnz Target
; PC <- Address of Target if N=0
; Branch on positive or zero (Plus)
; PC <- Address of Target if P=0
No Equivalent
Bard, Gerstlauer, Valvano, Yerraballi
1-20
LC3 to ARM – Subs,TRAP,Interrupt
JSR Sub
BL Sub
JSRR R4
BLX R4
RET
BX LR
JMP R2
BX R2
TRAP x25
; PC <- Address of Sub, Return address in R7
; PC<-Address of Sub, Ret. Addr in R14 (Link Reg)
; PC <- R4, Return address in R7
; PC <-R4, Return address in R14 (Link Reg)
; PC <- R7 (Implicit JMP to address in R7)
; PC <- R14 (Link Reg)
; PC <- R2
; PC <- R14 (Link Reg)
; PC <- M[x0025], Return address in R7
SVC #0x25 ; Similar in concept but not implementation
RTI
BX LR
; Pop PC and PSR from Supervisor Stack…
; PC <- R14 (Link Reg) [same as RET]
Bard, Gerstlauer, Valvano, Yerraballi
1-21
SW Development Environment
Editor
Source code
KeilTM uVision®
Start
; direction register
LDR R1,=GPIO_PORTD_DIR_R
LDR R0,[R1]
ORR R0,R0,#0x0F
; make PD3-0 output
STR R0, [R1]
Start
Debug
Session
Simulated
Microcontroller
Processor
Memory
I/O
Build Target (F7)
Object code
0x00000142
0x00000144
0x00000146
0x0000014A
4912
6808
F040000F
6008
Address Data
Bard, Gerstlauer, Valvano, Yerraballi
Download
Real
Microcontroller
Start
Debug
Session
Processor
Memory
I/O
1-22