免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zbhsys
打印 上一主题 下一主题

[BootLoader] uboot.bin 的第一条指令的问题,求大神解答 谢谢 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
11 [报告]
发表于 2013-10-08 21:51 |只看该作者
只是b        start_code这条指令不见了吗?其他的都完好?

论坛徽章:
0
12 [报告]
发表于 2013-10-08 21:56 |只看该作者
回复 11# arm-linux-gcc
都在,就是前面空了4个字节,刚才试了下跟uboot.lds中的 ALIGN(4)无关,我把它注释掉了

   

论坛徽章:
0
13 [报告]
发表于 2013-10-08 21:58 |只看该作者
回复 12# zbhsys
我上面错了,是16个字节


   

论坛徽章:
0
14 [报告]
发表于 2013-10-08 22:02 |只看该作者
本帖最后由 zbhsys 于 2013-10-08 22:03 编辑

回复 11# arm-linux-gcc
我错了,是16个字节
  1.         00 00 00 00
  2.               00 00 00 00
  3.               00 00 00 00
  4.               00 00 00 00
  5.               12 00 EA 14 //  11111120:       ea000012        b       11111170 <reset>
  6.               ........
  7.               ....
复制代码

论坛徽章:
0
15 [报告]
发表于 2013-10-08 22:19 |只看该作者
就算了, 搞计算机的都没几个能搞明白,况且你根本就不是搞这个的,这次就不教你了。睡觉

论坛徽章:
0
16 [报告]
发表于 2013-10-08 22:34 |只看该作者
回复 15# heizi_liu
呵呵,还是谢谢了,不纠结这个了,我还是继续读代码了

   

论坛徽章:
0
17 [报告]
发表于 2013-10-14 22:39 |只看该作者
表示不明白你问的啥

论坛徽章:
0
18 [报告]
发表于 2013-10-15 18:53 |只看该作者
回复 17# 钟尚明
确实没说明白,不知道怎么描述好。我改了TEXT_BASE的之后,0x0000_0000F地址处的的值为零,正确的应该是跳转指令。

   

论坛徽章:
0
19 [报告]
发表于 2013-10-17 14:31 |只看该作者
本帖最后由 jplzl10000 于 2013-10-17 14:37 编辑

什么叫第一条无指令呢?
第一条肯定是会跳到reset处的,在start.S文件中。
这个TEXT_BASE实际上是代码搬移地址。

通常U-BOOT是烧录在FLASH中的,以便上电就能直接运行。
但为了提高运行速度,会考虑将U-BOOT的代码搬移到RAM中运行。
因此,就需要一个在RAM中的首地址,即这个TEXT_BASE。
同时,也可以通过判断当前PC值是否与TEXT_BASE值相同来判断当前的程序代码是运行在FLASH中还是RAM中。
通常判断的语句是这样的,在start.S中:
relocate:                                /* relocate U-Boot to RAM            */
        adr        r0, _start                /* r0 <- current position of code   */
        ldr        r1, _TEXT_BASE                /* test if we run from flash or RAM */
        cmp     r0, r1                  /* don't reloc during debug         */
        beq     stack_setup


因此,即使修改了这个TEXT_BASE,也是不会影响代码搬移开始之前的程序代码的。

论坛徽章:
0
20 [报告]
发表于 2013-10-17 20:26 |只看该作者
  1. 0000000 0000 0000 0000 0000 0000 0000 0000 1200
  2.       0000010 0000 14ea 9ff0 14e5 9ff0 14e5 9ff0 14e5
  3.       0000020 9ff0 14e5 9ff0 14e5 9ff0 14e5 9ff0 60e5
  4.       0000030 1112 c011 1112 2011 1113 8011 1113 e011
  5.       0000040 1113 4011 1114 a011 1114 ef11 adbe 11de
  6.       0000050 1111 2011 1111 7c11 1285 9811 12cc 0011
复制代码
TEXT_BASE = 0x11111111
这个是U-BOOT.BIN 文件开头的内容,地址0处为零,根本就不能执行啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP