本人最近在做一个关于28377D的SCI在线升级功能。由于条件受限,没办法把GPIO72和GPIO84引脚引出来做控制,因而不使用芯片自带的BOOT功能。具体实验方法是:
1. DSP使用FAPI的函数,擦除FLASH上的数据;
2. 上位机通过串口把HEX的程序数据传输给DSP,DSP使用FAPI函数把所有的数据都烧录到对应的flash区块中;
3. DEBUG下点击CCS上的复位功能,复位芯片;
4. 单步运行,发现程序跑飞了;
排查过程:
1. 使用Memory->Save Memory,分别存储了使用在线升级和使用烧录器这两种方法下载程序到flash对应的memory数据;
2. 使用beyondcompare软件比对2份memory数据,发现2份数据一致,说明在线升级的数据与使用烧录器烧录的数据和地址都是一致的;
如果2种方法烧录的数据一致,那为什么使用FAPI烧录程序后会导致程序跑飞呢,是不是还需要烧录别的东西呢?请有相关经验的大佬指教一下,谢谢!
Green Deng:
这个。。。你这种FlashAPI+SCI Boot的升级方法说实话还真没见到过,虽然没觉得有什么问题,但总感觉有点奇怪。
程序能单步运行的话,你的程序具体是执行到哪一句代码的时候发生跑飞的?
另外,F28377D芯片有一个将boot引脚替换为其他引脚的方法不知道你是否需要了解一下?不过这个方法是要写入芯片OTP的,也就是说一次写入之后就无法擦除,以后这块芯片都必须使用这两个引脚作为boot引脚了。