Duration: 4 days
This training course is ideal for engineers involved in developing software for platforms powered by the Arm® Cortex®-R8 real-time processors.
Hands-on Labs
The learning is reinforced with unique Lab exercises which are run inside a self contained virtual machine environment. This allows the student to experience a real-life and project-ready development environment without the complexity of installing complex software prior to the class. This virtual machine is for the student to keep after the training class, allowing you to further experiment with embedded software development once the class has come to completion.
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