当前位置:  技术问答>linux和unix

问个nand flash分区表的问题

    来源: 互联网  发布时间:2015-12-11

    本文导语:  偶的nand flash分四个区,分别是vivi,kernel,root,user  在vivi里面可以读出分区表  可是进入控制台后,用fdisk -l看不到分区信息  在内核启动的时候也读不出分区表,提示说放分区表那块是坏块  偶就纳闷啊,都是同...

偶的nand flash分四个区,分别是vivi,kernel,root,user 
在vivi里面可以读出分区表 
可是进入控制台后,用fdisk -l看不到分区信息 
在内核启动的时候也读不出分区表,提示说放分区表那块是坏块 
偶就纳闷啊,都是同一个地方,为啥vivi就能读出来,而内核却说那块是坏快呢 

另外再问个问题 
在PC上,硬盘的分区是 /dev/hda1 /dev/hda2 …… 

请问在nand flash上,分区又是什么呢? /dev/??? 
我看到sd卡的是 /dev/sda1 

|
LZ可以用以下四个步骤来实现:
1.理解USB协议,LZ要开发的是一个usb client设备,就是所谓的固件程序,可以参阅USB固件开发相关的书来深入理解USB协议,也就是可以实现第一个功能,让你的PC机出现"已发现新硬件"之类的提示
2.理解USB中的MASS-STARAGE协议,也就是所谓的U盘所使用的协议,主机端的协议都由操作系统所提供了,比如WINDOWS与LINUX都带有U盘设备驱动程序.这一步就需要深入理解USB中MASS-STARAGE协议,也可以参阅一些USB固件开发方面的书,实现了这一步,就会在PC端看到"驱动已安装,你可以使用该设备了"之类的提示
3.理解一种文件系统,比如在WINDOWS上所支持的U盘,一般都要求U盘上能理解FAT16(或者FAT32)文件系统,主机端识别到设备一是个U盘时,当用户通过read函数操作U盘上的文件,实际上最终由驱动转识别相应的文件系统,发出对实际物理扇区的读写要求,所以固件程序就需要理解FAT文件系统的组织方式,这也是一种最常用的组织方式,如果是在LINUX上,LINUX主机还会识别N种文件系统,包括EXT2/EXT3等,这个时候,你的固件程序可以做成非FAT文件系统,到这一步,会出现冲突,如果你的固件程序是写在设备上所运行的LINUX系统之上,而此系统上又是按YAFFS或者是CRAMFS之类的文件系统格式,就很麻烦了,你的程序需要充当FAT与YAFFS之间的转换功能,这几乎无法实现,所以这一步,你完全可以在设备LINUX程序中申请一块内存,来虚拟FAT文件系统,从而完成主机端发过来的关于物理扇区方面的读写请求,到这里,你需要深入理解FAT文件系统,完成这一步之后,就会在主机端看到你所虚拟出的文件或者目录了
4.真正完成实用的功能:由于你在设备端是运行在LINUX上,所以无法直接按物理扇区操作设备,就需要在你的LINUX上实现一个驱动,然后再写一个应用程序,那个应用程序首先实现USB协议,让主机端出现"已发现新硬件",接下来再实现MASS-STARAGE协议,让你的PC端出现"已安装完驱动程序",然后再实现主机端发过来的按实际物理扇区读写的要求,把这种要求结合驱动操作实际的存储器,这一步,要深入理解驱动程序,存储器,文件系统组织方式,说起来容易,做起来太难了!!!!!

最后,如果你想要让你的板子上运行LINUX,又要让它当作一个U盘的话,难度是可想而知的!!!!如果仅是为了实现功能,可以提供两种方案给LZ参考:
1.让你的设备不运行LINUX,而是直接用ADS之类的开发平台开发一个小型固件程序,就相当于做一个你普通U盘上所运行的小程序一样,那个程序在专业上被称为"固件",这方面的开发书籍也有,可以参照着做一个,最终你的设备就是一个U盘,你可以让你的设备当作两种系统,在某种情况下运行操作系统,在另一种情况下就作为U盘,比如设一个跳线,用硬件的方式让你的程序进入两个流程,比如你的程序在最初运行时就去判断某个IO,如果为高位,就启动固件程序,反之则启动VIVI BOOT之类,从而进入到LINUX
2.让你的设备不通过MASS-STARAGE协议,在主机端另外实现一个驱动与一个应用程序,自己设定一个协议,类似于你最初的设想,主机端应用程序点击某个按钮的时候就向下发出一个命令,而设备端响应这个命令,把数据传给主机端,在主机端的主要工作就是实现一个应用程序,将用户的需求转换成自己的一套协议,再实现一个USB主机端驱动,把基于这套协议下的数据请求通过USB协议向下传递,而在设备端实现一个应用程序与一个驱动,驱动主要与主机端的USB协议通信,完成收发数据,而应用程序就完成将原始数据翻译成自己的协议,进行操作,比如主机发出一个请求根目录下所有目录,此时在设备端就把这个命令解析出来,然后利用LINUX下的函数,扫描出根目录下的所有文件,再封装协议,把这些数据交给USB驱动,向主机端发送回去就OK了!!!!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • nand flash 驱动问题
  • u-boot和nand flash的一些问题
  • NAND FLASH一半区域全坏块的奇怪问题
  • nand有很多坏块的问题
  • nand flash坏块检测问题
  • 关于从nand flash启动的小问题~~~~
  • freescale 的imx51 nand问题 K9LBG08U0D
  • 为什么nand上的fat分区总是出错呢 iis7站长之家
  • 怎么解决无法写nand flash的问题???
  • yaffs2和MLC 4G nand flash驱动问题
  • nand flash坏块处理的问题
  • NAND FLASH读写的问题
  • YAFFS文件系统管理NAND FLASH空间问题
  • 对s3c2410上nand flash时序的一些问题
  • 移植Linux2.6到S3C2410,关于vivi添加Nand Flash驱动的问题?
  • u-boot nand读写问题
  • uboot && nand flash 问题,初学,大家指教。
  • UBOOT中添加CFG_CMD_NAND出现问题?
  • 再问uboot下nand flash 读写问题
  • 请教U-Boot nand/nand_legacy中,宏CFG_MAX_NAND_DEVICE、NAND_MAX_FLOORS 、NAND_MAX_CHIPS 的意义
  • linux nand driver
  • NAND的高低贵贱之分
  • NAND的ECC uboot与内核不一致怎么办
  • 移植nand flash驱动,mount 出错
  • nand flash驱动
  • uboot 移植到 mini2440 支持从 nand flash 启动
  • 如何消除nand坏块
  • CPU在读NAND FLASH时会访问每个page的校验区吗?
  • 板子上的NAND FLASH使用后出现逻辑坏块是何原因
  • VC6怎样读取Nand Flash 中的数据?
  • NAND 启动 与 NFS启动的区别是什么


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3