§ Сборка кода makefile

Готовый код здесь.
all:
	# Компиляция
	arm-none-eabi-as entry.s -o entry.o
	arm-none-eabi-gcc -nostdlib main.cc -Os -c -o main.o
	arm-none-eabi-ld -T linker.ld entry.o main.o -o main.elf
	# Выгрузка в бинарный
	arm-none-eabi-objcopy main.elf -O binary -R .note -R .note.gnu.build-id -R .comment -S main
	# Показать дамп для отладки
	arm-none-eabi-objdump -S main.elf > main.lst
clean:
	rm -f *.o *.elf *.lst main

§ Файл entry.s

.text
.global _start
.extern main
_start:

    ldr sp, =0x8000
    b   main

§ linker.ld

MEMORY
{
    ram : ORIGIN = 0x0000, LENGTH = 0x100000
}

SECTIONS
{
    .text : { *(.text*) } > ram
    .bss  : { *(.bss*)  } > ram
}

§ Файл main.cc

void main() {

    char* vm = (char*) 0x1000;
    for (int i = 0; i < 256; i++)
        vm[i] = i;

    for (;;);
}