当前位置: 技术问答>linux和unix
如何修改linux系统自带mtd驱动的情况下支持2G nandflash
来源: 互联网 发布时间:2016-10-23
本文导语: 硬件平台:S3C6410 2GNANDFLASH就是由两个1G的叠在一起的,需要用到两个片选 驱动默认是1个片选, 现在的情况是,我单独读取这两个NAND的ID都能读到了~ 问题:1,不清楚LINUX MTD下面的NANDFLASH驱动中是通过什么来判断...
硬件平台:S3C6410
2GNANDFLASH就是由两个1G的叠在一起的,需要用到两个片选
驱动默认是1个片选,
现在的情况是,我单独读取这两个NAND的ID都能读到了~
问题:1,不清楚LINUX MTD下面的NANDFLASH驱动中是通过什么来判断我要操作的文件大小,然后读到哪个扇区的。。。
static int nand_read(struct mtd_info *mtd, loff_t from, size_t len,
size_t *retlen, uint8_t *buf)
{
2,如果我想支持2G NAND 是不是也非得再写一个NAND驱动呢?
2GNANDFLASH就是由两个1G的叠在一起的,需要用到两个片选
驱动默认是1个片选,
现在的情况是,我单独读取这两个NAND的ID都能读到了~
问题:1,不清楚LINUX MTD下面的NANDFLASH驱动中是通过什么来判断我要操作的文件大小,然后读到哪个扇区的。。。
static int nand_read(struct mtd_info *mtd, loff_t from, size_t len,
size_t *retlen, uint8_t *buf)
{
2,如果我想支持2G NAND 是不是也非得再写一个NAND驱动呢?
|
可是我还是有问题:
1,我的驱动中nand_select_chip全部都是直接break;返回的,真正都是用chip->cmdfunc(mtd, NAND_CMD_READ0, 0x00, page) 这个来给硬件发送commond的对硬件CE进行使能等操作,那如果用同一个驱动 那是不是我只要在写的时候chip->cmdfunc第2个CHIP即可吧
Answer:忘记具体的实现了,但我们做过和你类似的事情,总的原则是保证0~1GB写在第一个NAND,1~2GB写在第二个NAND。既然你的思路没错,就按这个走下去。
2,nand_scan_tail函数是建立坏块表的,里面有大量的chip->cmdfunc函数调用。。。(目前我们chip->cmdfunc函数只是针对1块NAND,)如果用一个驱动nand_scan_tail函数我不用处理了?
Answer:第二个NAND也要处理,你完全可以做到
3,这个yaffs文件系统是不是对NAND容量大小有限制的啊?
Answer:我记得是有的,所以我们使用UBI/UBIFS。
1,我的驱动中nand_select_chip全部都是直接break;返回的,真正都是用chip->cmdfunc(mtd, NAND_CMD_READ0, 0x00, page) 这个来给硬件发送commond的对硬件CE进行使能等操作,那如果用同一个驱动 那是不是我只要在写的时候chip->cmdfunc第2个CHIP即可吧
Answer:忘记具体的实现了,但我们做过和你类似的事情,总的原则是保证0~1GB写在第一个NAND,1~2GB写在第二个NAND。既然你的思路没错,就按这个走下去。
2,nand_scan_tail函数是建立坏块表的,里面有大量的chip->cmdfunc函数调用。。。(目前我们chip->cmdfunc函数只是针对1块NAND,)如果用一个驱动nand_scan_tail函数我不用处理了?
Answer:第二个NAND也要处理,你完全可以做到
3,这个yaffs文件系统是不是对NAND容量大小有限制的啊?
Answer:我记得是有的,所以我们使用UBI/UBIFS。