历史上的今天
今天是:2024年09月28日(星期六)
2021年09月28日 | ARM未定义指令异常学习中关于字节对齐的心得
2021-09-28 来源:eefocus
今天学习jz2440开发板的未定义指令异常这一节课程,跟随韦东山老师编写代码编译烧写后程序老师无法正常运行,经过仔细排查发现是字节未4字节对齐导致的,之前的程序中start.S文件如下开始:
_start:
/* 关闭看门狗 */
ldr r0, =0x53000000
ldr r1, =0
str r1, [r0]
指令从开始就是按照4字节对齐排放的,这样运行程序没有问题。但当在_start标签后增加未定义指令异常处理语句后,代码如下:
_start:
b reset
b do_und
do_und:
ldr sp, =0x34000000
stmdb sp!, {r0-r12, lr}
mrs r0, cpsr
ldr r1, =und_string
bl printException
ldmia sp!, {r0-r12, pc}^
und_string:
.string "underdefined instruction exception"
.align 4
reset:
/* 关闭看门狗 */
ldr r0, =0x53000000
ldr r1, =0
str r1, [r0]
如果不在reset标签前增加.align 4语句,那么编译后的reset段代码的地址为0x300000043,就不是4字节对齐的,所以程序启动后无法正常跳转执行。
上一篇:Arm64中的异常处理
史海拾趣
|
我们现在需要用ARM的CPU做两款产品,一个是Netbook,一个是Barcode scanner,都需要加上CDMA2000/EVDO/HSxPA的3G模组,其中Netbook使用Android系统,Barcode scanner使用WM6.5系统,请问大家在开发类似产品的时候使用的都是哪家的3G模组呢? 我有 ...… 查看全部问答> |
|
为什么将GPIO配置成中断模式后,GPGDAT就不能读了?? 将GPIO如GPG端口中的GPG1配置成中断模式(GPGCON中配的),这样的话GPGDAT就不能读了吧(至少2440的datasheet上是这么说的)? 但是我看别人写的驱动怎么将GPG配成了中断模式,却用读取GPGDAT的相应位来判断是否产 ...… 查看全部问答> |
|
Windows Mobile 5.0,Windows Mobile 60设备,如何在我的程序运行过程中禁用上面的Power电源按钮 Windows Mobile 5.0,Windows Mobile 60设备,如何在我的程序运行过程中禁用上面的Power电源按钮… 查看全部问答> |
|
源码请教,关于Tab Ctrl 的多对话框共享从串口采集的数据,怎么实现啊? 现在有个项目,28号就要,很急,没实现Tab Ctrl 的多对话框共享从串口采集的数据,有四个对话框,每个对话框分别有很多的控件,要显示从串口采集来的数据,怎么样才能实现共享啊,请大家帮帮忙!!! 其中Tab Ctrl 的多对话框主要使用下面的方案5实 ...… 查看全部问答> |
|
无线通信模块在M2M领域的应用(四) 传统农业生产的物质技术手段落后,主要依靠人力、畜力和各种手工工具以及一些简单机械。在现实中主要存在农业科技含量低,装备水平低,农业污染和水资源浪费严重,农业产出少,农民收入低,农产品品种少等问题。 ...… 查看全部问答> |
|
大家好,最近在做一个比赛,需要使用SD卡来记录工作状态下的数据。但是对于文件系统和怎样对于SD卡进行操作不是很了解,所以和大家商讨一下。我先把我的两个函数放上来,大家帮我看看。 了、我没有使用FIFO功能,因为我觉得对于SD卡返回的信息的读 ...… 查看全部问答> |




