嵌入式开发者社区

标题: STARTWARE NANDFLASH读写 [打印本页]

作者: ThirstyBoyEager    时间: 2016-8-19 16:10
标题: STARTWARE NANDFLASH读写
我想知道例程中nandflash最后读写到那个内存空间,掉电后这块内存空间能不能保存之前写入的数据,如果要实现掉电后仍保存数据并读取出来应该怎么做呢?
求大神指导,现在我实验的内存空间是不能掉电保存的,求大家帮帮我

作者: 希望缄默    时间: 2016-8-19 18:36
例程是需要从串口手动输入写入的地址的啊 肯定可以断电保存啊
作者: ThirstyBoyEager    时间: 2016-8-24 09:38
希望缄默 发表于 2016-8-19 18:36
例程是需要从串口手动输入写入的地址的啊 肯定可以断电保存啊

如果要使用默认地址,断电后要怎么取出来数据呢?rxdata[]里面是空的啊
作者: ThirstyBoyEager    时间: 2016-8-25 09:41
我没有用串口输入块,页和页数,而使用了默认的地址读写
[attach]1316[/attach]

[attach]1319[/attach]

[attach]1320[/attach]

现在这里有个疑问,这是写入数据的内存地址吗?
[attach]1317[/attach]

所以我先定义了这个地址
[attach]1318[/attach]

运行时,memory browse运行时这个地址的数字变化
[attach]1314[/attach]

之后运行完了就变成这样了
[attach]1313[/attach]

最后断电重启以后就是这样
[attach]1315[/attach]



所以我现在疑问是写入的数据的地址是哪里?如果我找对了,那么为什么会产生上面三幅图的这种变化,断电以后数据为什么没有了

作者: ThirstyBoyEager    时间: 2016-8-25 10:46
先执行nandwrite
[attach]1323[/attach]

eccData变为这样
[attach]1327[/attach]

执行nandread
[attach]1324[/attach]
此时没有问题,可以把数据读出来

断电后重启eccData变为这样
[attach]1325[/attach]

执行nandread后变为这样
[attach]1322[/attach]
读不出来之前存入的数据了
为什么啊






作者: 希望缄默    时间: 2016-8-25 13:45
ThirstyBoyEager 发表于 2016-8-25 09:41
我没有用串口输入块,页和页数,而使用了默认的地址读写

NandFlash 没有地址线 不能通过 EMIF 内存映射地址读写
作者: 希望缄默    时间: 2016-8-25 13:48
ThirstyBoyEager 发表于 2016-8-25 10:46
先执行nandwrite

确认操作 首先要正确初始化
NandFlashRxData 即存储读回来数据数组
NAND_DEFAULT_BLK 读取块
NAND_DEFAULT_START_PAGE 读取页
retVal= NANDPageRead(&nandInfo, NAND_DEFAULT_BLK, NAND_DEFAULT_START_PAGE, &NandFlashRxData[0],
       &NandFlashECCData[0]);
if(retVal != NAND_STATUS_PASSED)
{
  UARTPuts(&uart0cfg, "Failed.", -1);
}
else
{
  UARTPuts(&uart0cfg, "Passed.", -1);
}

作者: ThirstyBoyEager    时间: 2016-9-5 19:41
[attach]1393[/attach]
之前的问题解决了,现在出现了EDMA 传输错误,我现在很疑惑,如果我前面用麦克以edma方式来不停地传输数据,后面再将数据保存到nand里面会起冲突吗?这是不是因为这个原因呢?起了怎么解决呢?

作者: ThirstyBoyEager    时间: 2016-9-5 19:52
[attach]1397[/attach]
main函数里面部分
[attach]1396[/attach]

补充:
这是我前面麦克使用的EDMA程序,麦克收发数据是连续不间断的,会不会影响后面的存储进NAND的edma的使用所以报错,如果是要怎么解决呢?

作者: 希望缄默    时间: 2016-9-6 08:59
ThirstyBoyEager 发表于 2016-9-5 19:52
main函数里面部分

检查 EDMA3 通道是否冲突
作者: ThirstyBoyEager    时间: 2016-9-6 10:12
您好,能具体一点吗,具体怎么检查
作者: ThirstyBoyEager    时间: 2016-9-6 15:29
[attach]1399[/attach]
[attach]1400[/attach]我看了一下的确是edma通道冲突了,假设现在我想将通道改为3,除了 EMIFA_EDMA_CHANNEL_NUM改为3以外,另外2个变量要怎么改,或者说我还需要改什么地方

[attach]1398[/attach]







欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4