This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/PROCESSOR-SDK-AM335X:启动代码错误

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/581353/ccs-processor-sdk-am335x-bad-startup-code

部件号:processor-SDK-AM335X

工具/软件: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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是哪个SDK? Linux还是RTOS?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS。
    但这些都是没有app.cfg文件的简单C项目。
    谢谢!
    Gerry
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我需要此信息,以便将您的查询转至合适的团队。 RTOS团队已收到通知。 他们将在这里作出回应。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,谢谢。
    Gerry

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否两个项目都将STARTUP_ARMCA8.S文件作为构建的一部分包括在内。 该文件是使用GNU编译器创建的裸机项目所必需的,以正确设置向量表和入口点。

    我怀疑您创建的空项目不包括该文件,这就是您观察此行为的原因。

    此致,
    拉胡尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Rahul,

    这两个文件都有START_ARMCA8.s --事实上它们都通过该文件中的同一代码片段分支到_START()。

    在进一步的测试中,我发现我可以可靠地生成带有“新建”->“CCS项目”的“BAD”_START()代码,然后选择“空项目”或“空项目(带main.c)”。

    谢谢!
    Gerry