27
Programming & Development of Mobile & Embedded Systems Lin Zhong ELEC424, Fall 2010

Programming & Development of Mobile & Embedded Systemsmobile/2010elec424/lectures/9-programming.pdf · Programming & Development of Mobile & Embedded Systems Lin Zhong ELEC424, Fall

  • Upload
    lyhanh

  • View
    224

  • Download
    0

Embed Size (px)

Citation preview

Programming & Development of Mobile & Embedded Systems

Lin ZhongELEC424, Fall 2010

Outline

• Programming basics• Programming MSP430• Programming Windows Mobile devices

2

Programming basics

• How programmable systems work

3

executables

Execution unit

Instruction fetching

Non-volatile storage Processing

Programming is about changing the content of non-volatile storage•PC: Hard drive•Mobile Devices: Flash ROM•MSP430: Flash ROM

Many input channels can work•PC: DVD/CD drive M, USB drive, Ethernet, Wi-Fi•Mobile Devices: USB port, Bluetooth, Cellular, Wi-Fi•MSP430: Any input (even analog!!!!)

Programming basics (Contd.)

• How executables are generated?

4

High-level language•C/C++/C#/Java•Matlab/Labview•Perl

Intermediate format•Assembly•Java byte code

Machine code101010100

Compile Compile

Machine code101010100

Machine code101010100

Machine code101010100

Link

Compile & link can be done at run-time• Java & C#: second stage compilation• Perl/BASIC (interpretive languages)

Cross platform development

• Cross compile & Cross link– Produce the machine code for a foreign platform– PCMobile devices

• X86 processorsARM processors– PCOrbit sensors

• X86 processorsMSP430• Cross development tool chains

– Linux GNU ARM tool chains– Integrated development environment (IDE)

• Microsoft Visual Studio• IAR Embedded Workbench

5

IDE concepts

• Projects– Organized source files– Properties of target platform

• Run-time debug– Debug/release modes

• Emulators– Development without a physical device

6

Programming MSP430

7

JTAG

JTAG

USB cable

IAR Embedded Workbench

• C and C++• Software emulator • Free evaluation version

8

IAR Embedded Workbench

• Project options

9

Run-time debugging

10

Getting help

11

Memory space

• Unified address space

• No “cache”

12

Tilt 2 vs. PC

13

CPUCache

Registers

Main memory

Hard disk

File system cache

Special function registers (SFRs)

• 16 registers (R0-R15)• Program counter (PC)/R0

– Pointer to the next instruction

14

Stack pointer (SP/R1)

• Store the return addresses of subroutine calls and interrupts

• Stack– Last-In, First Out– PUSH– POP– Automatic allocated memory in C

• You don’t need to worry about it– Take care by the compiler– Subroutine calls– Interrupt handlers

15

Status register (SR/R2)

• Can be read and written

16

Clock

Load-store architecture

17

MEM/Cache

Register file

Execution unit

Load/store

a.k.a. RISC architecture

Interrupt-driven programming

18

TimerA() USARTRX()

Interrupt handlers

System idle

Interrupt Interrupt

Start

Initialization

• Clock• I/O pins• Interrupt• Periperals

Initialization

19

Interrupt properties

• Maskable vs. non-maskable

• Nested

• Priority

20

IAR EWR interrupt

• Enable interrupt

21

IAR EWR interrupt

• Interrupt handler is a special subroutine

22

A problem

– A[0]=1;– B[0]=1;

• enable interrupt there• while () {

– if (A[0]!=B[0]) exit;– else continue ;

• }

23

Interrupt_handler() {A[0]=2;B[0]=2;

}

A problem

• A[0]=1;• B[0]=1;• while () {

– if (A[0]!=B[0]) exit;– else continue ;

• }

24

Interrupt_handler() {A[0]=2;B[0]=2;

}

LD R13, (A[0]);LD R14, (B[0]) ;CMP R13, R14;JEQ EXIT

Critical section

• A[0]=1;• B[0]=1;• while () {

– if (A[0]!=B[0]) exit;– else continue ;

• }

25

Interrupt_handler() {A[0]=2;B[0]=2;

}

LD R13, (A[0]);LD R14, (B[0]) ;CMP R13, R14;JEQ EXIT;…….

Section of code that access ashared resource that must not beconcurrently accessed by morethan one thread of execution

Atomic operation

• A set of operations that appears to be one to the system– System state change due to the operations invisible until

all the operations are successful– If any of the operations fails, the entire set fails; and no

change to the system state

• Examples– An assembly instruction– Interrupt-disabled

26

When do we need an OS?

27