- 论坛徽章:
- 0
|
请教 我uboot 跑到lowlevel_init 死掉了 问题如下:
在网上查了很多资料 解释如下
globl lowlevel_init
//读取下面标号为SMRDATA处的地址到R0中
ldr r0, =SMRDATA
//读取上面标号为_TEXT_BASE处的地址内容到R1中
//也就是取得TEXT_BASE的值到R1中
ldr r1, _TEXT_BASE
//计算SMRDATA的相对地址保存到R0中
//SMRDATA为虚拟地址,而TEXT_BASE为虚拟地址的起始地址
//而现在Uboot的起始地址并不为虚拟地址
//TEXT_BASE为0x33F8 0000,SMRDATA为0x33F8 06C8
//而现在程序运行在起始地址为0x0000 0000的地方
//所以需要计算以0x0000 0000为标准的相对地址
sub r0, r0, r1
ldr r0, =SMRDATA这句是获得此数据的地址
SMRDATA:
.word (0+(B1_BWSCON4)+(B2_BWSCON +(B3_BWSCON12)+(B4_BWSCON16)+(B5_BWSCON20)+(B6_BWSCON24)+(B7_BWSCON2 )
.word ((B0_Tacs13)+(B0_Tcos11)+(B0_Tacc +(B0_Tcoh6)+(B0_Tah4)+(B0_Tacp2)+(B0_PMC))
.word ((B1_Tacs13)+(B1_Tcos11)+(B1_Tacc +(B1_Tcoh6)+(B1_Tah4)+(B1_Tacp2)+(B1_PMC))
.word ((B2_Tacs13)+(B2_Tcos11)+(B2_Tacc +(B2_Tcoh6)+(B2_Tah4)+(B2_Tacp2)+(B2_PMC))
.word ((B3_Tacs13)+(B3_Tcos11)+(B3_Tacc +(B3_Tcoh6)+(B3_Tah4)+(B3_Tacp2)+(B3_PMC))
.word ((B4_Tacs13)+(B4_Tcos11)+(B4_Tacc +(B4_Tcoh6)+(B4_Tah4)+(B4_Tacp2)+(B4_PMC))
.word ((B5_Tacs13)+(B5_Tcos11)+(B5_Tacc +(B5_Tcoh6)+(B5_Tah4)+(B5_Tacp2)+(B5_PMC))
.word ((B6_MT15)+(B6_Trcd2)+(B6_SCAN))
.word ((B7_MT15)+(B7_Trcd2)+(B7_SCAN))
.word ((REFEN23)+(TREFMD22)+(Trp20)+(Trc1 +(Tchr16)+REFCNT)
.word 0x32
.word 0x30
.word 0x30
网上解释是这段数据 可是我找了很多文件 都没有找到这个数据
我反汇编u-boot.bin 得到的 .S文件中 得到的 如下:
31f80648 <SMRDATA>:
31f80648: 1111d120 tstne r1, r0, lsr #2
31f8064c: 00000700 andeq r0, r0, r0, lsl #14
31f80650: 00000700 andeq r0, r0, r0, lsl #14
31f80654: 00000700 andeq r0, r0, r0, lsl #14
31f80658: 00001f4c andeq r1, r0, ip, asr #30
31f8065c: 00000700 andeq r0, r0, r0, lsl #14
31f80660: 00000700 andeq r0, r0, r0, lsl #14
31f80664: 00018005 andeq r8, r1, r5
31f80668: 00018005 andeq r8, r1, r5
31f8066c: 008e0459 addeq r0, lr, r9, asr r4
31f80670: 00000032 andeq r0, r0, r2, lsr r0
31f80674: 00000030 andeq r0, r0, r0, lsr r0
31f80678: 00000030 andeq r0, r0, r0, lsr r0
并且在AXD中查到 ldr r0, =SMRDATA是此地址因为查看内存中的数据得到的是如上的数据
所以我的问题就是 是我uboot编译错误 还是....... 求教啊
有碰到相关问题的 哥们么???
谢谢~~~~~ |
|