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.

F28377D的bootloader运行跑飞



你好,
我写了一个bootloader,使用spi-flash实现在线升级,bootloader放在sectorB-C,APP放在sectorE-J,内部flash读写使用ti提供的库,升级是通过ccs的hex2000工具转换而来。
目前实现的流程:

主函数接收到升级文件后存入spi-flash,然后暖启动重新进入bootloader;

进入bootloader的实现流程如下:首先是时钟 spi以及内部flash等的初始化,然后初始化FLASH API,擦除内部flash

①相关外设初始化,包括禁看门狗,禁中断等→②初始化Flash api→③擦除内部flash→④从spi-flash读取本次升级文件的长度→⑤读取存入spi-flash的文件,并依次写入内部flash

问题:

第一次升级没有问题;

当进行第二次升级时,bootloader虽然会被调用,但会跑飞(),而且发现同样一个函数,如果单步运行,没有问题,而一旦全速运行,这个函数还没执行完就已经跑飞了;

下一次重新用仿真器烧录程序后,同样的也是第一次没问题,第二次跑飞。

当然如果bootloder中取消第三步和第五步,不管怎么运行都没有问题。

起初怀疑是不是bootloader这段代码被修改导致,但对比内存中的这段代码,并无任何差异。

请问一下:
①用仿真器烧录程序和单板重新上下电或者暖启动 对dsp而言有什么去区别?
②造成bootloader跑飞的可能原因有哪些?