您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页what is MTD?

what is MTD?

来源:化拓教育网

2010-7-20

what is MTD?

Description:

  MTD原始设备描述

  根文件系统

  文件系统

  字符设备节点

  MTD字符设备

  MTD块设备

  MTD原始设备

  FLASH硬件驱动

  块设备节点

  二、MTD原始设备:原始设备层有两部分组成,一部分是MTD原始设备的通用代码,另一部分是 各个特定的Flash的数据,例如分区。

  用于描述MTD原始设备的数据结构是mtd_info,这其中定义了大量的关于MTD的数据和 操作函数。mtd_tablemtdcore.c)则是所有MTD原始设备的列表,mtd_partmtd_part.c)是用于表示MTD原始设备 分区的结构,其中包含了mtd_info,因为每一个分区都是被看成一个MTD原始设备加在mtd_table中的,mtd_part.mtd_info 中的大部分数据都从该分区的主分区mtd_part->master中获得。

  三、MTD设备层:基于MTD原始设备,linux系统可以定义出MTD的块设备(主设备号 31)和字符设备(设备号90)。MTD字符设备的定义在mtdchar.c中实现,通过注册一系列file operation函数(lseekopenclosereadwrite)。MTD块设备则是定义了一个描述MTD块设备的结构 mtdblk_dev,并声明了一个名为mtdblks的指针数组,这数组中的每一个mtdblk_devmtd_table中的每一个 mtd_info一一对应。

  五、根文件系统:在Bootloader中将JFFS(或JFFS2)的文件系统映像 jffs.image(或jffs2.img)烧到flash的某一个分区中,在/arch/arm/mach-your/arch.c文件的 your_fixup函数中将该分区作为根文件系统挂载。

  六、文件系统:内核启动后,通过mount 命令可以将flash中的其余分区作为文件系统挂载到mountpoint上。

  设备层和原始设备层的函数调用关系(红色部分需要我们实现):

  一个MTD原始设备可以通过mtd_part分割成数个MTD原始设备注册进 mtd_tablemtd_table中的每个MTD原始设备都可以被注册成一个MTD设备,其中字符设备的主设备号为90,次设备号为0246…(奇数次设备号为只读设备),块设备的主设备号为31,次设备号为0123…

  mtd_notifier mtd_notifier

  字符设备 mtd_fops 块设备 mtd_fops

  (mtdchar.c) (mtdblock.cmtdblks

  设备层

  register_mtd_user()

  get_mtd_device()

  unregister_mtd_user()

  put_mtd_device()

  erase_info

  mtd_notifiers

  mtd_table

  mtd_info

  mtd_part

  (mtdcore.c

  (mtdpart.c

  Your Flash

  (your-flash.c

  add_mtd_partitions()

  del_mtd_partitions()

  原始设备层 add_mtd_device()

  del_mtd_device()

  mtd_partition

  NORFlash芯片驱动与MTD原始设备

  0x03000000

  0x02000000

  0x01000000

 

转载于:https://www.cnblogs.com/nickchan/archive/2012/07/21/3104398.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务