嵌入式Linux内核驱动情景分析.pdfVIP

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
目 录 前言 Linux字符设备驱动剖析 Linux模块化机制和module_init Linux 设备文件的创建和mdev 从需求的角度去理解Linux系列 :总线、设备和驱动 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联 本文档使用 看云 构建 - 2 - 前言 前言 原文出处 :移动开发专栏文章 作者 :吴跃前 本系列文章经作者授权在看云整理发布 ,未经作者允许 ,请勿转载 ! #嵌入式Linux内核驱动情景分析 深入剖析嵌入式Linux系统的内核和驱动开发技术 ,包括Linux设备驱动框架、软件层次、虚拟文件系统、内 存管理、系统调用、功耗管理、具体文件系统、进程间通信等操作系统相关技术以及各种总线子系统框架和 开发技术。 本文档使用 看云 构建 - 3 - Linux字符设备驱动剖析 Linux字符设备驱动剖析 一、先看看设备应用程序 1.很简单 ,open设备文件 ,read、write、ioctl ,最后close退出。如下 : intmain(int argc ,char *argv[]){ unsigned char val[1] 1; int fd open(/dev/LED,O_RDWR);//打开设备 write(fd,val,1);//写入设备,这里代表LED全亮 close(fd);//关闭设备 return 0; } 二、/dev目录与文件系统 2./dev是根文件系统下的一个目录文件 ,/代表根目录 ,其挂载的是根文件系统的yaffs格式 ,通过读取/根目录这 个文件 ,就能分析list出其包含的各个目录 ,其中就包括dev这个子目录。即在/根目录 (也是一个文件 ,其真实存 在于flash介质 )中有一项这样的数据 : 文件属性 文件偏移 文件大小 文件名称 等等 ls/ 命令即会使用/挂载的yaffs文件系统来读取出根目录文件的内容 ,然后list出dev (是一个目录 )。即这时还不 需要去读取dev这个目录文件的内容。Cd dev即会分析dev挂载的文件系统的超级块的信息,superblock ,而不再 理会在flash中的dev目录文件的数据。 3./dev在根文件系统构建的时候会挂载为tmpfs. Tmpfs是一个基于虚拟内存的文件系统 ,主要使用RAM和 SWAP (Ramfs只是使用物理内存 )。即以后读写dev这个目录的操作都转到tmpfs的操作 ,确切地讲都是针对 RAM的操作 ,而不再是通过yaffs文件系统的读写函数去访问flash介质。Tmpfs基于RAM ,所以在掉电后回消 失。因此/dev目录下的设备文件都是每次linux启动后创建的。 挂载过程 :/etc/init.d/rcS Mount –a 会读取/etc/fstab的内容来挂载 ,其内容如下 : 本文档使用 看云 构建 - 4 - Linux字符设备驱动剖析 4./dev/NULL和/dev/console是在制作根文件系统的时候静态创建的 ,其他设备文件都是系统加载根文件系统和 各种驱动初始化过程中自动创建的 ,当然也可以通过命令行手动mknod设备文件。 三、设备文件的创建 5./dev目录下的设备文件基本上都是通过mdev来动态创建的。mdev是一个用户态的应用程序 ,位于busybox工 具箱中。其创建过程包括 : 1 )驱动初始化或者总线匹配后会调用驱动的probe接口 ,该接口会调用device_create(设备类, 设备号, 设备名); 在/sys/class/设备类目录生成唯一的设备属性文件 (包括设备号和设备名等信息 ),并且发送uvent事件 (KOBJ_ADD和环境变量 ,如路径等信息 )到用户空间 (通过socket方式 )。 2 )mdev是一个work_thread线程 ,收到事件后会分析出/sys/c

文档评论(0)

max + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档