共2条
1/1 1 跳转至页
NandFlash 求教:关于NandFlash文件系统读写问题
问
我遇到了一个奇怪的问题,怎么也找不到问题出在哪里?
我的开发板CPU 是S3C44B0,操作系统是Uc/OS-II,NandFlash 用的是K982808。我移植了周立功的文件系统。在主任务中对NandFlash进行格式化然后在FLASH 盘里创建一个文本文件,并往文件里写入一些东西。再运行U盘程序,发现东西已经写到FLASH盘里,没有问题。但是如果我复位开发板或者断电后再通电,再进入U盘看就发现我先前创建的文本文件还在,但内容已经被清空了,好像文件内容被清空跟格式化有一定关系,也就是说紧随格式化后写入的东西在复位目标板以后就会被清空,(但文件的大小不变),如果格式化FLASH盘和写文件分两次运行的话,写入的东西在复位后不会被清空。
哪位大侠知道问题所在,望不吝赐教! 答 1: 文件没有写入可能是文件在缓冲里面没有写到NF上。 答 2: RE:zhiwei不是呀!我进入U盘,发现文件已经在U盘里了,都有内容的,应该是写进NF了呀,但是一复位就被清空了,清空后的文件SIZE不变的.如果再次写入,再次复位,就不会被清空了. 答 3: 你用的是什么文件系统如果是FAT文件系统的话文件信息记录在目录项里面,文件链表在FAT区,文件数据在数据区。写文件的时候好像是先写文件记录目录项,再写数据,写一簇更新一下FAT。由于文件数据一般都比较大,而且写得慢,所以需要设置缓冲区,缓冲区在RAM里面,如果数据没有来得及存进NF就会出现数据丢失的情况。
以上是我做U盘时对Windows写文件的理解以及我自己编写的固件的操作方法,没有了解uCOSII是怎么搞的。也不知道它用什么样的文件系统所以,,, 答 4: RE zhiwei我用的是FAT12,本来我是用FAT16格式化U盘的,但是后来用串口输出簇数,发现还是FAT12格式,后来就用的FAT12。跟uCOSII没有关系,因为我在BootLoader里实现U盘,创建文件并写入东西,复位后结果是一样的。
您说的数据存在内存缓冲区的问题没错,我移植文件系统的过程中发现过缓冲区操作问题,只有在所有文件都关闭或者缓存里所有项都被写过东西(没有空闲缓存)的时候才会把缓存里的东西写入NF。但是我用别人做过的格式化函数进行格式化,就没有出现我的问题,但我总觉得别人那个格式化函数有些问题。我会继续做试验,看问题最终出在哪里?
我的开发板CPU 是S3C44B0,操作系统是Uc/OS-II,NandFlash 用的是K982808。我移植了周立功的文件系统。在主任务中对NandFlash进行格式化然后在FLASH 盘里创建一个文本文件,并往文件里写入一些东西。再运行U盘程序,发现东西已经写到FLASH盘里,没有问题。但是如果我复位开发板或者断电后再通电,再进入U盘看就发现我先前创建的文本文件还在,但内容已经被清空了,好像文件内容被清空跟格式化有一定关系,也就是说紧随格式化后写入的东西在复位目标板以后就会被清空,(但文件的大小不变),如果格式化FLASH盘和写文件分两次运行的话,写入的东西在复位后不会被清空。
哪位大侠知道问题所在,望不吝赐教! 答 1: 文件没有写入可能是文件在缓冲里面没有写到NF上。 答 2: RE:zhiwei不是呀!我进入U盘,发现文件已经在U盘里了,都有内容的,应该是写进NF了呀,但是一复位就被清空了,清空后的文件SIZE不变的.如果再次写入,再次复位,就不会被清空了. 答 3: 你用的是什么文件系统如果是FAT文件系统的话文件信息记录在目录项里面,文件链表在FAT区,文件数据在数据区。写文件的时候好像是先写文件记录目录项,再写数据,写一簇更新一下FAT。由于文件数据一般都比较大,而且写得慢,所以需要设置缓冲区,缓冲区在RAM里面,如果数据没有来得及存进NF就会出现数据丢失的情况。
以上是我做U盘时对Windows写文件的理解以及我自己编写的固件的操作方法,没有了解uCOSII是怎么搞的。也不知道它用什么样的文件系统所以,,, 答 4: RE zhiwei我用的是FAT12,本来我是用FAT16格式化U盘的,但是后来用串口输出簇数,发现还是FAT12格式,后来就用的FAT12。跟uCOSII没有关系,因为我在BootLoader里实现U盘,创建文件并写入东西,复位后结果是一样的。
您说的数据存在内存缓冲区的问题没错,我移植文件系统的过程中发现过缓冲区操作问题,只有在所有文件都关闭或者缓存里所有项都被写过东西(没有空闲缓存)的时候才会把缓存里的东西写入NF。但是我用别人做过的格式化函数进行格式化,就没有出现我的问题,但我总觉得别人那个格式化函数有些问题。我会继续做试验,看问题最终出在哪里?
共2条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
| 【分享开发笔记,赚取电动螺丝刀】墨水屏文本显示器被打赏¥25元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取磁力计iis2mdc被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取LPS22HH气压、温度被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取STTS751温度被打赏¥17元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX软件读取HTS221温湿度被打赏¥22元 | |
| M5PAPERESP32EINKDEVKIT评测|使用MicroPython开发M5Paper被打赏¥15元 | |
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
我要赚赏金
