阅读:2287回复:12
从U盘文件读取任意字节的数据的疑惑?大家给点思路!(50分)
看了FAT系统的一些资料,发现对U盘读写,host只是送了一个LBA也就是逻辑块地址和需要读写的块的数目.
假设u盘的每个扇区512字节,那么如果我想从一个扇区的某个位置读取小于512一个字节的数据能办到吗? 有做过类似工作的兄弟给点思路! |
|
最新喜欢:![]() |
沙发#
发布于:2004-04-01 16:41
可以做到的.只要你先找到该数据在文件中FAT区的位置,在到相应的数据区去读取你所需要的数据.最小你可以读取1sector的数据,再取出你需要的数据.
|
|
板凳#
发布于:2004-04-01 18:02
老兄,你没有答对阿?
我的意思就是要读/写小于1个sector的数据阿? 如果我想写1个字节的数据到文件中,总不能事先读出最后1个secotr的数据,然后修改该sector中1个字节的数据,最后写1个sector的数据到U盘阿?这样效率也太低了吧? |
|
地板#
发布于:2004-04-01 18:08
老兄,你没有答对阿? 的确如此,总之你每次读写的数据不会小于一个扇区! |
|
|
地下室#
发布于:2004-04-01 18:28
个位:其实NandFlash读任意BYTE是件很容易的事情,只要区分好A,B,C三个区域就可以啦!!!我给一段我写的可以在任意位置读写NF代码给大家看看,希望能对你们有用。
实例: 从NandFlash 0x0000 中读2字节到数组A[] example: unsigned int A[2]; NF_ReadMultiByte(0x0000,2,A); void NF_ReadMultiByte(unsigned long int dAddr, unsigned int wLen, unsigned int *wrData ) { unsigned int i; F_InitWriteNF(); NF_WaitBusy(); F_WriteCmdToNF((dAddr>>8)&0x1 ); F_WriteAddrToNF(dAddr); //1st Cycle F_WriteAddrToNF((dAddr>>9)&0xff); //2nd Cycle F_WriteAddrToNF((dAddr>>17)&0xff); //3th Cycle F_InitReadNF(); NF_WaitBusy(); for(i=0; i<wLen; i++) { *wrData++ = F_ReadNF(); } } |
|
5楼#
发布于:2004-04-01 18:28
到 我佩服你的精神
|
|
|
6楼#
发布于:2004-04-01 23:08
shaoshengli,SUNSHANXING两位老兄,真是好人阿!帮了我很多阿1真是无以为谢!你们要是在成都的话,小弟做东!废话不说了,给分先了!代码下回去慢慢看!
|
|
7楼#
发布于:2004-04-02 00:59
回复:==============================================
老兄,你没有答对阿? 我的意思就是要读/写小于1个sector的数据阿? 如果我想写1个字节的数据到文件中,总不能事先读出最后1个secotr的数据,然后修改该sector中1个字节的数据,最后写1个sector的数据到U盘阿?这样效率也太低了吧? //================================================= 以上的理解是非常错误的,NandFlash 的写入操作之前必须把整个你要写入的扇区所在的Block擦一次,然后才能写入,也就是说你想改写的单元在你写入之前的内容必须为0xFF,要不然你会写不进去的,或着写进去了也不是你想要的数据. :P [编辑 - 4/2/04 by wxjljl] |
|
8楼#
发布于:2004-04-02 10:31
很高兴大家都这么热心阿!
其实我作的是单片机读写U盘里面的内容,至于U盘里面怎么操作我是不关心的,因为我是host! 所以我想知道对于host可不可以只要求U盘从一个扇区的某个位置送出小于一个扇区字节数的数据给host! 又或者host可不可以只送小于一个扇区字节数的数据到U盘某个扇区的某个位置。 |
|
9楼#
发布于:2004-04-02 11:32
我说了是可以的.前面有位老兄说的只是对FLASH的操作.wxjljl
说的对,FLASH只能这样操作.但这些host端是不要管.先读出最后1个secotr的数据,然后修改该sector中1个字节的数据,最后写1个sector的数据到U盘,就是你说的这样. |
|
10楼#
发布于:2004-04-02 11:39
谢谢楼上的这位仁兄!可惜分已经放完了!呵呵!
感谢驱动网给我们提供的这个平台阿! |
|
11楼#
发布于:2004-04-05 21:00
各位;
用那种单片机和811连接比较容易实现 |
|
12楼#
发布于:2004-04-06 09:50
个位:其实NandFlash读任意BYTE是件很容易的事情,只要区分好A,B,C三个区域就可以啦!!!我给一段我写的可以在任意位置读写NF代码给大家看看,希望能对你们有用。 是不是读了一个扇区,只不过只取了前wLen个字节啊?写操作你又打算怎样做呢? [编辑 - 4/6/04 by dragon_hn] |
|
|