MDK生成bin文件通过USB进行IAP升级时,无法启动

BOOT

更新单片机内的用户程序,方式一般都是仿真器,串口,网络口,usb DFU,另类一点CAN也行,但是这些方式都有一个共同点,必须要有相应的上位机配合操作,这个比较麻烦。
另一种方式是把我们的设备通过USB插入电脑,在电脑上映射出一个磁盘,把升级的.bin文件拷贝到磁盘中,boot把它复制到用户程序区即可。

bin文件生成

  • 通过hextobin.exe程序,这个网上,可以直接把hex文件转换成bin文件。这种生成的bin文件,亲测可以。
  • 通过MDK生成。
    在这里插入图片描述
    点击该工具-user
    在这里插入图片描述

通常用串口IAP时,只需要设置RUN#1即可。例如:
D:/Program Files/keil/ARM/ARMCLANG/bin/fromelf.exe --bin --output ./Obj/LPKJ-000.bin ./Obj/LPKJ-000.axf

但是通过USB升级时,需要RUN#1,RUN#2都进行设置,即先检验再生成bin。例如:
RUN#1 D:/Program Files/keil/ARM/BIN/ElfDwT.exe ./Obj/LPKJ-000.axf
RUN#2 D:/Program Files/keil/ARM/ARMCLANG/bin/fromelf.exe --bin --output ./Obj/LPKJ-000.bin ./Obj/LPKJ-000.axf

网上找到一些分析:
应该是代码有效性校验字节不对,看看芯片UM,关于“Criterion for Valid User Code”的描述,然后修改0x1C处的内容,should contain the 2’s complement of the check-sum of table entries 0
through 6.如果使用串口升级FLASH代码的话就不存在这个问题,因为FLASHMAGIC软件会自动计算0x1C处开始的四字节的内容,修改后写入。

通过测试目前这两种生成的bin都可以使用。

猜你喜欢

转载自blog.csdn.net/wo0007/article/details/84823246