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.
另外我我想问下,我二次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)