天嵌 ARM开发社区

 找回密码
 注册
查看: 2470|回复: 6

此段代码何解啊?

[复制链接]
浅析ARM9 发表于 2013-6-25 17:50:43 | 显示全部楼层 |阅读模式

  1. #define BIOSSTARTADDR 0x30000000
  2. {
  3.       void (*fpbois)(void) = (void (*)(void))BIOSSTARTADDR;
  4.       (*fpbois)();
  5. }
复制代码
代码可以让ARM9重启,看不懂,求大神指导!

TQ-ZQL 发表于 2013-6-25 18:02:49 | 显示全部楼层
本帖最后由 TQ-ZQL 于 2013-6-25 18:03 编辑

这个就是直接跳到0x3000000上执行。那是内存的起始地址。cpu启动时会将一些启动代码搬到0x30000,然后跳到这个地方启动的。
 楼主| 浅析ARM9 发表于 2013-6-25 18:06:58 | 显示全部楼层
TQ-ZQL 发表于 2013-6-25 18:02
这个就是直接跳到0x3000000上执行。那是内存的起始地址。cpu启动时会将一些启动代码搬到0x30000,然后跳到这 ...

为什么可以实现跳转啊?
TQ-ZQL 发表于 2013-6-25 18:12:59 | 显示全部楼层
就是一个函数指针的。直接指定地址
 楼主| 浅析ARM9 发表于 2013-6-25 23:21:40 | 显示全部楼层
TQ-ZQL 发表于 2013-6-25 18:12
就是一个函数指针的。直接指定地址

懂了,PC指针读取本条指令时认为0x30000000是一个函数入口地址,进入函数,结果是重启。
谢了啊!
亚瑟王 发表于 2013-6-26 09:11:39 | 显示全部楼层
浅析ARM9 发表于 2013-6-25 23:21
懂了,PC指针读取本条指令时认为0x30000000是一个函数入口地址,进入函数,结果是重启。
谢了啊!

亲,问题解决了请修改帖子类型为“已解决”(请参考:http://www.armbbs.net/forum.php?mod=viewthread&tid=15200)。
 楼主| 浅析ARM9 发表于 2013-6-26 18:02:28 | 显示全部楼层
亚瑟王 发表于 2013-6-26 09:11
亲,问题解决了请修改帖子类型为“已解决”(请参考:http://www.armbbs.net/forum.php?mod=viewthread&t ...

恩,本来是准备修改状态的,结果没找到如何修改。现在知道了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-2 15:12 , Processed in 1.062500 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表