linux mtd 驱动架构,第八章Linux下MTD驱动.pptx

第八章Linux下MTD驱动

上章回顾

Linux下MTD驱动

第8章

预习检查

本章目标

掌握Linux下MTD驱动层结构

掌握NOR Flash或NAND Flash驱动程序的移植、开发

了解Flash文件系统

本章结构

Linux下MTD驱动

Linux MTD 系统层次

Linux MTD系统接口

Linux MTD 驱动结构

MTD NOR Flash驱动

MTD NAND Flash驱动

Flash文件系统建立

8.1 Linux MTD驱动结构

MTD(Memory Technology Device)

MTD(内存技术设备)是用于访问memory设备(比如NOR Flash、NAND Flash)的Linux的子系统。

MTD在硬件和上层之间提供了一个抽象的接口。目的是为了使新的memory设备的驱动更加简单。

MTD将文件系统与底层的Flash存储器进行了隔离,使Flash驱动工程师无须关心Flash作为字符设备和块设备与Linux内核的接口。

8.1.1 Linux MTD系统层次结构

Linux系统中的Flash设备驱动可将分为四层:

设备节点

MTD设备层

MTD原始设备层

硬件驱动层。

字符设备节点

MTD字符设备

MTD块设备

块设备节点

文件系统

根文件系统

MTD原始设备

FLASH硬件驱动

8.1.2 Linux MTD 系统接口

MTD设备层

mtd_notifier

mtd_fops

字符设备

(mtdchar.c)

mtd_notifier

mtd_fops

mtdblks

块设备

(mtdblock.c)

register_mtd_user() unregister_mtd_user()

put_mtd_device()

erase_info()

get_mtd_device() MTD原始设备层

mtd_notifier

mtd_table

(mtdcore.c) mtd_info

(mtdpart.c) mtd_part

add_mtd_partitions() del_mtd_partitions()

add_mtd_device() add_mtd_device()

mtd_partition() Flash硬件驱动层

(your-flash.c)

8.1.2 Linux MTD 系统接口

mtd_info 结构体主要成员(1)

u_char type; //内存技术的类型

u_int32_t flags; //标志位

u_int32_t size; //mtd设备的大小

u_int32_t erasesize; /*主要的擦除块大小(同一个mtd设备可能有数

*种不同的erasesize)*/

u_int32_t oobblock; //oob块大小

u_int32_t oobsize; //oob数据大小

u_int32_t ecctype; //ecc类型

u_int32_t eccsize; //ecc工作的范围

char *name;

8.1.2 Linux MTD 系统接口

mtd_info 结构体主要成员(2)

int (*erase)(struct mtd_info *mtd, struct erase_info *instr)?;

//此routine用于将一个erase_info加入erase queue

int(*read)(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,

u_char *buf); //读F

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值