ARM7/ARM9 - Architecture and Assembly Lanaguage Programming - A 5-Day Course Synopsis
ARM7/ARM9 - Architecture and Assembly Lanaguage Programming - A 5-Day Course Synopsis
This is a 5 days hands on course that will cover generic ARM7/ARM9 architectures from the perspective of the embedded systems application developer. The instruction sets of ARM7/ARM9 processors will be covered with practical examples. Knowledge of the architecture and instruction set and of techniques for writing efficient and well structured assembler will be of particular use to those developing low level device drivers, firmware and implementing or porting existing embedded operating systems to the architecture. This knowledge will also be needed by those maintaining libraries coded in optimized assembler such as signal processing libraries or maths libraries. This is a taught course with labs, with a split of about 60% teaching and 40% labs. The course will use representative ARM7 and ARM9 target boards and IAR's EWARM IDE for assembly language programming, simulation and debugging. Note: This course can be tailored to use other target boards. The course can also be adapted to customer needs by including/excluding optional sections. Contact us for further details.
Course Objectives
On completion of the course attendees will understand:
The evolution of ARM7 and ARM9 architectures - their similarities and differences ARM Instruction Set Thumb Instruction Set Structured assembly language programming techniques ARM7 and ARM9 memory systems Exceptions and interrupts and their handling Memory maps, memory protection unit, memory management unit and privileged operation Implementing device drivers for both on chip and off chip peripherals, and making use of Direct Memory Access (DMA)
Intended Audience
This course is aimed at experienced programmers who need to master assembly language programming using the ARM7/ARM9 instruction sets, and to understand the various ARM7/ARM9 architectures.
Contents
Evolution of ARM architectures RISC architecture and design philosophy ARM Processor basic structure and design o Registers o Current Program Status Register o Processing Pipelines o Exceptions, Interrupts and Vector Tables o Core extensions o ARM processor families
Data processing instructions Branch instructions Load-store instructions The Software Interrupt Instruction Program Status Register manipulation instructions loading constants conditional execution ARMv5E extensions
Rationale underlying the Thumb Instruction set Interworking between ARM and Thumb code Thumb branch instructions Thumb data processing instructions Thumb single-register load-store instructions Thumb multiple-register load-store instructions Thumb stack instructions Thumb software interrupt instruction
Basics of assembler programming optimization strategies and techniques o profiling and cycle counting
o o o o o o
register allocation instruction scheduling bit manipulation conditional execution optimizing multiway branches dealing with unaligned data
GPIO pins and their configuration lighting an LED - the "Hello World of Embedded Programming" Flashing an LED using software delays Detecting a button press by polling Detecting a button press via an external interrupt Flashing an LED using a timer and polling Flashing an LED using a timer and timer interrupt handling Storing text data in memory Programming UARTs and RS232 communication with a PC
Double precision integer multiplication Integer normalization - counting leading zeros Division Square roots Floating point calculations Transcendental functions - log, exp, sin, cos bit reversal saturated and rounded arithmetic Pseudo random number generation
Overview of Digital Signal Processing [OPTIONAL SECTION] Digital signal processing overview
Doing DSP on an ARM processor Overview of FIR filters and their implementation in ARM assembler Overview of IIR filters and their implementation in ARM assembler Overview of the Discrete Fourier Transform and its implementation in ARM assembler
Bootloader concept Design and implementation of a simple bootloader basic operating system concepts Design and implementation of a simple operating system
Cache architecture and usage Memory protection unit - basic concepts and uses Memory management unit - basic concepts and uses