使用qemu虚拟arm硬件比较合适。
步骤如下:
- 安装qemu
bash
apt install qemu-system
- 安装aarch64-none-elf-gcc
下载后无需编译。下载完虎,执行如下命令设置编译环境:
bash
vim ~/.bashrc
export PATH=$PATH:/home/ljg/aarch/arm-gnu-toolchain-13.2.Rel1-x86_64-aarch64-none-elf/aarch64-none-elf/bin
source ~/.bashrc
- 编译uart.c源文件
代码:
c
void outputstr(char * str){
int * base = (int*)0x9000000;
while(*str){
*base = (int)*str;
str++;
}
}
int main(){
outputstr("hello world!\r\n");
return 0x12345678;
}
~

命令:
bash
aarch64-none-elf-gcc -I -include -c uart.c -o uart.o
- 编写start.s汇编源文件
代码:
bash
.global _start
_start:
ldr x30,=stack_top
mov sp,x30
bl main
b .
~

命令:
bash
aarch64-none-elf-as -c start.s -o start.o
- 链接
链接脚本文件:
bash
ENTRY(_start)
SECTIONS
{
. = 0x40000000;
.startup . : {start.o(.text)}
.text :{*(.text)}
.data : {*(.data)}
.bss : {*(.bss COMMON)}
. = ALIGN(8);
. = .+0x1000;
stack_top = .;
}

命令:
bash
aarch64-none-elf-ld -Tlink.ld uart.o start.o -o hello.elf
- 制作镜像文件。
bash
aarch64-none-elf-objcopy -O binary hello.elf hello.bin
- 运行测试
bash
qemu-system-aarch64 -M virt -cpu cortex-a710 -monitor none -kernel hello.bin
或者:
bash
qemu-system-aarch64 -M virt -cpu cortex-a710 -monitor none -nographic -serial stdio -kernel hello.bin


参考链接: