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.
在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闪灯程序测试