Other Parts Discussed in Thread:C2000WARE
按照《TMS320F28004x Flash API Reference Guide》中的操作说明能正常进行FLASH的写或擦除操作,下图1已将数据正确的写入指定的FLASH地址0x96000。
利用地址进行FLASH的读取操作时出现了问题(图2),现象是FLASH数据已经读出到缓存变量,但是程序运行异常,跳转到了不可屏蔽的中断位置。请问我的读操作问题在哪里?谢谢。
图1:
图2:
Green Deng:
你好,有两点可以参考一下:
1、Flash初始化代码必须放到RAM中执行,否则就可能出现NMI_ISR
2、flash操作前调用了SeizeFlashPump();,操作完后要调用ReleaseFlashPump();否则下次运行就会异常
另外,这个链接中也有进入NMI中断的说明,你可以参考一下:processors.wiki.ti.com/…/C2000_Flash_FAQ
,
Aiden zhang:
谢谢你的关注:
1、我的FLASH初始化代码是在RAM中执行的,我对一个地址多次执行写-擦除-写-擦除都是正常的(CCS监控FLASH数据)。只是读操作出现异常。
2、SeizeFlashPump();这个函数接口是在哪里?我在《TMS320F28004x Flash API Reference Guide》里没找到相关的描述。在哪里有相关的说明?
,
Aiden zhang:
有没有280049 FLASH读写操作的相关的例程给我看看啊。谢谢。
,
Green Deng:
可能我看错芯片了,SeizeFlashPump();是F28377D的,抱歉。
flash读写操作的例程你可以参考这个位置的几个例程:C:\ti\c2000\C2000Ware_3_02_00_00\driverlib\f28004x\examples\flash
,
Aiden zhang:
谢谢你的回复。仔细看了C:\ti\c2000\C2000Ware_3_02_00_00\driverlib\f28004x\examples\flash下的几个历程,总结了几个问题,还希望你能耐心解答:
目录下一共包含4个关于FLASH的操作的工程:
1、flashapi_ex1_program_autoecc;2、flashapi_ex2_sciKernel;3、flashapi_ex3_liveFirmwareUpdate;4、flashapi_ex5_lfu_no_reset;
他们对FLASH的初始化基本一致,都调用了三个函数接口:
1、
、
2、3、
我的问题列表如下:
1、第一个函数接口Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES);在哪里有详细的说明,在《TMS320F28004x Flash API Reference Guide》中也看到使用,但是没有对应的说明。
2、第一个函数接口Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES);在使用的注释中明确提到要运行在RAM内,但是我在4个例程内都没找到这个函数被定义到RAM内执行。
3、第二、三个函数接口是否需要在RAM内执行(或者说fapi_的接口函数哪些需要运行在RAM,是否都要运行在RAM),
仔细查看4个工程,你会发现工程1flashapi_ex1_program_autoecc把操作FLASH的接口定义到RAM内执行:
#pragma CODE_SECTION(Example_CallFlashAPI, ".TI.ramfunc");
但是其他三个工程却没用这样做。
如果你觉得我的问题有描述不清楚的地方,请直接告诉我。如果暂时不能回到,也请直接告诉我,我能理解。不要给我一些模棱两可的信息,这样很容易误导我,浪费时间。
另外,我上一问题在你提供的链接中找到了答案。我的写操作没有同时写入ECC,默认ECC是使能的,所以读取操作时直接跳入了不可屏蔽中断。谢谢你。
,
Green Deng:
确实没找到更多关于F280049的FLASH API的更多资料,这方面的问题建议直接去英文E2E论坛上发帖咨询,会有专司于flash API方面的工程师为您解答。e2e.ti.com/…/171
,
Aiden zhang:
谢谢。
,
user6453490:
这个要把ECC使能关闭吗?
,
Aiden zhang:
关掉ECC使能是可以的。
你也可以在写操作时选择Fapi_AutoEccGeneration方式进行写。
,
user4396201:
28004x作为28035的升级版,资料又少,FLASH API也是大变,根本就不利于移植,不知道官方出于什么考虑。
本来想把28035移植过来,发现很多东西都要大改,累死。
,
user4675816:
不是少,是完全没有啊,寄存器配置的手册找了一个月无果,你怎么用的啊。
,
Aiden zhang:
就是参考《TMS320F28004x Flash API Reference Guide》和《TMS320F28004x Piccolo Microcontrollers Technical Reference Manual_RevC》这两份手册。