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.

TMS320F280025: TMS320F280025 bootloader hex文件生成有误和OUT文件以及debug时CCS中flash中的数据不相同

Part Number: TMS320F280025

在做这个芯片的BOOTLOADER,使用上位机下载hex文件,突然发现debug时,flash中的数据和生成的hex文件中的内容不相同。

  • dug 的时候应该是显示ECC数据的。hex中只是data数据

  • flash中的数据是什么?

  • 问题找到了,ccs默认生成的hex文件是分为两个文件的,还有一个.i的文件,两个文件结合到一起就是最终的boot loader需要烧录的数据。

  • 另外我我想问下,我二次bootloader更新了flash程序以后,我用这个asm("    LB 0x086000");直接跳转到app。然后如果从APP跳转到BOOTLOADER就用asm("    LB 0x080000");,没有做看门狗复位,这样可以吗?还有就是这个ram需要初始化吗?

  • 另外我我想问下,我二次bootloader更新了flash程序以后,我用这个asm("    LB 0x086000");直接跳转到app。然后如果从APP跳转到BOOTLOADER就用asm("    LB 0x080000");,没有做看门狗复位,这样可以吗?还有就是这个ram需要初始化吗?

  • 没有做看门狗复位,这样可以吗?

    这个取决于bootloader和app中的喂狗逻辑。如果想让这个逻辑简单一点的话,最好是复位一下;

    还有就是这个ram需要初始化吗?

    不太明白这里说的初始化是什么意思。需要初始化的东西在编译的时候就已经完成了。

  • 我的逻辑bootloader逻辑是按照UDS的来做。APP升级的时候,先下载了flashDrive,然后下载APP数据。更新完成以后,使能看门狗,不喂狗引起复位。复位后程序还是运行到bootloader程序,然后通过读取flag标志位和CRC校验,跳转到APP,指令asm("    LB 0x086000");

    第二个过程APP跳入BOOTLOADER;APP程序中有看门狗且定时喂狗。接收到跳转指令以后,就通过指令asm("    LB 0x080000");直接跳走,不看门狗复位。我想问下这个过程可以嘛,第二个问题就是ram中的数据需要重新初始化归零嘛,我看官方提供了一个函数。void HAL_clearDataRAM(void *pMemory, uint16_t lengthMemory)