|

楼主 |
发表于 2024-8-24 01:46:51
|
显示全部楼层
嗯就是首先锁定问题:如果升级的过程中没有crc检查的话,image B->A这个过程是可以正常过并且跳转到image A正常跑。如果带上CRC检查,image B->A就一定会卡在升级结束前的crc检查里头,并且卡在固定位置SPI2_error_handler.可是系统里SPI2当时并没有被enable,所以怀疑是类似野指针这种感觉。然后打开汇编仔细看了一下,感觉唯一能让系统跑飞的也就这句了。
> MOV r0,#0xfe14
> MOVT r0,#0x803
> LDRH r0,[r0, r2, LSL, #1]
然后就想着绕开从flash立即数直接取值,先让数据在寄存器里头绕一圈。然后就加的volatile。
不知道怎么加图片。。st论坛里我也post一个帖子,链接是这个https://community.st.com/t5/stm3 ... /m-p/710508#M258315
那边放了当时assembly的截图
|
|