开发的产品用到 SmartFusion2 的FPGA 型号 M2S010,这个FPGA芯片内部自带硬核 Cortex®-M3,并且M3可以直接内部链接FPGA资源,这样对于需要灵活分配引脚功能,增加自定义FPGA硬件加速算法模块,添加N多路TIM,UART,SPI等等外设是非常好用的,唯一不好的就是比较贵。。。。
最近做的东西要卖到国外,国外客户要对我们的产品进行二次开发,由于没有给产品加入在线升级功能,导致后来双方协同开发不太愉快,每次程序需要修改都要寄一次新硬件,浪费时间不说,还让客户对我们的产品产生了不好的印象,总之老板不高兴,客户也不高兴了,锅当然是要甩给我们开发部的。。。
原先以为ISP IAP在线升级功能挺简单,用STM32芯片多年了,对在线升级已经轻车熟路,M2S010虽然多了个FPGA,但是内核跟STM32是一样的,依葫芦画瓢即可。因此按照老套路添加读写内部FLASH的程序,运行中的程序接收新程序,然后擦除自身,再写入新程序,写完程序,DEBUG,OK,搞定收工。
谁知道,这货芯片有个特性,只要芯片没有加密锁定,按照STM32来说就是还在调试状态,没有进行读保护的时候是可以按照stm32的方式进行升级的,但是如果这个芯片加了读保护,也就是加密后,就不能简单的这样处理了,因此按照stm32的套路进行升级是会失败的。
后来仔细研究M2S010的芯片手册和Libero 编译器的帮助手册,才知道这芯片需要在线升级程序的话,需要通过芯片自身提供的内核服务函数来进行,也就是 mss_sys_services.c 这个文件内的
uint8_t MSS_SYS_initiate_iap
(
uint8_t mode,
uint32_t bitstream_spi_addr
);
void MSS_SYS_start_isp
(
uint8_t mode,

使用SmartFusion2的M2S010 FPGA进行在线升级时,需注意其特殊模式限制及升级函数使用。文章分享了升级过程中遇到的五大陷阱,包括时钟源选择、FlashFreeze模式下的外设限制等。
最低0.47元/天 解锁文章
9956

被折叠的 条评论
为什么被折叠?



