刚学用 EMIFA 不过C6455的库给的例子试跑和调试看映射到板子的内容对不对!不过看例子根本没进行读写。调试后:Sync Read Write is NOT Successful
Reason:Error in data read.[status = 0x1]
查一下:
tempData = 0xdeadbeef;
for (index = 0; index < DATA_CNT; index++) {
pAsyncData[index] = tempData;
}
和
tempData = 0x55550000;
for (index = 0; index < DATA_CNT; index++) {
pAsyncData[index] = tempData + index;
}
根本没有给存储器地址:0xB0000000 赋值。(再说也不懂为什么里面讲前者是无效,后者是有效。————好奇怪)
/* Verify that the data was indeed written */
result = DATA_MATCH_SUCCESS;
for (index = 0; index < DATA_CNT; index++) {
if (pAsyncData[index] != (tempData + index)) {
result = DATA_MATCH_FAIL;
break ;
}
}——————这语句也就跑了一次 index=0 后就不跑了!说明没进行写好?搞不出是什么原因!
请求帮助!谢谢!
(有待程序文件)
noaming:
你好,你用的CSL中的EMIFA的例子,前面的Asynchronous Read Write is Successful是否成功了呢?
Khoa Sang Nguyen:
回复 noaming:
都没成功!内存没有变化!当 读出来检查也不对:
for (index = 0; index < DATA_CNT; index++) { if (pAsyncData[index] != (tempData + index)) { result = DATA_MATCH_FAIL; break ;
就进行了一次 index=0 就弹出来了!
和这段一直搞不懂为什么:一个有效一个无效
/* Write 'invalid' values into EMIFA CS2 area. This is to overwrite the * previous valid values. */ tempData = 0xdeadbeef; for (index = 0; index < DATA_CNT; index++) { pAsyncData[index] = tempData; } /* Write **valid** values into CS2 area. */ tempData = 0x55550000; for (index = 0; index < DATA_CNT; index++) { pAsyncData[index] = tempData + index; }
本来 tempData 只是一个变量,设为多少是多少。。。怎么跟有效和无效有关呢?
谢谢!
Khoa Sang Nguyen:
回复 noaming:
哦!你这样说那么现在我把配置给了像下面:
hwSetup.asyncWait = &asyncWait; hwSetup.ceCfg[0] = NULL; hwSetup.ceCfg[1] = &asyncVal; hwSetup.ceCfg[2] = NULL; hwSetup.ceCfg[3] = NULL;
那么按理说该是对了啊!但是还是不行的???结果还没写好?你能不能说一下解决方案啊?我用的是C6455DSK板子!很谢谢了!
noaming:
回复 Khoa Sang Nguyen:
你好,如果数据写不进CE3,你可以实际的查看一下CE3的寄存器状态,是否已经处于异步读、写都使能的状态了。
我这个以前是自己配置的寄存器,很容易配的,没用CSL的EMIF库,可以正确的读写FLASH的。
Khoa Sang Nguyen:
回复 noaming:
好的!谢谢你!我在试试看!
Khoa Sang Nguyen:
回复 noaming:
哦!你说的那个CE3的寄存器状态应该是这个吧:
那么根据CE3 配置,它被赋值了!我也是换成CE2还可以这样赋值。所以你将CE2和CE4不匹配我不太懂。要是按同步方法的话:SSEL=1 那么CE3 的值是 0x80000000 .
还有你以前自己配置寄存的是怎么做的!能给我发个程序吗?太麻烦你了!
(是不是按这样设置:EMIFA_Config MyConfigB = { gblctl , cectl0,cectl1, cectl2 , cectl3 , sdctl ,sdtim, sdext , cesec0 , cesec1 , cesec2, cesec3 };…EMIFA_config(&MyConfigA); ???)!!!
noaming:
回复 Khoa Sang Nguyen:
你好,和evm板的flash配套的读写测试程序,在\c6455 evm\dsk6455_v2\boards\dsk6455_v2\examples\test
在这个工程中有TEST_execute(TEST_flash, 3, 0);
其中TEST_flash就是,你可以试试这个程序。
Khoa Sang Nguyen:
回复 noaming:
哦!以前也看过这个!不过太长也没留意过!今天看你说跑过!也看了!运行正常!和 TEST_flash 运行时看了下内存!读写是正常的!那么上面说的EMIFA到底是什么问题呢?暂时我还想不到!请你指点指点!或者你有以前跑好的程序给我参考一下可以吗!谢谢!