ARM Bare Metal Programming


Details

Objective

Provide a better insight into how to write startup code and linker scripts for ARM based bare metal systems.

Total Duration

10h

Status

Available

Schedule

Session Hands-on

Setup and Introduction

1h

Device Interfacing

1h

ARM Basics

1h

ARM Instruction Set

1h

ARM Assembler

1h

Role of Linker

1h

Linker Scripts

2h

C Startup Code

1h

Using C Library - printf, malloc

1h

Detailed Syllabus

Device Interfacing

  • Memory Interfacing

  • Device Interfacing

  • Memory Mapped IO

  • Controller based IO

ARM Basics

  • ARM Architecture

  • Register set

  • Exceptions & Interrupts

  • Processor Modes

  • ARM Programmer’s Model

  • ARM Processor Families

ARM Instruction Set

  • Data Processing Instructions

  • Branch Instructions

  • Load Store Instructions

  • Conditional Execution

ARM Assembler

  • GNU Assembler

  • Assembler Directives

    • .byte

    • .align

    • .equ

    • .asciz

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

Using C Library

  • newlib & POSIX

  • Enabling printf()

  • Enabling malloc()