工具/软件:Code Composer Studio
您好,
我曾经遇到过一个奇怪的情况,项目 的标准系统 启动代码导致数据中止。 我有两个项目,一个最初创建为"Hello World"示例,另一个创建为空(无主) C项目。 随后对每个项目进行了修改,使它们具有相同的项目属性(已彻底检查),相同的源代码,相同的符号,相同的目录路径,所有内容都相同。 但是,虽然"Hello World"版本的_start代码正常,但空项目的版本会导致目标异常。
这个问题不是不可克服的--只要你把每个新的项目都创建成 “Hello World”的例子。 但你不应该这样做,所以也许有人可以对这种不正常的情况作出一些说明。
我的设置如下:
CCS版本:6.1 .2.0.0015万
PDK _AM335x_1_0_3
GNU v 4.9 3 (Linaro)
Win 7 64位
Good /"Hello World"_start代码如下所示(从反汇编窗口复制):
4030.0108万: E3B0.0016万 MOV r0,#0x16
403.001万c: E28F1F4A 添加 R1,PC,#0x128
4030.011万: EF12.3456万 服务 #0x12.3456万
4030.0114万: E59F0120 LDR r0,[PC,#0x120]
4030.0118万: E590.1004万 LDR R1,[r0,#4]
403.0011万c: E59F2138 LDR R2,[PC,#0x138]
4030.012万: E582.1万 str R1,[R2]
4030.0124万: E590.1万 LDR R1,[r0]
4030.0128万: E351万 CMP R1,#0
403.0012万c: 1A0.0001万 bne #0x4030.0138万
4030.013万: E59F1120 LDR R1,[PC,#0x120]
4030.0134万: E580.1万 str R1,[r0]
4030.0138万: E590.1008万 LDR R1,[r0,#8]
403.0013万c: E59.02万C LDR R2,[r0,#0xc]
4030.014万: E351万 CMP R1,#0
4030.0144万: 0A0万 beq #0x403.0014万c
4030.0148万: E1A0D001 移动 支路,R1
403.0014万c: E352万 CMP R2,#0
4030.015万: 0A0万 beq #0x4030.0158万
4030.0154万: E282AC01 添加 R10,R2,#0x100
4030.0158万: E3B0.1万 MOV R1,#0
403.0015万c: E1A0B001 mov r11,R1
4030.016万: E1A0.7001万 mov r7,R1
4030.0164万: E59F00D4 LDR r0,[PC,#0xd4]
4030.0168万: E59F20D4 LDR R2,[PC,#0xd4]
403.0016万c: E52.2万 用户 R2,R2,r0
4030.017万: EB0.1963万 BL memset
4030.0174万: EB0013A5 BL initialize_monitor_handles
4030.0178万: E3B0.0015万 MOV r0,#0x15
403.0017万c: E28F10CC 添加 R1,PC,#0xcc
4030.018万: EF12.3456万 服务 #0x12.3456万
4030.0184万: E59F10C4 LDR R1,[PC,#0xc4]
4030.0188万: E3B0万 MOV r0,#0
403.0018万c: E92D0001 stmdb sp!,{r0}
4030.019万: E4D1.3001万 ldrb R3,[R1],#1
4030.0194万: E353万 CMP R3,#0
4030.0198万: 0A0.0011万 beq #0x40.3001万e4
403.0019万c: E353.002万 CMP R3,#0x20
40.3001万a0: 0AFFFFFA beq #0x4030.019万
40.3001万a4: E353.0022万 CMP R3,#0x22
40.3001万a8: 1353.0027万 cmpne R3,#0x27
40.3001万ac: 01A0.2003万 moveq R2,R3
40.3001万b0: 13A0.202万 movne R2,#0x20
40.3001万b4: 1241.1001万 subne R1,R1,#1
40.3001万b8: E92D0002 stmdb sp!,{R1}
40.3001万bc: E290万 添加 r0,r0,#1
40.3001万c0: E4D1.3001万 ldrb R3,[R1],#1
40.3001万c4: E353万 CMP R3,#0
40.3001万c8: 0A0.0005万 beq #0x40.3001万e4
40.3001万cc: E152.0003万 CMP R2,R3
40.3001万d0: 1AFFFFFA bne #0x40.3001万c0
40.3001万d4: E3B0.2万 MOV R2,#0
40.3001万d8: E251.3001万 用户 R3,R1,#1
40.3001万dc: E5C3.2万 strb R2,[R3]
40.3001万e0: EAFFFEA b #0x4030.019万
40.3001万e4: E1A0100D 型 R1,SP
40.3001万e8: E08D2100 添加 R2,sp,r0,LSL #2
40.3001万ec: E1A0300D 型 R3,SP
40.3001万f0: E152.0003万 CMP R2,R3
40.3001万f4: 8512.4004万 ldrhi R4,[R2,#-4]
40.3001万f8: 8593.5万 ldrhi R5,[R3]
40.3001万fc: 8522.5004万 strhi R5,[R2,#-4]!
4030.02万: 8483.4004万 strhi R4,[R3],#4
4030.0204万: 8AFFFFFFF9 bhi #0x40.3001万f0
4030.0208万: E3CDD007 BIC sp,7号
403.002万c: E1B0.4万 MOV R4,r0
4030.021万: E1B0.5001万 MOV R5,R1
4030.0214万: E59F002C LDR r0,[PC,#0x2C]
4030.0218万: E350万 CMP r0,#0
403.0021万c: 0A0.0001万 beq #0x4030.0228万
4030.022万: E59F0024 LDR r0,[PC,#0x24]
4030.0224万: EB001A49 BL 退出
4030.0228万: EB0.1731万 BL __libc_init_array
403.0022万c: E1B0.0004万 MOV r0,R4
4030.023万: E1B0.1005万 MOV R1,R5
4030.0234万: EB0003DF BL 主
4030.0238万: EB0.1608万 BL 出口
403.0023万c: 4030.7794万 mlasmi r0,r4,r7,r7
4030.024万: 40.3086万BC ldrhtmi R8,[r0],-R12
4030.0244万: 40.3087万C0 eorsmi R8,r0,r0,ASR #15
4030.0248万: 4.0306万B50 eorsmi R6,r0,r0,ASR r11
403.0024万c: 4.0306万F8C eorsmi R6,r0,R12,LSL #31
4030.025万: 40.3077万A4 eorsmi r7,r0,R4,LSR #15
4030.0254万: 0.0001万 andeq r0,r0,r1
4030.0258万: 40.3087万C0 eorsmi R8,r0,r0,ASR #15
403.0025万c: 4.0307万E6C eorsmi r7,r0,r12,错误#28
329 {
HW_RD_REG32 ():
坏/空项目_start代码为:
4030.0108万: E59F30F0 LDR R3,[PC,#0xf0]
403.001万c: E353万 CMP R3,#0
4030.011万: 059F30E4 ldreq R3,[PC,#0xe4]
4030.0114万: E1A0D003 移动 支路,R3
4030.0118万: E10F2000 Mrs R2,apsr
403.0011万c: E31.2万F TST R2,#0xF
4030.012万: 0A0.0015万 beq #0x403.0017万c
4030.0124万: E321F0D1 MSR CPSR_c,#0xD1
4030.0128万: E1A0D003 移动 支路,R3
403.0012万c: E24DAA01 sub R10,sp,#0x1000
4030.013万: E1A0300A MOV R3,R10
4030.0134万: E321F0D7 MSR CPSR_c,#0xd7
4030.0138万: E1A0D003 移动 支路,R3
403.0013万c: E2433A01 子 R3,R3,#0x1000
4030.014万: E321F0DB MSR CPSR_c,#0xdb
4030.0144万: E1A0D003 移动 支路,R3
4030.0148万: E2433A01 子 R3,R3,#0x1000
403.0014万c: E321F0D2 MSR CPSR_c,#0xd2
4030.015万: E1A0D003 移动 支路,R3
4030.0154万: E2433A02 sub R3,R3,#0x2000
4030.0158万: E321F0D3 MSR CPSR_c,#0xd3
403.0015万c: E1A0D003 移动 支路,R3
4030.016万: E243.3902万 sub R3,R3,#0x8000
4030.0164万: E3C330FF BIC R3,R3,#0xff
4030.0168万: E3C33CFF BIC R3,R3,#0xFF00
403.0016万c: E503.3004万 str R3,[R3,#-4] <<<<<<<<<<<<<<<<< 这是一个问题
4030.017万: E953.2万 ldmdb R3,{sp}^
4030.0174万: E3.822万C0 Orr R2,R2,#0xc0
4030.0178万: E121F002 MSR CPSR_c,R2
403.0017万c: E243A801 SUB R10,R3,#0x1万
4030.018万: E3B0.1万 MOV R1,#0
4030.0184万: E1A0B001 mov r11,R1
4030.0188万: E1A0.7001万 mov r7,R1
403.0018万c: E59F0078 LDR r0,[PC,#0x78]
4030.019万: E59F2078 LDR R2,[PC,#0x78]
4030.0194万: E52.2万 用户 R2,R2,r0
4030.0198万: EB0009AD BL memset
403.0019万c: E59F3060 LDR R3,[PC,#0x60]
40.3001万a0: E353万 CMP R3,#0
40.3001万a4: 0A0.0001万 beq #0x40.3001万b0
40.3001万a8: E1A0E00F 移动 LR,PC
40.3001万ac: E1A0F003 移动 PC,R3
40.3001万b0: E59F3050 LDR R3,[PC,#0x50]
40.3001万b4: E353万 CMP R3,#0
40.3001万b8: 0A0.0001万 beq #0x40.3001万c4
40.3001万bc: E1A0E00F 移动 LR,PC
40.3001万c0: E1A0F003 移动 PC,R3
40.3001万c4: E3B0万 MOV r0,#0
40.3001万c8: E3B0.1万 MOV R1,#0
40.3001万cc: E1B0.4万 MOV R4,r0
40.3001万d0: E1B0.5001万 MOV R5,R1
40.3001万d4: E59F0038 LDR r0,[PC,#0x38]
40.3001万d8: E350万 CMP r0,#0
40.3001万dc: 0A0.0001万 beq #0x40.3001万e8
40.3001万e0: E59F0030 LDR r0,[PC,#0x30]
40.3001万e4: EB000A4E BL atexit
40.3001万e8: EB0.0795万 BL __libc_init_array
40.3001万ec: E1B0.0004万 MOV r0,R4
40.3001万f0: E1B0.1005万 MOV R1,R5
40.3001万f4: EB0003DE BL 主
40.3001万f8: EB0.0784万 BL 出口
40.3001万fc: 8万 andeq r0,r8,r0
4030.02万: 4030.612万 eorsmi R6,r0,r0,LSR #2
4030.0204万: 0万 andeq r0,r0,r0
4030.0208万: 0万 andeq r0,r0,r0
403.002万c: 40.304万BC ldrhtmi R4,[r0],-R12
4030.021万: 4030.4114万 eorsmi R4,r0,R4,LSL R1
4030.0214万: 4.0302万B24 eorsmi R2,r0,R4,LSR #22
4030.0218万: 4.0302万B44 eorsmi R2,r0,R4,ASR #22
329 {
HW_RD_REG32 ():
谢谢!
Gerry