IAP(BOOTLOADER):将OPENBLT移植至GD32F450
因为要做台架和实车试验,用JTAG烧录程序不方便,所以想要开发一个适用于GD32芯片的bootloader。
因为使用的调试设备主要是kvaser,所以想找一个基于kvaser的CAN烧录程序。
经过大概4天的移植调试,基本完成了OPENBLT到GD32F450的移植。
看到APP程序发出的Hello world,感觉身心都得到了极大的满足。
下面将调试过程的一些问题和经验总结下来:
-
IAP DEMO
gd32官方提供了IAP工具,可以在官方的资料库/百度云里找到。通过这个可以很好的理解IAP的作用过程,并且推荐一个B站的视频:STM32的IAP技术,基于CAN总线的STM32F103 BootLoader设计。讲解的非常全面。 -
OPENBLT
openblt是开源的项目,基于xcp协议,Vector公司对其做了支持,支持kvaser工具,并且针对很多款芯片做了demo,包括stm32f4系列。在**vector官网【更正:kvaser官网】可以下载openblt的资源和xcp协议的资料**。
openblt的介绍和移植过程,有一篇知乎介绍的非常好:【BootLoader】OpenBLT 移植记录。
移植过程:
(1)CAN,FLASH驱动开发(当然之前就开发过了);
(2)参考STM32F4系列的DEMO进行移植;
注意:
(1)OPENBLT提供的源码里面主要分成两部分,一部分是与具体芯片无关的协议,逻辑方面的代码,一部分是与芯片相关的代码。如图:core段的代码与芯片无关。
与芯片无关的这个部分逻辑代码最好不要修改,也无需修改。主要改的是BL文件夹中的代码,以及blt_conf.h文件。
note:
(1)#define BOOT_FLASH_VECTOR_TABLE_CS_OFFSET (0x1C0) 该代码是checksum值存放的地方,这个位置要在向量表之后的位置,所以要根据芯片的向量表算一下该存放的位置。我建议这个位置可以放在中断向量表中reservd的中断位置。
(2)static const tFlashSector flashLayout[] = 该代码需要与芯片的flash大小和分布匹配,并且要规划好boot段和app段代码的空间。
其他问题,后续一边完善一边记录吧。