当前位置: 首页 > news >正文

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。

步骤如下:

  1. 安装qemu
apt install qemu-system
  1. 安装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
  1. 编译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
  1. 编写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
  1. 链接

链接脚本文件:


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
  1. 制作镜像文件。

aarch64-none-elf-objcopy -O binary hello.elf hello.bin
  1. 运行测试
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

在这里插入图片描述

在这里插入图片描述

参考链接:

  1. https://blog.csdn.net/jingyu_1/article/details/135631512
  2. https://zhuanlan.zhihu.com/p/16952747762
  3. https://stdrc.cc/post/2021/02/23/u-boot-qemu-virt/
  4. https://zhuanlan.zhihu.com/p/708166648
  5. https://www.qemu.org/docs/master/system/arm/virt.html

相关文章:

  • PDF文件如何转换格式?简单教程来了
  • 【知识扫盲】如何由inq,ouq和totaltime计算tokens/s
  • Java项目中常用的中间件及其高频问题避坑
  • Day14
  • 【WebSocket】SpringBoot项目中使用WebSocket
  • 读《创新者的窘境》二分 - 破坏性创新与延续性创新
  • 开源 vGPU 方案:HAMi,实现细粒度 GPU 切分
  • OpenAI对抗法庭命令:捍卫ChatGPT用户隐私之战
  • 开源投屏工具Escrcpy的使用教程
  • NLP学习路线图(二十八):BERT及其变体
  • GWO-LSSVM-Adaboost灰狼算法GWO优化最小二乘支持向量机LSSVM分类预测!
  • C++.OpenGL (9/64)复习(Review)
  • 【大厂机试题解法笔记】区间交集
  • 解决获取视频第一帧黑屏问题
  • [蓝桥杯]轨道炮
  • ReadWriteLock(读写锁)和 StampedLock
  • 负载均衡器》》
  • 力扣刷题(第四十九天)
  • 小黑一层层削苹果皮式大模型应用探索:langchain中智能体思考和执行工具的demo
  • sql_mode
  • 丰胸建设网站/朋友圈广告怎么投放
  • z怎么做优惠券网站/国家重大新闻
  • 足球外围网站怎么做/网络网站推广优化
  • 成都成华区网站建设/视频推广一条多少钱
  • 网易做网站/天津做优化好的公司
  • 优化企业网站/厦门seo排名公司