linux 设备驱动 ppt,LINUX设备驱动开发3.ppt

《LINUX设备驱动开发3.ppt》由会员分享,可在线阅读,更多相关《LINUX设备驱动开发3.ppt(30页珍藏版)》请在人人文库网上搜索。

1、第三天课程,FLASH设备驱动程序 嵌入式Linux文件子系统,日程安排,FLASH设备驱动程序,Flash芯片介绍,Flash 芯片类型 NOR Flash 直接总线接口 读写类似于RAM 可直接执行程序 NAND Flash I/O读写接口 读写类似于硬盘 不能直接执行程序,需要加载到内存,Flash芯片比较,典型FLASH芯片,典型NOR Flash芯片 AMD Flash 系列 Intel Strata Flash 系列 典型NAND Flash 芯片芯片 芯片类NAND Flash :如Samsung K9S1208 Samsung SMC 卡:SmartMediaCard Smar。

2、tMediaCard DiskOnChip DiskOnChip,NOR FLASH,读:直接按总线地址读 读 写: 写: 通过向特定地址写某种序列实现写功能 AMD Flash ,Intel Flash 的命令序列即相应地址有所不同不同 NOR Flash 的扇区的扇区 扇区类型: 启动扇区(大小一般32K/16K/8K ) 普通扇区(大小一般为64K),NAND FLASH,芯片组织:分页和块 对K9S1208:每页512 16 字节,一块32页=16K+512 读写以页为单元,擦除以块为单位 通过CLE引脚写命令, ALE引脚写地址 读写方式 先通过CLE发命令 再通过ALE写地址 再读。

3、写数据 详见芯片手册如K9S1208 代码可见JFlash或vivi 中的相应代码 (如arch/s3c2410/nand_read.c),NAND FLASH,NAND Flash 坏块 工艺难以保证完全可靠型 坏块分类: 固有坏块 使用时坏块 坏块管理 空闲区第6个字节不为0 xff Flash读写代码需要检测坏块 读写空闲区:drivers/mtd/nand/smc_core.c:nand_read_oob,MTD设备驱动,MTD技术 全称:Memory Technology Device 实现对内存设备支持的统一接口,尤其是Flash 内核源码位置: drivers/mtd 提供Fla。

4、sh设备到字符设备驱动和块设备驱动的转换 包含对各种不同类型NOR Flash、NAND Flash等的支持,MTD层次结构,Flash 硬件驱动层 提供对不同Flash 硬件的驱动:NOR Flash在drivers/mtd/chips目录下,NAND Flash 在drivers/mtd/nand 目录下 MTD原始设备层 提供统一的MTD设备描述mtd_info 提供对分区等的支持 MTD设备层 提供MTD 字符设备和块设备 应用层 设备节点和建立在MTD上的文件系 上,MTD字符设备,主设备号均为90 ,从设备号根据分区依次为0,2,4, 奇数1,3,5 等表示只读。 设备名: /de。

5、v/mtd0, /dev/mtd1,MTD块设备,主设备号均为31,从设备根据分区依次为0,1, . 。 设备名: /dev/mtdblock0, /dev/ mtdblock1,数据结构:mtd_info,描述MTD原始设备,每个MTD原始设备都有一个mtd_info结构,定义了关于MTD的数据和操作函数。 u_char type; MTD 类型 u_int32_t size; MTD 大小 u_int32_t t erasesize; MTD 的主擦除大小 u_int32_t uoobblock; OOB块大小,如512 u_int32_t oobsize; OOB 空闲区大小,如16 M。

6、TD回调函数: erase:擦除函数 read:读 write:写 read_ecc :读ECC,位于空闲区,每256字节产生一个ECC write_ecc :写ECC read_oob :读OOB 数据数据 write_oob :写OOB 数据,数据结构map_info,Flash映射信息结构(include/linux/mtd/map.h) char *name; Map 名称名称 unsigned long size; Map 大小大小 int int buswidth h; ; 总线宽度,以8为单位 unsigned long map_priv_1/2; 映射的虚拟地址 回调函数组: 。

7、read8/16/32 等,write8/16/32 映射信息由芯片驱动调用,主要目的为查找特定的芯片,数据结构mtd_partition,表示MTD原始设备分区的结构,其中包含了mtd_info,因为每一个分区都是被看成一个MTD原始设备加在mtd_table中的。 char *name;分区名 u_int32_t size; 分区大小 u_int32_t offset; 分区相对其主MTD设备的偏移, 特殊偏移: MTDPART_OFS_APPEND (紧接上一分区), MTDPART_SIZ_FULL (直到设备尾) u_int32_t mask_flags; 屏蔽标志,如只读等,芯片驱。

8、动:mtd_chip_driver,mtd_chip_driver 结构 struct mtd_info *(* probe)(struct map_info *map); 芯片探查函数 char *name; 名称 struct list_head list; 构成链表 不同的芯片驱动 AMD 类型flash 驱动:drivers/mtd/chips/amd_flash.c等 Intel类型flash驱动:drivers/mtd/chips/cfi*等,NOR Flash MTD 映射驱动,功能:实现Flash芯片在特定处理器上的读写以及Flash 分区 内核源码位置: drivers/mt。

9、d/maps 可根据已有的程序进行修改:如sa1100-flash.c 定义Flash 起始地址和大小WINDOW_ADDR、WINDOW_SIZE ,以及总线宽BUSWIDTH。 实现map_info 结构 确定分区结构数组mtd_partition ,每个结构表示相应的mtd 分区 修改Config.in和 Makefile 文件以加入新增的MTD分区编译选项,日程安排,嵌入式Linux文件子系统,嵌入式Linux文件子系统概述,文件系统指文件存在的物理空间。在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。Linux的最重要特征之一就是支持多种文件系统,这样它更加灵活。

10、,并可以和许多其它种操作系统共存。由于系统已将Linux文件系统的所有细节进行了转换,所以Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。,虚拟文件系统VFS,为不同的文件系统提供统一的接口标准 块设备驱动缓冲系统(Cache )文件系统,数据结构-超级块,超级块super block(include/linux/fs.h) 存放文件信息和Inode信息 一般位于块设备起始位置,数据结构-inode,inode 结构(见include/linux/fs.h) 可理解为VFS内的文件标识 通过Inode与具体的文件系统驱动程序通信,数据结构file_operations,主要针对。

11、文件的读写等操作 典型回调函数 打开、关闭: open ,release 读写: read, write 控制: ioctl,fsync,fasync,lock 内存映射:mmap,典型的Linux 文件系统,标准Linux 文件系统:ext2,ext3 Windows下文件系统:fat,vfat ,ntfs Flash 文件系统:cramfs ,romfs,jffs2,yaffs 内存文件系统:ramfs,tmpfs 系统proc文件系统:proc 设备文件系统:devfs 的文件系统,常用的Flash 文件系统,Romfs 只读文件系统,未压缩。多用于NOR Flash 和较低速的CPU(。

12、如无MMU CPU) Cramfs 只读文件系统,压缩,可用于较高速的CPU CPU JFFS2 可读写文件系统,可支持压缩或不压缩,较适用于Nor Flash和容量较小的Nand Flash Yaffs 可读写文件系统,未压缩。较适用于Nand Flash,Flash文件系统内核编译选项,选择File systems 合适的文件系统合适的文件系统 Journalling Flash File System (JFFS) support :JFFS支持 Journalling Flash File System v2 (JFFS2) suppor:JFFSV2支持 Compressed ROM。

13、 file system support:cramfs支持持 ROM file system support:romfs支持 YAFFS file system support:yaffs支持,文件系统构建,先在主机上完成文件系统设计 采用相应的工具将其生成对应的image cramfs:可采用mkcramfs工具 jffs2:可采用mkfs.jffs2 工具 romfs:可采用genromfs工具具 yaffs :可采用mkyaffsimage 工具工具,JFFS2文件系统,JFFS2 是一个开放源码的项目(www.infradead.org)。 它是在闪存上使用非常广泛的读/写文件系统。 JFFS2 是一个日志结构的文件系统,包含数据和原数据的节点在闪存上顺序的存储。 JFFS2的缺点: 挂载时间过长 磨损平衡的随意性 很差的扩展性,文件和进程,结构struct file *file; 可采用file-private_data来区分设备。,谢谢大家,问题 建议 反馈,* 次数:1357533 已用完,请联系开发者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值