qemu-基础篇——arm 裸机调试环境搭建

这篇具有很好参考价值的文章主要介绍了qemu-基础篇——arm 裸机调试环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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

env

本系列使用 mcimx6ul-evk

测试代码

.global _start

_start:
    ldr r0, =0X020C4068   /* CCM_CCGR0 */
    ldr r1, =0XFFFFFFFF
    str r1, [r0]

    ldr r0, =0X020C406C  /* CCM_CCGR1 */
    str r1, [r0]

    ldr r0, =0X020C4070  /* CCM_CCGR2 */
    str r1, [r0]

    ldr r0, =0X020C4074  /* CCM_CCGR3 */
    str r1, [r0]

    ldr r0, =0X020C4078  /* CCM_CCGR4 */
    str r1, [r0]

    ldr r0, =0X020C407C  /* CCM_CCGR5 */
    str r1, [r0]

    ldr r0, =0X020C4080  /* CCM_CCGR6 */
    str r1, [r0]

    ldr r0, =0X020E0068  /* IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 */
    ldr r1, =0X5
    str r1,[r0]

    ldr r0, =0X020E02F4  /* IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03 */
    ldr r1, =0X10B0
    str r1,[r0]

    ldr r0, =0X0209C000 /* GPIO1_DR */
    ldr r1, =0
    str r1,[r0]

loop:
    b loop

makefile

ARCH ?= arm
CROSS_COMPILE ?= arm-none-linux-gnueabihf-

test.bin:test.s
	$(CROSS_COMPILE)gcc -g -c test.s -o test.o
	$(CROSS_COMPILE)ld -Ttext 0x80000000 test.o -o test.elf
	$(CROSS_COMPILE)objcopy -O binary -S -g test.elf test.bin
	$(CROSS_COMPILE)objdump -D test.elf > test.dis
clean:
	rm -rf *.o test.bin test.elf test.dis

  • mcimx6ul-evk 0x80000000-0xFFFFFFFF 2048MB 空间为 DDR 地址,所以将程序链接到 0x80000000
  • 通过-Ttext 选项,可以指定链接地址

运行 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)命令使其继续执行文章来源地址https://www.toymoban.com/news/detail-811426.html

GDB 常用命令

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

到了这里,关于qemu-基础篇——arm 裸机调试环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MINIX 3 系统之搭建QEMU ARM运行环境

      MINIX 3是一个比较完善的微内核架构的类unix系统。如果想要了解和学习操作系统,Linux肯定是首选,而且几乎所学即所用。但是,如今的Linux已经复杂到一定层度,即便有丰富的视频和书籍作为参考,想通过Linux以窥操作系统之精髓,继而自己实现一个系统,个人认为不是

    2024年02月02日
    浏览(42)
  • 手把手教你搭建ARM32 QEMU环境

    我们知道嵌入式开发调试就要和各种硬件打交道,所以学习就要专门购买各种开发版,浪费资金,开会演示效果还需要携带一大串的板子和电线,不胜其烦。然而Qemu的使用可以避免频繁在开发板上烧写版本,如果进行的调试工作与外设无关,仅仅是内核方面的调试,Qemu模拟

    2024年02月19日
    浏览(59)
  • 【ARM架构】ARMv8-A 系统中的安全架构概述

    一个安全或可信的操作系统保护着系统中敏感的信息,例如,可以保护用户存储的密码,信用卡等认证信息免受攻击。 安全由以下原则定义: 保密性:保护设备上的敏感信息,防止未经授权的访问。有以下几种方法可以做到,比如密码和加密密钥。 完整性:使用公钥来保护

    2024年02月21日
    浏览(48)
  • ubuntu22.04 x86环境上使用QEMU搭建arm虚拟机

    apt-get -y install qemu apt-get -y install bridge-utils apt-get -y install vnc4server apt-get -y install qemu-kvm apt install -y qemu-system-arm apt-get -y install libvirt0 apt-get -y install libvirt-daemon apt-get -y install libvirt-daemon-system 安装完成后检查: virsh version ls /usr/bin/|grep qemu wget http://releases.linaro.org/components/kernel/

    2024年02月07日
    浏览(90)
  • 【ARM Cortex-M 系列 3 番外篇 -- ARMv6, ARMv7, ARMv8, ARMv9 架构差异及精简指令集 与 复杂指令集 介绍】

    上篇文章:ARM Cortex-M 系列 2.1 – RT-Thread Cortex-M7 异常处理及 hardfault 处理分析 ARM架构是一种处理器架构,全称为高级精简指令集计算机(Advanced RISC Machine)。它是英国ARM公司设计的一种精简指令集( RISC )处理器架构,和复杂指令集( CISC )处理器架构相对。 CISC 与 RISC 差异

    2024年02月08日
    浏览(47)
  • ARMv8平台上安装QT开发环境

    vi ~/.bashrc,加入以下配置并保存 重新source环境 点击QT5图标无法启动 vi ~/.profile,加入以下配置并重启

    2024年02月02日
    浏览(48)
  • 基础篇(二).ARMv8寄存器(1)

    ARMv8寄存器实在太多了,本节主要针对系统软件常用的寄存器作为重点介绍。 ARMv8架构(针对Core来说)至少有上千个寄存器,更别提Core外SOC级外设寄存器。这两类寄存器的区别是:前者(不管通用寄存器还是系统寄存器)不占用地址空间,而后者是和内存统一编制的,要

    2024年02月08日
    浏览(36)
  • 基础篇(二).ARMv8寄存器(2)

    上一章介绍了ARMv8 通用寄存器和各种特殊寄存器,本章重点介绍一些常见的系统寄存器。 在AArch64中,系统配置通过系统寄存器进行控制,并使用MSR和MRS指令进行访问。ARM架构的之前版本(如ARMv7)使用协处理器来进行系统配置。 但是,AArch64不支持协处理器。 AArch64中系统寄存器

    2023年04月08日
    浏览(35)
  • Yocto系列讲解[技巧篇]92 - armv8 aarch64兼容armv7 32位程序运行环境

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力!

    2024年01月24日
    浏览(62)
  • Android /android_vendor.32_arm64_armv8-a_shared/libtinyals a.so.abidiff报错

    Android /android_vendor.32_arm64_armv8-a_shared/libtinyals a.so.abidiff报错 解决方法:

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包