§ Сборка кода makefile
Готовый код
здесь.
1all:
2 # Компиляция
3 arm-none-eabi-as entry.s -o entry.o
4 arm-none-eabi-gcc -nostdlib main.cc -Os -c -o main.o
5 arm-none-eabi-ld -T linker.ld entry.o main.o -o main.elf
6 # Выгрузка в бинарный
7 arm-none-eabi-objcopy main.elf -O binary -R .note -R .note.gnu.build-id -R .comment -S main
8 # Показать дамп для отладки
9 arm-none-eabi-objdump -S main.elf > main.lst
10clean:
11 rm -f *.o *.elf *.lst main
§ Файл entry.s
1.text
2.global _start
3.extern main
4_start:
5
6 ldr sp, =0x8000
7 b main
§ linker.ld
1MEMORY
2{
3 ram : ORIGIN = 0x0000, LENGTH = 0x100000
4}
5
6SECTIONS
7{
8 .text : { *(.text*) } > ram
9 .bss : { *(.bss*) } > ram
10}
§ Файл main.cc
1void main() {
2
3 char* vm = (char*) 0x1000;
4 for (int i = 0; i < 256; i++)
5 vm[i] = i;
6
7 for (;;);
8}