打印

执行跳转语句会进入硬件中断,关闭中断跳转会停一次

[复制链接]
3675|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
danp寒冰|  楼主 | 2022-11-8 08:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在APP工程中使用attribute语句在0x8008的位置放置了一个入口函数,用于跳转到0x8200的APP工程。在BOOT工程下增加了跳转语句跳转到0x8008这个入口函数(((void()(void))(0x00008008)))();但是运行这一条语句的时候会进入硬件中断,后来增加了__disable_fiq()语句关闭硬件中断,全速运行会在0x8008处停下来!必须再点一次全速运行才正常。但如果调试的时候给这句话打断点,运行到这条语句的时候点击step into 或者step都可以正常运行。
下面是0x8008的入口函数和相应的汇编

下面是我的跳转语句和跳转语句的汇编

使用特权

评论回复
沙发
flycamelaaa| | 2022-11-21 14:55 | 只看该作者
没看到代码啊,楼主是不是发掉了

使用特权

评论回复
板凳
liu96jp| | 2022-12-2 15:33 | 只看该作者
那说明你的跳转指针设置的不对吧

使用特权

评论回复
地板
zhizia4f| | 2022-12-2 16:46 | 只看该作者
你可以直接在boot程序里设置跳转8200这个地址的,没必要又多加一层跳转吧

使用特权

评论回复
5
g0d5xs| | 2022-12-2 17:55 | 只看该作者
有没有可能,这个8008的地址被占用了呢?

使用特权

评论回复
6
suw12q| | 2022-12-2 19:02 | 只看该作者
我记得这个地址设置是有讲究的,就必须4K对齐吧还是啥来着

使用特权

评论回复
7
q1ngt12| | 2022-12-2 20:04 | 只看该作者
你关闭硬件中断好像也没啥意义,程序依然是有问题的

使用特权

评论回复
8
tax2r6c| | 2022-12-2 21:13 | 只看该作者
你试试不跳转到8008之中,直接跳转8200试试

使用特权

评论回复
9
su1yirg| | 2022-12-3 06:38 | 只看该作者
能把你的程序贴出来看看么,帮你分析一下

使用特权

评论回复
10
kaif2n9j| | 2022-12-3 07:42 | 只看该作者
我觉得有可能是啥呢,就是boot这个跳转操作有问题了

使用特权

评论回复
11
cen9ce| | 2022-12-3 11:04 | 只看该作者
你参考一下官方的boot和IAP的跳转操作呗,就地址这块要设置好,感觉是你地址没设置对导致

使用特权

评论回复
12
d1ng2x| | 2022-12-3 12:39 | 只看该作者
如果仿真都停顿一下,那你要是不仿真,正常用,程序应该起不来

使用特权

评论回复
13
tpgf| | 2022-12-3 17:00 | 只看该作者
如果跳转之前的程序A里有些中断没有关,在跳转之后程序B的中断触发,但程序B里没有定义中断响应函数,找不到地址会导致死机

使用特权

评论回复
14
nawu| | 2022-12-3 17:11 | 只看该作者
在进行跳转的时候有没有发生错误中断呀

使用特权

评论回复
15
aoyi| | 2022-12-4 11:18 | 只看该作者
__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )

使用特权

评论回复
16
zljiu| | 2022-12-4 11:27 | 只看该作者
可能地址出现了问题 更改一下指针指向的地址试试看

使用特权

评论回复
17
gwsan| | 2022-12-4 11:43 | 只看该作者
如果使用c的话 是不是就不用操心这个跳转地址的问题了啊

使用特权

评论回复
18
tfqi| | 2022-12-4 11:54 | 只看该作者
跳转语句的地址有问题应该 看一下手册 这个地址有没有被系统代码占用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝