共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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |