Nand Flash的NFTL转化层实现问题!!!!!
最近在研究NFTL技术,想用nand flash分区制成VFAT格式被XP系统访问,现在nftl.ko已经编好,且已经加载产生了nftla设备,但是提示nftla: unknown partition table. 所以我就有如下疑问:
1. nftla需要什么分区表支持呢? 我现在用的分区表:dos和LDM, 我试过用命令fdisk /dev/nftla可以在内存中分区成功,但是在写分区表的时候就失败了,提示还是nftla: unknown partition table,无法写入。
2. 我的用的分区只有50M,但是在用fdisk /dev/nftla的时候确实1.8G,感觉很茫然!难道是fdisk命令的BUG???
有前辈了解这一块的请请指点,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
没有人关注啊!!!!
不知道LZ是否仔细看过内核关于NFTL的说明、这个东西是有专利的、在非DiskOnChip产品上是不能够使用的。
代码里面也有限制、具体是在/drivers/mtd/nftlcore.c的nftl_add_mtd函数中
复制代码如果你的环境满足条件的话,每一个的mtdblockX设备都会在/dev下面有nftlX设备。对nftlX设备的访问就相当于透过NFTL层访问对应的mtdblock设备。
如果想要在非DiskOnChip上使用可以暂时屏蔽这段代码。不过我对NFTL也不了解、不清楚其他地方是不是还有别的限制。
I2y3n2,这个是有专利,专利主要搞大公司,是大公司的垄断!现在很少看到有一个跨国公司和小公司搞专利官司的
我也正在研究这一块,请问楼主有没有遇到这个问题:
could not find valid boot record.
NFTL: could not mount device
需要修改什么地方啊?
本帖最后由 zglore 于 2012-10-23 10:24 编辑
在非M-Systems DiskOnChip devices NAND controller时,要使用NFTL时要注意三点:
1, NAND MTD分区时,一定要有个名为DiskOnChip分区,也可以在driver/mtd/nftlcore.c中注释掉只使用DiskOnChip分区作NFTL。(#13)
2, 再者就是在识别了NFTL分区后,把MTD分区挂载成NTFL分区时要读取MediaHeader, 一般的NAND 预先是没有的,所以要自动挂载成功,就要往里面写必要的MediaHeader结构体信息, 下面是我的参考代码:
复制代码3, 挂载成功后,发现dev下有NFTL设备了,但是不能分区及读写, 其实是因为NFTL源码太老了而且兼容性做得不好, 原因有三:
1), 只支持NAND pagesize 为512大小的, 且假定pagesize 与SECTORSIZE大小一样。
2), nftlcore.c 是SECTORSIZE固定为512, 而且没有用宏。
3), nftlcore.c 中的nftl_write()函数中有一个BUG, ops.ooboffs = offs ->ops.ooboffs = offs & (mtd->writesize - 1); 在最新版本 Linux里已经fix了.
我最终的解决方法是, 把SECTORSIZE 定义为2k, 同我用的NAND的Pagesize一样。如果这二者不一样的话,就要改不少的源代码了。