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

qemu-基础篇(二)——裸机 arm 程序环境搭建

文章目录

    • 测试代码
    • makefile
    • 运行 qemu
    • 调试 qemu
    • GDB 常用命令

裸机篇系列文章主要用于熟悉 arm 汇编及处理器结构

测试代码

_start:ldr r0, =0X020C4068     /* CCGR0 */ldr r1, =0XFFFFFFFF  str r1, [r0]ldr r0, =0X020C406C     /* CCGR1 */str r1, [r0]ldr r0, =0X020C4070     /* CCGR2 */str r1, [r0]ldr r0, =0X020C4074     /* CCGR3 */str r1, [r0]ldr r0, =0X020C4078     /* CCGR4 */str r1, [r0]ldr r0, =0X020C407C     /* CCGR5 */str r1, [r0]ldr r0, =0X020C4080     /* CCGR6 */str r1, [r0]ldr r0, =0X020E0068ldr r1, =0X5str r1,[r0]ldr r0, =0X020E02F4ldr r1, =0X10B0str r1,[r0]ldr r0, =0X0209C000 ldr r1, =0str r1,[r0]loop:b loop 

makefile

test.bin:test.sarm-none-linux-gnueabihf-gcc -g -c test.s -o test.oarm-none-linux-gnueabihf-ld -Ttext 0X87800000 test.o -o test.elfarm-none-linux-gnueabihf-objcopy -O binary -S -g test.elf test.binarm-none-linux-gnueabihf-objdump -D test.elf > test.dis
clean:rm -rf *.o test.bin test.elf test.dis

运行 qemu

qemu-system-arm -machine mcimx6ul-evk -kernel test.elf -S -s

-s :监听在 gdb 1234 端口
-S :表示启动后就挂起,等待 gdb 连接
-kernel 指定启用的内核镜像

调试 qemu

安装调试器

sudp apt-get install gdb-multiarch 

启动调试器

gdb-multiarch --tui test.elf 
  • target remote localhost:1234

连接到刚才启动的 qemu 进程上,然后开始调试,注意qemu此时会断点在启动阶段,必须要用gdb的continue(c)命令使其继续执行

GDB 常用命令

  • continue/c 程序继续运行,到下一断点处暂停
  • run/r 运行
  • step/c 单步运行
  • info reg 查看寄存器
  • break/b + 标号/行号 设置端点
  • info break/b 查看端点
http://www.lryc.cn/news/63786.html

相关文章:

  • JSP+SQL基于JSP的学生信息管理系统(源代码+论文+答辩PPT)
  • docker上部署程序后无法连接数据库的问题
  • Ucore lab4
  • AI失业潮来袭,某些部门裁员过半
  • git 撤销add/commit,以及更换源命令
  • 3dMax需要什么样的硬件环境才能更好的工作?
  • python-使用Qchart总结4-绘制多层柱状图
  • Java学习笔记-02
  • 中通快递财报预测:中通快递2023年收入和利润将大幅下降
  • Javaweb | 状态管理:Session、Cookie
  • Redux
  • Nacos配置中心的详解与搭建
  • Java入门教程||Java 封装||Java 接口
  • 微软开源AI修图工具让老照片重现生机
  • 什么是 Docker?它能用来做什么?
  • 生成器的创建方式(py编程)
  • 百胜中国:未来将实现强劲增长
  • 【Celery】任务Failure或一直超时Pending
  • 【严重】VMware Aria Operations for Logs v8.10.2 存在反序列化漏洞(CVE-2023-20864)
  • java实现乘法的方法
  • SSD目标检测
  • SpringBoot项目结构及依赖技术栈
  • crash怎么分析kdump core文件
  • 微内核与宏内核的区别和联系
  • 都什么年代了,还在用Excel和ACCESS做应用系统?快来学Eversheet
  • 【JAVAEE】JAVA数据库连接(JDBC)
  • Nestjs全网最佳翻译-概况-守卫-Guards
  • 【软考网络管理员】2023年软考网管初级常见知识考点(3)- 网络体系结构
  • javascript正则表达式大括号、中括号、小括号的作用以及应用场景
  • 5年测试老鸟总结,自动化测试的实施到落地,看这一篇足够...