![]() |
| 首页 > 操作系统 > linux > linux嵌入式开发 |
1
1楼 billycatcat 2009-3-15 10:45 大家好,也许很多人已经读过u-boot的start.S代码,主要是用来为u-boot的第一阶段做准备的。
我使用的u-boot是u-boot-2008.10,其实那份start.S和老版本的差不多,经过make xxxx_config 和 make all 后成功生成了uboot.bin。 我在cpu/arm920t/ 中执行arm-linux-objdump -D start.o > file (这样做不知道对不对阿) 想看看其过程 在start.S中肯定有这么一句: bl cpu_init_crit 但在那份file文件中却对应的是这么一句: b8: eb00006d bl 274 <software_interrupt+0x14> 好像是跳转到 software_interrupt 去了。对于我的cpu_init_crit是这样对应的: 000001bc <cpu_init_crit>: 1bc: e3a00000 mov r0, #0 ; 0x0 1c0: ee070f17 mcr 15, 0, r0, cr7, cr7, {0} 1c4: ee080f17 mcr 15, 0, r0, cr8, cr7, {0} ....................(省略) 我看它跳转到software_interrupt+0x14,然后就找一下对应的代码,如下(比较长阿): 00000260 <software_interrupt>: 260: e51fd224 ldr sp, [pc, #-548] ; 44 <_armboot_start> 264: e24dd802 sub sp, sp, #131072 ; 0x20000 268: e24dd803 sub sp, sp, #196608 ; 0x30000 26c: e24dd088 sub sp, sp, #136 ; 0x88 270: e58de000 str lr, [sp] 274: e14fe000 mrs lr, SPSR 278: e58de004 str lr, [sp, #4] 27c: e3a0d013 mov sp, #19 ; 0x13 280: e169f00d msr SPSR_fc, sp 284: e1a0e00f mov lr, pc 288: e1b0f00e movs pc, lr 28c: e24dd048 sub sp, sp, #72 ; 0x48 290: e88d1fff stmia sp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip} 294: e51f2258 ldr r2, [pc, #-600] ; 44 <_armboot_start> 298: e2422802 sub r2, r2, #131072 ; 0x20000 29c: e2422803 sub r2, r2, #196608 ; 0x30000 2a0: e2422088 sub r2, r2, #136 ; 0x88 2a4: e892000c ldmia r2, {r2, r3} 2a8: e28d0048 add r0, sp, #72 ; 0x48 2ac: e28d5034 add r5, sp, #52 ; 0x34 2b0: e1a0100e mov r1, lr 2b4: e885000f stmia r5, {r0, r1, r2, r3} 2b8: e1a0000d mov r0, sp 2bc: ebfffffe bl 2bc <software_interrupt+0x5c> 整个software_interrupt代码贴完了,都感觉没看到有某条指令会帮助跳回到cpu_init_crit中。 请问这是什么原因呢?
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源
| ||||||||||||||||||||||||||||||||||||||||