块设备驱动?MTD设备驱动?有什么区别?FLASH驱动属于哪一类?

发布于 2022-09-20 09:34:11 字数 208 浏览 11 评论 0

想写一块NOR FLASH的驱动,看了下LDD3上的块设备驱动开发,又在网上无意中看到MTD设备驱动。

LDD3的块设备中降到了块驱动里要添加DISK结构 ,,如果是一个面向块的NOR FLASH,写个块驱动也要添加这个结构 么?
好像又有人说FLASH驱动属于MTD层次,
源码里DRIVER下面又要MTD,也有BLOCK,该怎么写FLASH驱动呢?按那种方式呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

平定天下 2022-09-27 09:34:12

如果把自己的FLASH驱动写成MTD驱动,我看到MTD下有个chrdev.c,还需要自己写字符设备驱动么?如果写两个冲突不

笔芯 2022-09-27 09:34:12

Flash->MTD

听,心雨的声音 2022-09-27 09:34:12

看了一篇叫住LINUX MTD源码分析的文章,我自己写的FLASH MTD驱动必需放在/drivers/mtd/maps下,还是可以放在任何目录下面

二手情话 2022-09-27 09:34:12

原帖由 lovesunshine 于 2008-7-25 08:51 发表
看了一篇叫住LINUX MTD源码分析的文章,我自己写的FLASH MTD驱动必需放在/drivers/mtd/maps下,还是可以放在任何目录下面

可以放在你自己指定的目录,只要编译的时候包含的路径对了就行了。刚开始做的时候,最好多参考内核源码的一些实现。

梦中的蝴蝶 2022-09-27 09:34:12

一般嵌入式中Nor flash都放在mtd设备中的

违心° 2022-09-27 09:34:12

最近学习nor flash的MTD驱动,对于map_info的read/write分量不太明白。

nor flash的MTD驱动中,驱动作者需要定义自己的map_info结构体,并且为read/write函数分量赋值。在write函数的实现中,大多使
用__raw_writew来实现。但是向nor flash写入数据是要经过program的过程的,不能像写内存一样写入。而且nor
flash的底层读写函数实际上是在cfi_cmdset_0001/2.c中实现的,并且被赋给mtd_info的read/write分量。

真不知道map_info结构体的read/write函数有何用?大家多指教啊!谢谢

谈情不如逗狗 2022-09-27 09:34:12

是不是直接调用MTD->read,write的成员函数等就可以直接操作NOR FLASH了??跟踪了下源码,在read ,write函数的N层嵌套函数里有很多map_write(map, CMD(0xB0), adr)这类的调用,从字面意思看貌似是在想FLASH里写命令。看FLASH的芯片手册里说,FLASH可以直接读,编程FLASH时需要先向对应的块写命令。比如擦处块时,看到CFI_CMDSET_0001.C里面的static int __xipram do_erase_oneblock()里有map_write(map, CMD(0x20), adr);
        map_write(map, CMD(0xD0), adr);之类的。是不是只需调用呢mtd->erase(mtd, erase)就可以直接把响应块给擦出,连对块进行的命令MTD层都给封装在相应的底层函数里的啊

海夕 2022-09-27 09:34:11

具体的实现在于你自己,如果你把它当成普通的块设备,那就用块驱动也行;如果你想遵循cfi,就用MTD。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文