聊聊 Microsemi SmartFusion2 系列FPGA SOC芯片 ISP IAP 在线升级中的一些大坑

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

开发的产品用到 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,
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值