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.

MSP5438A在CCS6.1下能不能设置程序执行的开始地址?

在IAR环境下,可以通过以下语句控制程序的初始化地址,即程序开始执行的地址:

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

在CCS中有没有这样的语句可以控制程序开始执行的地址?

  • CMD中重新定义RESET内存空间就可以了, 复位后,定义的RESET地址处存放整个芯片程序的入口地址 

    _c_int00_xxx,执行这个程序,就是关看门狗,同时对相关变量进行初始化,执行完之后跳转到main函数

    CCS会自动将main函数地址放在_c_int00_xx 函数中,实现自动跳转

    RESET                   : origin = 0xYYYY, length = 0x0002

    如果你是想自己做bootloader,需要考虑复位向量的重新映射

  • 我的确想自己做一个bootloder,,就是现在这块修改CMD文件比较麻烦,bootloder程序的RESET: : origin = 0xFFFE, length = 0x0002是这个,在IAR中_c_int00_xx 函数地址可以是确定的,在CCS中就需要重新映射?

  • 我的意思是APP中断向量需要重现映射, bootloader的中断向量地址不需要更改,Bootloader的reset地址默认就是 RESET: origin = 0xFFFE, length = 0x0002

    你APP的reset地址需要自己定义,APP也有自己的_c_intoo_xx,这个函数的地址是直接对应到你APP分配的reset地址上的

  • bootloader程序我已经写好了,以前在IAR中运行没有问题。我也知道在bootloader中RESET地址不用改变,在CCS中如何定义APP的RESET的地址?IAR中可以说APP的RESET地址固定,而CCS是非固定的。

    以前在IAR中可以直接运行:((void (*)())0x5C00)();   就可以运行我的APP,在CCS中,这个地址是不固定的?

  • 参考我之前的回答

    app 的CMD,需要重新分配 RESET 地址 比如 RESET                   : origin = c, length = 0x0002

    那么0xF2FE就存放着APP的程序起始地址,也就是说0xF2FE内存单元存放着_c_intxxx的函数地址.

    在bootloader中, 定义 #defined APP_RESET 0xF3FE

    使用 ((void (*)()) (*APP_RESET))(); C语句就可以从bootloader跳到APP运行.

    你可以使用一个LED闪灯程序测试