ARM Bare Metal Programming, Workshop

Zilogic is organizing a workshop on the ARM Bare Metal Programming. Writing startup code and linker scripts has been a dark art, mastered only by a few people. Lack of documentation has only aggravated the problem. Through this training programme we hope to unravel the mysteries behind these concepts, and help people join the elite few.

For firmware and RTOS developers, this knowledge will be useful for porting their software to different microcontroller. It will be also be useful for people who would like to delve into bootloader development and development of early boot code of the kernel.

Sold Out! But …

If you could not make it to this event, you can register here to get notifications about workshops that we conduct in the future. You can also subscribe to our Twitter page for updates.


The workshop venue address is provided below

FutureTech Corporate Services
MF-14, CIPET Hostel Road,
SIDCO Industrial Estate,
Ekkaduthangal, Guindy,

Location of the venue on Google maps: here

Date and Time

  • May 21, 9:00 AM to 6:00 PM

  • May 22, 9:00 AM to 12:00 PM

Workshop Ticket

This is a paid workshop, and the workshop ticket price starts from Rs. 2000 (inclusive of lunch).


  • Should be familiar with C programming fundamentals.

  • Should be familiar with microprocessors.

  • Should be familiar with Linux command line.

Hardware / Software Requirements

  • Laptop with either Windows / Linux

  • Qemu (>= 1.5) for Target Board Emulation

  • VirtualBox (>= 4.1.18) (Disk image will be provided at the venue)


Day 1

ARM Basics

  • ARM Architecture

  • Register set

  • Exceptions & Interrupts

  • Processor Modes

  • ARM Programmer’s Model

  • ARM Processor Families

Tea Break

ARM Instruction Set

  • Data Processing Instructions

  • Branch Instructions

  • Load Store Instructions

  • Conditional Execution

ARM Assembler

  • GNU Assembler

  • Assembler Directives

    • .byte

    • .align

    • .equ

    • .asciz

Lunch Break

Role of Linker

  • Symbol Resolution

  • Relocation

    • Section Merging

    • Section Placement

Linker Scripts and Loading

  • Linker Sections

  • Linker Script Syntax

  • Data in RAM

  • Load Address

  • Copying Data to RAM

  • Exception Handling

C Startup Code

  • Stack

  • Global Variables

  • Read-only Data

  • C Startup Code

Day 2

Devices Intro

  • Memory Interfacing

  • Device Interfacing

  • Memory Mapped IO

  • Controller based IO

Using C Library

  • newlib & POSIX

  • Enabling printf()

  • Enabling malloc()