programming & development of mobile & embedded...
TRANSCRIPT
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
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
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
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