目的:搭建一个armv8的测试环境,跑自己的bootloader(类似于ATF + uboot)
问题:如何模拟armv8开发板,如何让自己的BL能被load,如何使自己的BL能有输出
第一部分: 使用QEMU 启动自定义BIOS方法
使用命令:
qemu-system-aarch64 -machine virt,secure=on -cpu cortex-a57 -nographic -m 1057 -smp 2 -bios filename
命令解释:
qemu-system-aarch64:armv8 QEMU模拟工具
-machine virt,secure=on: 设备类型为虚拟,目前不知道为什么“secure=on”必须设置,否则我的测试平台测试中一直没有输出
-cpu cortex-a57: 模拟a57
-nographic: 不支持graphic
-m 1057:内存大小
-smp 2: CPU 个数
-bios filename: 自己需要测试的bios bin file
注意事项:
测试环境:
Linux jun-VirtualBox 4.15.0-47-generic #50~16.04.1-Ubuntu SMP Fri Mar 15 16:06:21 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
基于ATF改写的bare metal 测试代码演示
qemu-system-aarch64 -machine virt,secure=on -cpu cortex-a57 -nographic -m 1057 -smp 2 -bios ~/code/mytest/bl1.bin
NOTICE: Booting Trusted Firmware
NOTICE: BL1: this is my own BIOS test
编译基本方法
1. atf: make plat=qemu bl1
2. qemu:参见网上的方法,我使用的是optee整体来编译
参见:Optee 官网
https://github.com/OP-TEE/manifest
make -f toolchain.mk toochains (下载arm gcc编译器总是不成功,自己从linaro官网上下的 )
make -f qemu_v8.mk all
make -f qemu_v8.mk run
第二部分: 使用QEMU 启动kernel方法
使用命令:
qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -m 2048 -smp 2 -kernel Image -initrd rootfs_my.cpio.gz -append 'rdinit=/stest console=ttyAMA0 root=/dev/ram'
说明:
参考:
模拟arm
https://blog.csdn.net/member82/article/details/80880182
从零使用qemu模拟器搭建arm运行环境
https://blog.csdn.net/member82/article/details/80864238
https://blog.csdn.net/dddddttttt/article/details/80792762 (使用Qemu运行ARMv8的OP-TEE)
模拟arm64
https://blog.csdn.net/snail_coder/article/details/82935081
(qemu模拟arm64一直卡住不动)
https://blog.csdn.net/weixin_43572000/article/details/85267499
资源:
qemu下载网页:https://www.qemu.org/download/