免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6219 | 回复: 7
打印 上一主题 下一主题

[其它] ARM 汇编 如何读取Pc 指针的数值,我想根据Pc 进行跳转 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-11-19 23:41 |只看该作者 |倒序浏览
在mini2440裸奔中 我的代码 连接地址是 0x3000 0000
烧录到 nandflash 的前4K中,代码要自我复制到 0x3000 0000 再执行
有时候我或许直接将这个代码通过norflash的bootloader 将裸机程序 直接下载到 0x3000 0000 的地方去
我想在我的代码的开头 判断 pc 是 0 附近 还是 0x3000 0000 附近
然后判断是不是要 sdram初始化 内存复制  等工作

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
2 [报告]
发表于 2014-11-20 09:36 |只看该作者
nand启动,2440 soc内部的固件是读出前4k到sram里吧,我记得sram地址是0


nor启动的时候
不需要判断是在nor里还是ram里,编译的时候直接地址设置为0x30000000,然后你的拷贝功能(从nor拷贝到ram)那一段代码要做到地址无关,
拷贝完成以后直接
ldr r0, =lable
mov pc, r0

论坛徽章:
0
3 [报告]
发表于 2014-11-20 09:45 |只看该作者
我是想做一个bin文件 可以烧录到nandflash里面进行启动,也可以使用现有的norflash的superboot 直接下载到0x3000 0000 里面去
通过读取pc 的数值 我想知道我的 bin 是怎么被启动的

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2014-11-20 10:04 |只看该作者
回复 3# ljxh401


    读取pc这种方法来判断不太好,
2440有个om位段可以读取出来,就能够判断出是nor还是nand启动



论坛徽章:
0
5 [报告]
发表于 2014-11-20 16:11 |只看该作者
没有好与不好的区别 只要达到我的目的 就是好的

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
6 [报告]
发表于 2014-11-20 16:22 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-11-20 16:24 编辑

         adr r0, 1f
1:
         ..........
         ..........

论坛徽章:
0
7 [报告]
发表于 2014-11-24 10:17 |只看该作者
MOV R0,PC 看以前的stm的汇编里面是这样写的

论坛徽章:
0
8 [报告]
发表于 2014-12-08 19:11 |只看该作者
韦东山里面介绍的是判断norFlash启动还是nand启动是通过向零地址写数据,如果读取回来数据和写入的数据相等,那么是norFlash启动,反之是nand启动。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP