This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
按照《TMS320F28004x Flash API Reference Guide》中的操作说明能正常进行FLASH的写或擦除操作,下图1已将数据正确的写入指定的FLASH地址0x96000。
利用地址进行FLASH的读取操作时出现了问题(图2),现象是FLASH数据已经读出到缓存变量,但是程序运行异常,跳转到了不可屏蔽的中断位置。请问我的读操作问题在哪里?谢谢。
图1:
图2:
谢谢你的回复。仔细看了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是使能的,所以读取操作时直接跳入了不可屏蔽中断。谢谢你。