搜索墙首页  编程技术  java  asp  ajax  php  c/c#/c++  数据库  oracle  mysql  db2  操作系统  windows  linux  股吧
首页 > 操作系统 > 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中。
请问这是什么原因呢?



 1         
您的发言将按有关规定都会存档,您须为所发表后果负责,请您遵纪守法并注意语言文明。
标题: 请教u-boot中start.S文件执行过程的疑问
热门关注
标题回复点击
将 Puppy Linux 4.00 安装在U盘里 打造随身系统2692
gcc glibc kernel 版本兼容性 reference0682
《嵌入式Linux应用程序开发详解》CU完整版127422
嵌入式?? 下??料?? 索引 (?迎??添加) [更新:07/24/2008]5413
求助大侠们 Warning: unable to open an initial console43394
分享几个关于嵌入式Linux的资料125331
DIY?2328
iwpriv 命令使用4313
[保留]2287
QT4.5移植到2440的问题2278
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源