ARM汇编指令调试方法

发布者:星辰小鹿最新更新时间:2016-06-21 来源: eefocus关键字:ARM  汇编指令  调试方法 手机看文章 扫描二维码
随时随地手机看文章
学习ARM汇编时,少不了对ARM汇编指令的调试。作为支持多语言的调试器,gdb自然是较好的选择。调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控。为了在x86平台上执行ARM指令,可以使用qemu模拟器执行ARM汇编指令。

一、准备ARM汇编程序

首先,我们构造一段简单的ARM汇编程序作为测试代码main.s。

.globl _start
_start:
	mov R0,#0
	swi	0x00901

以上汇编指令完成了0号系统调用exit的调用。mov指令将系统调用号传入寄存器R0,然后使用0x00901软中断陷入系统调用。

为了运行ARM汇编代码,需要使用交叉编译器arm-linux-gcc对ARM汇编代码进行编译。下载交叉编译器安装完毕后,对ARM汇编代码进行编译。

arm-linux-gcc main.s -o main -nostdlib

编译选项“-nostdlib”表示不使用任何运行时库文件,编译生成的可执行文件main只能在ARM体系结构的系统上运行。

二、编译安装qemu模拟器

为了x86的Linux系统内运行ARM体系结构的可执行程序,需要安装qemu模拟器。

首先下载qemu源码,然后保证系统已经安装了flex和bison。

编译安装qemu。

./configure --prefix=/usr
sudo make && make install

然后使用qemu的ARM模拟器执行ARM程序。

qemu ./main

三、编译安装arm-gdb

为了调试ARM程序,需要使用gdb的源码编译生成arm-gdb。

首先下载gdb源代码,编译安装。

./configure --target=arm-linux --prefix=/usr/local
sudo make && make install

为了和系统的gdb避免冲突,我们将gdb的安装目录安装到/usr/local,然后建立软链接即可。

ln -s /usr/bin/arm-gdb /usr/local/gdb/gdb

之后便可以使用arm-gdb命令调试ARM程序了。

四、调试ARM程序

首先使用qemu打开远程调试端口。

qemu-arm -g 1024 ./main

然后导出环境变量QEMU_GDB。

export QEMU_GDB=/usr/local/gdb

最后,进入gdb调试。

arm-gdb ./main

进入arm-gdb后,首先连接远程调试端口。

(gdb) target remote localhost:1024

然后使用gdb常用的调试命令调试代码即可。

(gdb) disassemble			// 查看反汇编
(gdb) x /8xw 0x0808e		// 查看内存
(gdb) info register			// 查看寄存器
(gdb) continue				// 继续执行
(gdb) stepi					// 汇编级逐过程
(gdb) nexti					// 汇编级逐语句
 

关键字:ARM  汇编指令  调试方法 引用地址:ARM汇编指令调试方法

上一篇:arm汇编指令整理
下一篇:浅谈ARM架构1

推荐阅读最新更新时间:2024-03-16 14:58

LPC1114在KEIL环境下不能进入调试状态的解决方法
用lpc1114处理器在keil环境下写程序,通过J-link点击调试按钮开始调试的时候,出现了不能下载axf文件,调试中止的提示,如图1: 图1 解决方法:进入Debug选项,将Download Options选项下的“Verify Code Download”选项前面的“√”去掉(缺省状态下是勾选上的)即可,如图2: 另外,LPC1114只支持SW调试模式,Jtag调试接线如图3: 图2 图3
[单片机]
LPC1114在KEIL环境下不能进入<font color='red'>调试</font>状态的解决<font color='red'>方法</font>
基于ARM9的心电除颤模拟发生系统方案
随着社会的发展,人们的医疗保健意识越来越强,所以医生的培训也就成为非常重要的环节。心电除颤技术作为医生培训的一个主要方面,若操作规范,动作熟练,往往在紧急关头可以救人于危难之间,在培训的时候,如果能够真实地模拟急救除颤的场景,将会起到良好的学习效果。因此,在急救、有创性临床操作训练上,医学模拟教学日益显示出其成本低、重复性高、教学效率高以及符合医学伦理要求等优势。 除颤模拟发生系统可以任意选择34种状态(包括成人和儿童两大类)时也可以连接医用监护仪,使除颤模拟更加逼真。学员可以进行不同能量的除颤练习,同时这也便于老师检验学员的学习效果。 该系统是根据心电图的有关原理以及监护仪的信号合成原理研制的,严格按照医学的相关规定,产生的
[单片机]
基于<font color='red'>ARM</font>9的心电除颤模拟发生系统方案
(五)stm32工程代码HardFault异常查错调试方法
一、导致异常的原因很多,例如:直接使用未分配空间的指针、栈溢出等一场非法操作便会使程序进入HardFault异常状态。下面介绍怎么找出程序中的异常。 接下来在keil_MDK工程中,编译代码,并debug,之后全速运行,可以看到如下图所示程序进入HardFault异常。 如下所示我们找到SP寄存器,0x200045B8即为栈地址,栈里面的值依次为R0~R3、R12、PC(Return address)、xPSR(CPSR或SPSR)、LR。如图我们看到划红线的地方,注意从右往左看。分别为0x0800427D和0x08004BFA。 在show code at address中输入0x08004BFA,点击go to即找
[单片机]
(五)stm32工程代码HardFault异常查错<font color='red'>调试</font><font color='red'>方法</font>
ARM与MEMS器件的微惯性测量装置设计
  在仿生推进机理的研究中,精确测量鱼类尾鳍拍动参数对于鱼类仿生推进机理研究及工程应用具有重要的意义;然而,目前研究者大多采用分析高速摄像机拍摄的图像获得参数的观测方法。这种方法受到环境与设备的限制,结果精确度较差。本设计是一种基于MEMS器件的生物运动微惯性测量装置。利用该装置实现了对SPC-III机器鱼尾鳍拍动参数的精确测量,为国内首次利用MEMS器件进行的活体鱼尾鳍拍动参数测量实验打下了基础,为机器鱼仿生推进设计理论提供支撑。   1 设计要求和系统结构   根据活体鱼类的生物特征和实验本身的特点,微惯性测量装置应该满足下列设计要求:体积小,质量轻,功耗低,采集频率和采集精度高,防水密封性能良好。为了实现这些需求,微惯性
[测试测量]
Maxim宣布MAX32600MBED成为ARM mbed最新成员
Maxim Integrated的低功耗MAX32600MBED提供集安全性与高精度模拟性能于一体的IoT方案。 Maxim Integrated Products, Inc. (NASDAQ: MXIM)宣布MAX32600MBED成为ARM mbed 物联网设备平台项目的最新成员,该平台能够帮助mbed工程师和IoT开发人员快速开发基于MAX32600微控制器(MCU)嵌入式系统。 ARM mbed操作系统是一种专为物联网 (IoT) 中的 物体 设计的开源嵌入式操作系统。该操作系统包含您基于ARM Cortex-M微控制器开发连接产品所必需的全部功能,非常适合涉及智能城市、智能家庭和穿戴式设备等领域的
[物联网]
Maxim宣布MAX32600MBED成为<font color='red'>ARM</font> mbed最新成员
基于ARM-WinCE的视频监控系统分析
设计一种嵌入式系统,以WinCE操作系统和ARM硬件平台为核心实现对现场的实时监控;通过无线网络把视频图像传输到主机端,以实现分析、存储及显示等功能。 数字视频监控系统是以计算机或嵌入式系统为中心、视频处理技术为基础组建的的一种新型监控系统,系统采用符合图像数据压缩的国际标准,综合利用图像传感器、计算机网络、自动控制和人工智能等技术。由于数字视频监控系统对视频图像进行了数字化,所以与传统的模拟监控系统相比,数字监控具有许多优点。数字化的视频系统可以充分利用计算机的快速处理能力,对其进行压缩、分析、存储和显示。 数字化视频处理技术提高了图像的质量与监控效率,使系统易于管理和维护。整个系统是模块化结构,体积小,易于安装、使用和
[单片机]
基于<font color='red'>ARM</font>-WinCE的视频监控系统分析
ARM紧致内存TCM的解释
  TCM简介   TCM :TIghtly Coupled Memory的缩写。为了弥补Cache访问的不确定性,而增加的OnChip Memory.有的CPU含有分立的InstrucTIon TCM / Data TCM.TCM包含在存储器的地址映射空间中,可以作为快速存储器来访问。TCM使用物理地址,对TCM的写访问,受到MMU内部保护信息的控制。向TCM中的内存位置写入时,不会发生任何外部写入。   TCM用于向处理器提供低延迟内存,它没有高速缓存特有的不可预测性。 可以使用 TCM 来存放重要例程,如中断处理例程或者极需要避免高速缓存不确定性的实时任务。此外,可以使用 TCM 来保存暂时寄存器数据、局部属性不适合高速
[单片机]
伺服电机的调试方法和注意事项
伺服电机(servo motor )是指在伺服系统中控制机械元件运转的发动机,是一种补助马达间接变速装置。 伺服电机可使控制速度,位置精度非常准确,可以将电压信号转化为转矩和转速以驱动控制对象。 伺服电机转子转速受输入信号控制,并能快速反应,在自动控制系统中,用作执行元件,且具有机电时间常数小、线性度高、始动电压等特性,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。 今天与大家分享的就是伺服电机的调试方法和注意事项。 ①伺服电机的调试方法 ②伺服电机的注意事项 1、伺服电机油和水的保护 A:伺服电机可以用在会受水或油滴侵袭的场所,但是它不是全防水或防油的。因此, 伺服电机不应当放置或使用在水中或
[嵌入式]
伺服电机的<font color='red'>调试</font><font color='red'>方法</font>和注意事项
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved