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.

MSP430F5438A生成的烧写文件在flash中地址不连续?

在调试串口二次boots时,需要用IAR生成.txt文件,一个小程序可以正常工作,但我的应用程序较大,生成的.txt有这么一段:

4F 63 74 6F 62 65 72 3A 4E 6F 76 3A 4E 6F 76 65
6D 62 65 72 3A 44 65 63 3A 44 65 63 65 6D 62 65
72 00 00 30 31 32 33 34 35 36 37 38 39 61 62 63
64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73
74 75 76 77 78 79 7A 00 00 00 21 15 11 0E 0D 0C
0B 0B 0A 0A 09 09 09 09 09 08 08 08 08 08 08 08
07 07 07 07 07 07 07 07 07 07 07 07 07
@72CE
00 00 34 04 73 74 31 00 00 00 00 00 00 00 00 00
00 00 00 00 01 31 E0 2E 00 00 01 00 04 00 0A 00
79 69 89 69 99 69 A2 69 B5 69 33 67 00 00 C9 69
D2 69 99 69 DA 69 0B 67 33 67 00 00 7A 68 7A 68
7A 68 7A 68 7A 68 13 67 00 00 82 68 82 68 E1 69
E1 69 E1 69 4F 69 00 00 E5 69 E5 69 F2 69 F2 69
FB 69 05 6A 00 00 09 6A 21 6A 38 6A 4D 6A 68 6A
80 6A 00 00 4C 6F 67 20 46 69 6C 65 31 00 00 00
地址0x72CD程序没有指定数据,按说程序在flash中是连续的存储空间,为什么会出现这种状况?我的应用程序下载后不能工作跟这个有关?

  • 如果有些程序放在指定的地址,就常常会有这种程序存储不连续的现象。这种不连续不影响程序正常执行的。

  • 连续的地址空间对用户编程相对简单,这种情况能否人为干预,使地址空间连续?还有就是我写的二次boot程序,应用程序(108K)写进去以后,运行大概3秒多就自动停止了,不再运行?这个应该如何调试

  • 没有太好的调试方法,先重点考察boot程序到app程序的跳转,还有两段程序存储位置有没有问题

    我估计你程序的不连续是因为boot程序放在了指定位置或者在map文件进行了一些特别设置

  • 主函数屏蔽掉一个延时函数后,生成的.txt文件与未屏蔽生成的.txt大小一致,占有的flash空间大小一样。但是屏蔽掉延时函数的程序boot后后确可以正常工作。为什么?boot程序的xcl文件:

    // ---------------------------
    // Code
    //

    -Z(CODE)CSTART,ISR_CODE=F000-FEFF
    -Z(CODE)USERSEGMENT=5C00-F000
    -Z(CODE)SCIINTSEGMENT=FA00-FD00
    //-Z(CODE)MYSEGMENT=1EF00-1FF00

    // ---------------------------
    // Constant data
    //

    -Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=F000-FEFF


    // -------------------------------------
    // All memory 0-FFFFF
    //

    // ---------------------------
    // Code
    //

    -P(CODE)CODE=F000-FEFF,10000-45BFF
    -Z(CODE)CODE_ID

    // ---------------------------
    // Constant data
    //

    -Z(CONST)DATA20_C,DATA20_ID=F000-FEFF,10000-45BFF


    // -------------------------------------
    // Interrupt vectors
    //

    -Z(CODE)INTVEC=FF80-FFFF
    -Z(CODE)RESET=FFFE-FFFF

    APP程序的xcl文件:

    // ---------------------------
    // Code
    //

    -Z(CODE)CSTART,ISR_CODE=5C00-EFFF

    // ---------------------------
    // Constant data
    //

    -Z(CONST)DATA16_C,DATA16_ID,TLS16_ID,DIFUNCT,CHECKSUM=5C00-EFFF


    // -------------------------------------
    // All memory 0-FFFFF
    //

    // ---------------------------
    // Code
    //

    -P(CODE)CODE=5C00-EFFF,10000-45BFF
    -Z(CODE)CODE_ID

    // ---------------------------
    // Constant data
    //

    -Z(CONST)DATA20_C,DATA20_ID=5C00-EFFF,10000-45BFF


    // -------------------------------------
    // Interrupt vectors
    //

    -Z(CODE)INTVEC=FF80-FFFF
    -Z(CODE)RESET=FFFE-FFFF