This course is aimed at software developers writing low level and bare-metal code for Armv7-R processors, concentrating on the Cortex-R8 processor. Operating system developers who need to understand the details of the Arm v7-R processors' architecture.
Delegates should have some understanding of embedded programming in C and assembler. Knowledge of other processors is a benefit but is not strictly required for attending this class.
This class uses training materials developed by Arm® and is complemented by Bicard' own lecture and laboratory material. This offers the students a well rounded and practical view of the topics covering both the Processor's features along with how to program it.
Architecture versions • Registers and instruction sets • Exception model • Memory model • Coprocessors • Architecture extensions • The Future
Software's Guide to Cortex-R8Cortex-R8 • MPCore • Overview • Operational modes • Level 1 Memory system • Level 2 Interface • Multiprocessing features
ARMV7-A/R ISA OverviewLoad/Store • Data Processing • Flow Control • Misc • DSP
Exception HandlingIntroduction • Interrupts • Abort Handlers • SVC Handlers • Undef • Handlers • Reset Handlers
Caches and TCMsCache basics • Caches on ARM processors • Tightly Coupled Memory (TCM) • Optimization considerations
SynchronizationIntroduction to atomicity • Load exclusive and store exclusive instructions • Code examples • Multi-core, coherency • Exclusive reservation granule
Using the Memory Protection UnitTypes & Attributes • Memory Protection Unit (MPU)
Understanding BarriersData barriers • Instruction barriers
Power Management for Cortex-A/R CoresProcessor Power Consumption • Power Modes • NEON and MPCore
Embedded Software DevelopmentSemihosting / retargeting • Mixing C/C++ and assembly • Application Startup • Tailoring image memory map to your target • Accessing memory mapped peripherals • Additional considerations
GICv1 & GICv2 ProgrammingDistributor and CPU Interfaces • How to enable and configure interrupts • How to handle interrupts • How to send software interrupts • Security Extensions
DebugInvasive Debug • Non-Invasive Debug • PMU • Trace
GNU Compiler Hints and TipsBasic Compilation • Compiler Optimizations • Coding Considerations • Local and Global Data Issues
GNU Linker Hints and TipsLinking Basics • System and User Libraries • Linker Script • Veneer and Interworking • Linker Optimizations and Diagnostics • GNU Embedded Development Libraries
The learning is reinforced with practical exercises using the GCC software development tool-chain and covers advanced topics such as Arm/Thumb2 assembly, writing low level device drivers, exception handlers and linker scripts.
Complete an enquiry form and a Bicard representative will get back to you.
Enquiry Form