Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file ·...

30
1-1 EE 319K Introduction to Microcontrollers Lecture 1: Introduction, Embedded Systems, Product Life-Cycle, ARM Programming Erez, Gerstlauer, Janapa Reddi, Telang, Tiwari, Valvano, Yerraballi

Transcript of Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file ·...

Page 1: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-1

EE 319KIntroduction to Microcontrollers

Lecture 1: Introduction, Embedded Systems, Product

Life-Cycle, ARM Programming

Erez, Gerstlauer, Janapa Reddi, Telang, Tiwari, Valvano, Yerraballi

Page 2: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-2

AgendaCourse Description

Book, Labs, EquipmentGrading CriteriaExpectations/ResponsibilitiesPrerequisites

Embedded SystemsMicrocontrollers

Product Life CycleAnalysis, Design, Implementation, TestingFlowcharts, Data-Flow and Call Graphs

ARM ArchitectureProgrammingIntegrated Development Environment (IDE)

Page 3: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-3

Useful Info• No labs this week!• Lab lectures start this Friday

• F 4–5, M 6:30–7:30 and 7:30-8:30 (ECJ 1.202)• Office hours: see Canvas for most recent?• TAs have office hours too

• They are not there to do your work for you• One course == common exams and HW

• 2/23 7–8:30 (15%) 4/6 7–8:30 (20%) Final TBD (25%)• Most of the learning is in the labs

• 10 labs 30% of grade• HW is important too so 10% for motivation

• Read the book and lab manual!• Canvas, Piazza, and

users.ece.utexas.edu/~valvano/Volume1/

Page 4: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-4

Action Items• Come introduce yourselves• Take stock of resources

• Class Website (Volume1)• Piazza for class discussions• Email to reach TAs+Me• E-Book: Search “Valvano e-book”

• Order board• Install SW• Read Chapters 1 & 2 of book

Page 5: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-5

DOs and DON’TsDO•Read

• Book, lab, datasheets•Try before seeking help•Follow Piazza/Canvas•Discuss material with others•Homework (not labs) in groups•Consult the web•Track due dates

DON’T•Don’t cheat!•Never look at another student’s code (current or previous)•Don’t let your partner do all the work•Don’t copy software from book or web without attribution•Don’t expect handholding

Page 6: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-6

EE306 Recap: Digital Logic

Positive logic: Negative logic : True is higher voltage True is lower voltageFalse is lower voltage False is higher voltage

AND, OR, NOT Flip flops Registers

A ~A

74HC04

+3.3V

~An-type

p-type source

gateA

drain

drain

gate source

0 V active off +3.3V+3.3V off active 0V

A p-type n-type ~A

A01

~A 1 0

Page 7: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-7

EE306, Also

• Problem solving• Programming• Debugging

Page 8: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-8

EE302 Recap: Ohm’s LawV = I * R Voltage = Current * ResistanceI = V / R Current = Voltage / ResistanceR = V / I Resistance = Voltage / Current

R = 1kBatteryV=3.7V

Resistor

I = 3.7mA

R

I

V

•P = V * I Power = Voltage * Current•P = V2 / R Power = Voltage2 / Resistance•P = I2 * R Power = Current2 * Resistance

1 amp is 6.241×1018 electrons per second = 1 coulomb/sec

Page 9: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-9

Embedded System Embedded Systems are

everywhere Ubiquitous, invisible Hidden (computer inside) Dedicated purpose

Microprocessor Intel: 4004, ..8080,.. x86 Freescale: 6800, ..

9S12,.. PowerPC ARM, DEC, SPARC, MIPS,

PowerPC, Natl. Semi.,… Microcontroller

Processor+Memory+I/O Ports (Interfaces)I/O Ports

Microcontroller Electrical,mechanical,

chemical,or

opticaldevices

Embedded system

Bus ADCAnalogsignals

LM3S or TM4C

DAC

Processor

RAM

ROM

MedicalAutomotive

Communications

Comsumer Industrial

Military

Page 10: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-10

Microcontroller Processor – Instruction Set + memory + accelerators

Ecosystem Memory

Non-Volatileo ROM o EPROM, EEPROM, Flash

Volatileo RAM (DRAM, SRAM)

Interfaces H/W: Ports S/W: Device Driver Parallel, Serial, Analog, Time

I/O Memory-mapped vs. I/O-instructions (I/O-mapped)

Page 11: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-11

Texas Instruments TM4C123

ARM Cortex-M4+ 256K EEPROM+ 32K RAM+ JTAG+ Ports+ SysTick+ ADC+ UART

GPIO Port D

GPIO Port A

ADC2 channels12 inputs12 bits

PA7PA6

PA5/SSI0TxPA4/SSI0RxPA3/SSI0FssPA2/SSI0Clk

PA1/U0TxPA0/U0Rx

PC7PC6PC5PC4

PC3/TDO/SWOPC2/TDI

PC1/TMS/SWDIOPC0/TCK/SWCLK

PE5PE4PE3PE2PE1PE0

GPIO Port C

GPIO Port E

JTAG

FourSSIs

EightUARTs

PB7PB6PB5PB4PB3/I2C0SDAPB2/I2C0SCLPB1PB0

PD7PD6PD5PD4PD3PD2PD1PD0

PF4PF3PF2PF1PF0

GPIO Port B

FourI2Cs

USB 2.0

Cortex M4 SystickNVIC

Two AnalogComparators

Advanced Peripheral Bus

TwelveTimers

Six64-bit wide

CAN 2.0

System Bus Interface

GPIO Port F

Advanced High Performance Bus

Two PWMModules

Page 12: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-12

LaunchPad Switches and LEDs TM4C123 PF0

PF4R1 0

SW1 SW2PF3

PF2

PF1

330Red

330Blue

5V

330

Green

DTC114EET1G

PD0PB6PD1PB7

0R9

0R10

0R12

0R11

0R2

R13 0PA1PA0

PD5PD4

Serial

USBPB1

R29

0

R25PB0

+5

0

The switches on the LaunchPadNegative logic Require internal pull-up (set bits in PUR)

The PF3-1 LEDs are positive logic

Page 13: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-13

I/O Ports and Control Registers

The input/output direction of a bidirectional port is specified by its direction register.

GPIO_PORTF_DIR_R , specify if corresponding pin is input or output: 0 means input 1 means output

Input/Output Port

D Q

Write to port direction register

Direction bits

D Q

Write to port address

Processor

Read from port address

Bus

n

n

n

n

n 1 means output0 means input

GPIO_PORTF_DATA_R

GPIO_PORTF_DIR_R

Page 14: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-14

I/O Ports and Control RegistersAddress 7 6 5 4 3 2 1 0 Name

400F.E608 - - GPIOF GPIOE GPIOD GPIOC GPIOB GPIOA SYSCTL_RCGCGPIO_R

4002.53FC - - - DATA DATA DATA DATA DATA GPIO_PORTF_DATA_R

4002.5400 - - - DIR DIR DIR DIR DIR GPIO_PORTF_DIR_R

4002.5420 - - - SEL SEL SEL SEL SEL GPIO_PORTF_AFSEL_R

4002.551C - - - DEN DEN DEN DEN DEN GPIO_PORTF_DEN_R

• Initialization (executed once at beginning) 1. Turn on clock in SYSCTL_RCGCGPIO_R2. Wait two bus cycles (two NOP instructions)3. Unlock PF0 (PD7 also needs unlocking)4. Set DIR to 1 for output or 0 for input5. Clear AFSEL bits to 0 to select regular I/O6. Set PUE bits to 1 to enable internal pull-up7. Set DEN bits to 1 to enable data pins

• Input/output from pin6. Read/write GPIO_PORTF_DATA_R

Page 15: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-15

Done

• Hardware • Software

• Specifications • Constraints

Analyzethe

problem

RequirementsDesign

Constraints

Testing

• Block diagrams • Data flow graphs

Deployment

New requirementsNew constraints

Development

Product Life Cycle

Analysis (What?)Requirements ->

SpecificationsDesign (How?)

High-Level: Block DiagramsEngineering: Algorithms,

Data Structures, Interfacing

Implementation(Real)Hardware, Software

Testing (Works?)Validation:CorrectnessPerformance: Efficiency

Maintenance (Improve)

Page 16: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-16

Data Flow Graph

Lab 8: Position Measurement System

PositionSensor

Voltage0 to +3.3V

ADChardware

ADCdriver

Sample0 to 4095

SysTickISR

Sample0 to 4095

SysTickhardware

LCDdisplay

LCDdriver Fixed-point

0 to 2.000

Position0 to 2 cm

main

Mailbox

Page 17: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-17

Call Flow Graph

Position Measurement System

main

SysTickhardware

SysTickinit

LCDhardware

LCDdriver

SysTickISR

ADChardware

ADCdriver

Page 18: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-18

Structured ProgrammingCommon Constructs (as Flowcharts)

Fork

Join

Triggerinterrupt

Return from interrupt

main1

Init1

Body1

main2

Init2

Body2

main

Init

Body

Parallel Distributed Interrupt-driven concurrent

Block 1

Sequence Conditional While-loop

Block 2Block 1 Block 2 Block

Page 19: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-19

FlowchartToaster oven:

Coding in assembly and/or high-level language (C)

main

toast < desired

Output heatis on Too coldInput from

switch

Input toasttemperature

toast desired

Start Not pressed

Pressed

Output heatis off

Cook

return

Cook

Page 20: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-20

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.

Clockvoid SysTick_Handler(void){ PORTA = PORTA^0x01;}

E

E

<

>

>

void main(void){unsigned long n; while(1){ n = PORTB; n = (n/4)+12; PORTD = n; }}

BCD

A

main

Input n fromPORTB

A

B

D

Cn = (n/4)+12

Output n toPORTD

PORTA =PORTA^1

Page 21: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-21

ARM Cortex M4-based System

DCode bus

ARM® CortexTM-Mprocessor

DataRAM

InstructionsFlash ROM

Inputports

Outputports

Microcontroller

ICode bus

Internalperipherals

PPB

System bus

AdvancedHigh-perfBus

ARM Cortex-M4 processor Harvard architecture

Different busses for instructions and data

Page 22: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-22

ARM Cortex M4-based System RISC machine

Pipelining effectively provides single cycle operation for many instructions Thumb-2 configuration employs both 16 and 32 bit instructions

CISC RISC Many instructions Few instructions Instructions have varying lengths Instructions have fixed lengths Instructions execute in varying times Instructions execute in 1 or 2 bus cycles Many instructions can access memory Few instructions can access memory

Load from memory to a register Store from register to memory

In one instruction, the processor can both read memory and write memory

No one instruction can both read and write memory in the same instruction

Fewer and more specialized registers. some registers contain data, others contain addresses

Many identical general purpose registers

Many different types of addressing modes Limited number of addressing modes register, immediate, and indexed.

Page 23: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-23

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

Page 24: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-24

ARM ISA: Registers, Memory-mapR0R1R2R3R4R5R6R7R8R9

R10R11R12

R13 (MSP)R14 (LR)R15 (PC)

Stack pointerLink register

Program counter

Generalpurposeregisters

TI TM4C123Microcontroller

256k FlashROM

32k RAM

I/O ports

Internal I/OPPB

0x0000.0000

0x0003.FFFF

0x2000.0000

0x2000.7FFF

0x4000.0000

0x400F.FFFF

0xE000.0000

0xE004.1FFF

Condition Code Bits IndicatesN negative Result is negativeZ zero Result is zeroV overflow Signed overflowC carry Unsigned overflow

Page 25: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-25

LC3 to ARM - Data MovementLEA R0, Label ;R0 <- PC + Offset to Label

ADR R0,Label or LDR R0,=LabelLD R1,Label ; R1 <- M[PC + Offset]

LDR R0,=Label ; Two steps: (i) Get address into R0LDRH R1,[R0] ; (ii) Get content of address [R0] into R1

LDR R1,R0,n ; R1 <- M[R0+n] LDRH R1,[R0,#n]

LDI R1,Label ; R1 <- M[M[PC + Offset]]; Three steps!!

ST R1,Label ; R1 -> M[PC + Offset] LDR R0,=Label ; Two steps: (i)Get address into R0STRH R1,[R0] ; (ii) Put R1 contents into address in R0

STR R1,R0,n ; R1 -> M[R0+n] STRH R1,[R0,#n]

STI R1,Label ; R1 -> M[M[PC + Offset]]; Three steps!!

Page 26: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-26

LC3 to ARM – Arithmetic/Logic

ADD R1, R2, R3 ; R1 <- R2 + R3ADD R1,R2,R3 ; 32-bit only

ADD R1,R2,#5 ; R1 <- R2 + 5ADD R1,R2,#5 ; 32-bit only, Immediate is 12-bit

AND R1,R2,R3 ; R1 <- R2 & R3 AND R1, R2, R3 ; 32-bit only

AND R1,R2,#1 ; R1 <- Bit 0 of R2 AND R1, R2, #1 ; 32-bit only

NOT R1,R2 ; R1 -> ~(R2)EOR R1,R2,#-1 ; -1 is 0xFFFFFFFF,

; so bit XOR with 1 gives complement

Page 27: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-27

LC3 to ARM – ControlBR Target ; PC <- Address of Target

B TargetBRnzp Target ; PC <- Address of Target

B TargetBRn Target ; PC <- Address of Target if N=1

BMI Target ; Branch on MinusBRz Target ; PC <- Address of Target if Z=1

BEQ TargetBRp Target ; PC <- Address of Target if P=1

No EquivalentBRnp Target ; PC <- Address of Target if Z=0

BNE TargetBRzp Target ; PC <- Address of Target if N=0

BPL Target ; Branch on positive or zero (Plus)BRnz Target ; PC <- Address of Target if P=0

No Equivalent

Page 28: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-28

LC3 to ARM – Subs,TRAP,InterruptJSR Sub ; PC <- Address of Sub, Return address in R7

BL Sub ; PC<-Address of Sub, Ret. Addr in R14 (Link Reg)JSRR R4 ; PC <- R4, Return address in R7

BLX R4 ; PC <-R4, Return address in R14 (Link Reg)RET ; PC <- R7 (Implicit JMP to address in R7)

BX LR ; PC <- R14 (Link Reg)JMP R2 ; PC <- R2

BX R2 ; PC <- R14 (Link Reg)TRAP x25 ; PC <- M[x0025], Return address in R7

SVC #0x25 ; Similar in concept but not implementationRTI ; Pop PC and PSR from Supervisor Stack…

BX LR ; PC <- R14 (Link Reg) [same as RET]

Page 29: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-29

ARM is a Load-Store machineCode to set (to 1) bit 5 of memory address x400FE608

SYSCTL_RCGCGPIO_R EQU 0x400FE608 ; EQU psedo-op allows use of ; symbolic name to represent a constant

LDR R1, =SYSCTL_RCGCGPIO_R ; R1 holds x400FE608 LDR R0, [R1] ; R0 holds contents of ; location x400FE608 ORR R0, R0, #0x20 ; bit5 of R0 is set to 1STR R0, [R1] ; write R0 contents back to ; location x400FE608

Page 30: Chapter 1: Introduction, Embedded Systemsusers.ece.utexas.edu/~valvano/Volume1/L… · PPT file · Web view · 2017-01-17Introduction to Microcontrollers Lecture 1: Introduction,

1-30

SW Development Environment

0x00000142 49120x00000144 68080x00000146 F040000F0x0000014A 6008

Start; direction register LDR R1,=GPIO_PORTD_DIR_R LDR R0,[R1] ORR R0,R0,#0x0F; make PD3-0 output STR R0, [R1]

Source code

Build Target (F7)

DownloadObject code

Processor

Memory

I/O

SimulatedMicrocontroller

Address Data

Editor KeilTM uVision®

Processor

Memory

I/O

RealMicrocontroller

StartDebugSession

StartDebugSession