在使用28335 FLASH API进行扇区擦除或者烧写的时候会意外进入非法中断或程序跑飞,检查后发现了两个问题
1.未修改InitFlash函数内FlashRegs寄存器,修改该寄存器以适配FLASH操作时序
2.程序在FLASH运行时正常,在RAM运行不正常,两者的差异主要在于程序搬运,我是通过一个宏定义实现的。
但是宏定义修改后依然会进入非法中断,检查CMD文件,发现运行在RAM区的CMD文件有如下几行
在RAM运行FLASH API时无需搬运,将这几行修改为如下格式即可
举一反三:使用在线调试需要运行在RAM的程序时,需要修改RAM.CMD,禁用LOAD以及RAN等语句,因为程序本来就在RAM内,重新指向会导致代码紊乱。在FLASH运行需要运行在RAM的程序时,需要在FLASH.CMD内指定搬运地址,并在初始化时将响应函数搬运到RAM内运行
DSP28335 使用FLASH API进入非法中断的一种处理方式
最新推荐文章于 2023-11-29 16:12:57 发布