Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。
步骤如下:
- 安装qemu
apt install qemu-system
- 安装aarch64-none-elf-gcc
需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-elf.tar.xz?rev=a05df3001fa34105838e6fba79ee1b23&hash=DCB97F9E407955B162E4652F4E78B6CCDF75E4FF
下载后无需编译。下载完虎,执行如下命令设置编译环境:
vim ~/.bashrcexport PATH=$PATH:/home/ljg/aarch/arm-gnu-toolchain-13.2.Rel1-x86_64-aarch64-none-elf/aarch64-none-elf/binsource ~/.bashrc
- 编译uart.c源文件
代码:
void outputstr(char * str){int * base = (int*)0x9000000;while(*str){*base = (int)*str;str++;}
}int main(){outputstr("hello world!\r\n");return 0x12345678;
}
~
命令:
aarch64-none-elf-gcc -I -include -c uart.c -o uart.o
- 编写start.s汇编源文件
代码:
.global _start_start:
ldr x30,=stack_top
mov sp,x30
bl main
b .
~
命令:
aarch64-none-elf-as -c start.s -o start.o
- 链接
链接脚本文件:
ENTRY(_start)
SECTIONS
{. = 0x40000000;.startup . : {start.o(.text)}.text :{*(.text)}.data : {*(.data)}.bss : {*(.bss COMMON)}. = ALIGN(8);. = .+0x1000;stack_top = .;
}
命令:
aarch64-none-elf-ld -Tlink.ld uart.o start.o -o hello.elf
- 制作镜像文件。
aarch64-none-elf-objcopy -O binary hello.elf hello.bin
- 运行测试
qemu-system-aarch64 -M virt -cpu cortex-a710 -monitor none -kernel hello.bin
或者:
qemu-system-aarch64 -M virt -cpu cortex-a710 -monitor none -nographic -serial stdio -kernel hello.bin
参考链接:
- https://blog.csdn.net/jingyu_1/article/details/135631512
- https://zhuanlan.zhihu.com/p/16952747762
- https://stdrc.cc/post/2021/02/23/u-boot-qemu-virt/
- https://zhuanlan.zhihu.com/p/708166648
- https://www.qemu.org/docs/master/system/arm/virt.html