It covers the same scope and content as a scheduled in-person class and delivers comparable learning outcomes. Please note for this course, daily sessions are up to 7 hours including breaks.
This course covers software aspects of designing with an Arm® Cortex®-A35/A53/A57/A72 MPCore based device, highlighting the core architecture details and the programmer's model. Topics include the Arm AArch64 exceptions model, details of the available caching schemes and coherency management, memory management and the Arm memory model. Additionally the sections on the v8 architecture instruction set and steps involved in initializing an MPCore system deliver the essential knowledge required for programming and debugging a Cortex-A35/A53/A57/A7 MPCore processor.
Hands-on Labs
The learning is reinforced with unique Lab exercises using the Armv8-A 64 bit QEMU virtual platform. The laboratories 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 its completion.
Delegates should have some knowledge of embedded systems and a basic understanding of embedded programming in C and assembler. Knowledge of earlier Arm architectures is an advantage but not required.
C programming for Embedded Systems training is also available from Bicard.
A carefully crafted combination of content from Arm and Doulos will be used to provide exhaustive coverage of all of the essential topics required to achieve the learning objectives.
Training material includes fully indexed course notes creating a complete reference manual.
Privilege levels • AArch64 registers • A64 Instruction Set • AArch64 Exception Model • AArch64 Memory Model
Software Engineer's Cortex-A35/53/57/72Core pipelines • Configuration options • Branch prediction • Cache overview • Data cache coherency • Memory management • Micro-architectural features • Interrupts and bus interfaces • Debug and timers • Big-little
A64 ISA OverviewRegisters • Loads and stores • Data processing and control flow • Scalar floating-point and SIMD
SynchronizationSynchronization in ARMv8-A • Local and Global Exclusive Monitors
AArch64 Exception ModelThe AArch64 exception model • Interrupts • Synchronous exceptions • SError • exceptions • Exceptions in EL2 and EL3
BootingBooting an ARMv8-A processor in AArch64 • Booting multi-core and multi-processor systems • Real-world booting
Caches and Branch PredictionGeneral Cache Information • Cache Attributes • Cache Maintenance Operations • Cache Discovery
Memory ManagementMemory Management theory • Stage 1 Translations at EL1/0 • Translations at EL2 / EL3 • TLB maintenance
Memory ModelTypes • Attributes • Alignment and endianness • Tagged pointers
BarriersData barriers • Instruction barriers
ARMv8-A OS Support FeaturesContext Switching • Modifying Translation Tables • Privilege Escalation Protections • Timers
Secure EnvironmentsWhy do we need a Secure environment? • Software stack • System architecture
Cache CoherencyIntroduction to coherency • Coherency details - multi-core processors • Coherency details - multi-processor systems
VirtualizationWhat is virtualization? • ARM virtualization support • Memory management • Exception handling
Cortex-A Power ManagementARM core power modes • Power control • ARM multi-core processor power modes • Power state coordination
Embedded Software DevelopmentSemihosting / retargeting • Mixing C/C++ and assembly • Application Startup • Tailoring image memory map to your target • Accessing memory mapped peripherals • Additional considerations
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
ARMv8-A DebugIntroduction to Debug • Types of Debug • Debug Facilities • External Debug • Self-hosted Debug • CoreSight • Debug Features • Trace
NEON Benchmarking and Performance AnalysisIntroduction • Performance Monitoring Hardware: PMU • Cycle Accurate Trace: Trace • Macrocells • Streamline Performance Analysis
Appendix Software Engineer's Guide to System FabricInterrupt Controller • System MMU • TrustZone Address Space Controller • Generic Timer
The learning is reinforced with unique Lab Exercises using an Armv8-A 64 bit instruction set simulator and covering assembly programming, exception handling and setting up the caches and MMU.
Complete an enquiry form and a Bicard representative will get back to you.
Enquiry Form