“Thread:SysBIOS”中讨论的其它部件
工具/软件:TI C/C++编译器
我的 裸机应用程序在调试时始终运行良好,但当相同的代码加载到ram并 从我的辅助引导加载程序执行时,会始终崩溃。
已 验证应用程序代码的加载,分支到其起始地址也可以正常工作。 原因始终是应用程序中(标准)启动文件使用的"Svc"指令,问题是没有加载特定的Svc异常向量,它只是进入了标准的分支对我的死循环。
奇怪的是,在调试过程中,您可以逐步执行svc命令,然后它进入异常引导程序,但随后神奇地返回到svc之后的指令。 但是,当引导加载程序加载并执行时,Svc异常将被正确接受,并最终进入死亡循环。
我尝试了很多不同的方法来解决这个问题,花了太多的时间来解决这个问题,但都没有结果。 有人能帮你吗?
这是从重置向量(0x8600万)到 _start中的Svc指令的转储。 。
8600万: E59FF018 LDR PC,[PC,#0x18]
8600.0004万: E51FF008 LDR PC,[PC,#-8]
8600.0008万: E59FF018 LDR PC,[PC,#0x18]<< Svc异常(从地址0x8600.0028万加载PC)
860万c: E51FF008 LDR PC,[PC,#-8]
8600.001万: E51FF008 LDR PC,[PC,#-8]
8600.0014万: E51FF008 LDR PC,[PC,#-8]
8600.0018万: E51FF008 LDR PC,[PC,#-8]
860万c: E51FF008 LDR PC,[PC,#-8]
8600.002万: 8600.005万 .word 0x8600.005万
8600.0024万: 0万 andeq r0,r0,r0
8600.0028万: 8600.0049万 strhi r0,[r0],-r9,ASR #32 <<拇指模式向量0x8600.0048万
860.0002万c: 0万 andeq r0,r0,r0
8600.003万: 0万 andeq r0,r0,r0
8600.0034万: 0万 andeq r0,r0,r0
8600.0038万: 0万 andeq r0,r0,r0
860.0003万c: 0万 andeq r0,r0,r0
8600.004万: 860.0004万F strhi r0,[r0],-PC,ASR #32
8600.0044万: E7FEE7FE UDF #0xee7e }
8600.0048万: E7FEE7FE UDF #0xee7e } Thumb instr对,从所有分支到自身
860.0004万c: E7FEE7FE UDF #0xee7e }
entry():
8600.005万: E59F002C LDR r0,[PC,#0x2C]
8600.0054万: EE0C0F10 MCR P15,#0,r0,C12,c0, #0
8600.0058万: EE113F50 MRC P15,#0,R3,C1,c0, 2号
860.0005万c: E38.336万F Orr R3,R3,#0xf0万
8600.006万: EE013F50 MCR P15,#0,R3,C1,c0, 2号
8600.0064万: E3A0.3万 移动 R3,#0
8600.0068万: E3A0.0101万 MOV r0,#0x4000万
860.0006万c: EEE80A10 vmsr fpexc,r0
8600.007万: EE073F95 MCR P15,#0,R3,C7,C5, 4号
8600.0074万: E59FA00C LDR R10,[PC,#0xc] <<< 从0x8600.0088万加载_start地址
8600.0078万: E1A0E00F 移动 LR,PC
860.0007万c: E12FFF1A BX R10
8600.008万: E24FF008 sub PC,PC,#8
8600.0084万: 8600万 strhi r0,[r0],-r0
8600.0088万: 8600.0128万 strhi r0,[r0],-R8,LSR #2 <<<<<<<<<<<<< _开始
860.0008万c: 0万 andeq r0,r0,r0
.....
_开始
8600.0128万: E3B0.0016万 MOV r0,#0x16
860.0012万c: E28F1F4A 添加 R1,PC,#0x128
8600.013万: EF12.3456万 服务 #0x12.3456万 <<< 崩溃-没有 为Svc异常加载实际引导程序
8600.0134万: E59F0120 LDR r0,[PC,#0x120]
8600.0138万: E590.1004万 LDR R1,[r0,#4]
860.0013万c: E59F2138 LDR R2,[PC,#0x138]
8600.014万: E582.1万 str R1,[R2]
[我的设置是:
定制PCB
AM3352BZCZ30
CCS版本:6.1 .2.0.0015万
BIOS_6_45_01_29
PDK _AM335x_1_0_3
GNU v 4.9 3 (Linaro)
Win 7 64位]
谢谢!
GerryL