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.

TMS320F280049C: F280049 bootloader 升级后不能复位

Part Number: TMS320F280049C
Other Parts Discussed in Thread: LAUNCHXL-F280049C

你好专家︰

最近在参考这篇文章在做F280049的二次bootloader。 开发版是用LAUNCHXL-F280049C评估板。

https://www.ti.com.cn/cn/lit/an/zhcadf7/zhcadf7.pdf?ts=1714136546245&ref_url=https%253A%252F%252Fwww.google.com%252F


我跟据了文章中指Bootloader和 APP Code的flash要分开,flash地址上没有重叠。也跟据了文章中提出Bootloader和 APP Code的entry point要分开(Bootloader的入口地址为0x80000,F280049 default entry point,App Code 我選用了 0x85000)
升级的过程也顺利,Bootloader能够利用Flash API成功写入需要升级的App code和成功跳进App code的地址( 0x85000) (App code我是使用闪灯的程序),成功運行App code (闪灯)

问题就是,当每一次顺利升级后,F280049不能复位回至bootloader 的程序,而是复位后会回到App code的程序。我曾经尝试用lanuchpad上的reset键和在App code 里用看门狗复位也都只会复位回到App code (闪灯)。只能把lanuchpad断电后重新上电,F280049才会回到boot loader 程序。

我理解如果reset后(0x3FFFC0)F280049起机应该会回到0x80000地址运行bootloader 的程序,但不知道为什么结果会是运行App code。

不知道是否

1. 复位后能进入bootloader 程序,但程序依旧卡左上次跳进App code的地址的位置以致进入了App code
2. 不能成功复位

附上bootloader .cmd档案

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
MEMORY
{
PAGE 0 :
/* BEGIN is used for the "boot to Flash" bootloader mode */
BEGIN : origin = 0x080000, length = 0x000002
RAMM0 : origin = 0x0000F6, length = 0x00030A
RAMGS0 : origin = 0x00C000, length = 0x002000
RAMGS1 : origin = 0x00E000, length = 0x002000
RAMGS2 : origin = 0x010000, length = 0x002000
RAMGS3 : origin = 0x012000, length = 0x001FF8
RAMLS0 : origin = 0x008000, length = 0x000800
RAMLS1 : origin = 0x008800, length = 0x000800
RAMLS2 : origin = 0x009000, length = 0x000800
RAMLS3 : origin = 0x009800, length = 0x000800
RAMLS4 : origin = 0x00A000, length = 0x000800
RESET : origin = 0x3FFFC0, length = 0x000002
/* Flash sectors */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

和app code 的 .cmd档案

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
MEMORY
{
PAGE 0 :
/* BEGIN is used for the "boot to Flash" bootloader mode */
BEGIN : origin = 0x085000, length = 0x000002
//FLASH_BANK0_APP : origin = 0x085002, length = 0x002FFE
RAMM0 : origin = 0x0000F6, length = 0x00030A
RAMLS0 : origin = 0x008000, length = 0x000800
RAMLS1 : origin = 0x008800, length = 0x000800
RAMLS2 : origin = 0x009000, length = 0x000800
RAMLS3 : origin = 0x009800, length = 0x000800
RAMLS4 : origin = 0x00A000, length = 0x000800
//RESET : origin = 0x3FFFC0, length = 0x000002
/* Flash sectors */
/* BANK 0 */
//FLASH_BANK0_SEC0 : origin = 0x080002, length = 0x000FFE /* bootloader use */
//FLASH_BANK0_SEC1 : origin = 0x081000, length = 0x001000 /* bootloader use */
//FLASH_BANK0_SEC2 : origin = 0x082000, length = 0x001000 /* bootloader use */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

谢谢!