Consultancy and Total Solutions Training Provider for Embedded Systems, Electronics and Electrical Engineering, Programming, Computing, Operations, ISO9000, ISO14000 and Management.

Bridging the Gap

Training Courses

Fundamentals of Bare-Metal Code Development with the Altera Cyclone V FPGAs

Course id: 0053


System-on-Chip (SoC) -- which integrates reconfigurable hardware and software -- is integral to the development of miniature, high speed systems. The integration of the ubiquitous ARM processor and FPGA on the single chip has made ultra high speed computation feasible for many space and power constrained systems. SoC development has a steep learning curve fraught with numerous obstacles and caveats due to the complex nature of having reconfigurable hardware interact with software. This intensive course covers the fundamentals of SoC development from the software perspective of bare-metal implementations on the ARM Cortex-A processor. Participants will have practical experiences using the ARM-NONE-EABI toolset.

What you will learn

This course concentrates on the theoretical and practical knowledge to allow participants to achieve the following learning outcomes. Upon completing the course, participants would be able to:
  • Understand the synergy between the FPGA and the ARM processor
  • Use the open source ARM-NONE-EABI toolset
  • Know the compilation, assembling and linking process
  • Know C constructs crucial for embedded development (refresher)
  • Develop rudimentary drivers for interfacing memory mapped peripherals

Who should attend

This course is particularly suited for engineers who are planning/starting to develop program code for the Altera Cyclone V platform.


Participants are required to know how to program in C, and should have a background in electronics and embedded systems.

Course methodology

This course is presented in a workshop style with example-led lectures interlaced with demonstrations and hands-on practical for maximum understanding.

Course duration

3 days.

Course structure

  • Introduction
    • Overview of the ARM Cortex-A processor
    • Getting started with the ARM-NONE-EABI environment
    • Hands-on practical 1: Getting Started with ARM-NONE-EABI
  • The Compilation Process
    • Code compilation and assembling
    • Understanding the linking process
    • Hands-on practical 2: Investigating Compilation and Linking
  • Booting Code
    • Booting process
    • Controlling the ARM bootloader
    • Hands-on practical 3: Booting Process and the Bootloader
    • Code partitioning on removable storage
  • Data types
    • char, int, void, storage classes, scope
  • Typecasting
    • Explicit typecasting methods, loss of precision/signedness, integer promotion, POSIX types
    • Hands-on practical 4: Data types and Typecasting
  • Operators
    • Bitwise, increment, decrement, precedence and associativity, short circuit expressions
    • Hands-on practical 5: Operators
  • Arrays
    • Declaration, storage, access
    • Hands-on practical 6: Arrays
  • Pointers
    • Referencing, dereferencing, storage, void pointer, parameter passing
    • Hands-on practical 7: Pointers
  • Accessing Special Function Registers
    • Accessing specific memory locations
    • Hands-on practical 8: Enumerating Special Function Registers
  • Structures and Unions
    • Structures: storage, declaration, access
    • Unions: storage, dangers, usage
    • Hands-on practical 9: Complex SFR Enumeration
  • Fundamentals of Driver Development
    • What is a driver
    • Requirements for a simple driver
    • Hands-on practical 10: Bare-metal Driver Development

Course Schedule





News on ProvenPac

  ProvenPac Sdn. Bhd.
  C-4-3 Gembira Park,
  Jalan Riang, 58200
  Kuala Lumpur, Malaysia

  Tel: +603 03 5889 5889

No public course
currently scheduled.


Please inform me when
this course is scheduled.


Please contact me to
arrange in-house training.