社区
驱动程序开发区
帖子详情
linux设备驱动第三章,字符设备驱动源码实现
Gavin_Mirror
2014-12-30 09:23:36
我刚开始看linux设备驱动的知识,LDD3第三章,字符设备驱动的地方(只限第三章),由于官方给的源码里面是第三章到第六章的混合代码,所以,我想剥离出来只实现第三章的源码,main.c我剥离出来了,里面有open,release,read,writer方法以及这些方法使用的过程中使用到的方法,在scull.h里面,只保留了,qset和cdev两个数据结构,但是对于,load和unload以及init脚本不太懂,不知道怎么分离,请各位指教!
...全文
143
回复
打赏
收藏
linux设备驱动第三章,字符设备驱动源码实现
我刚开始看linux设备驱动的知识,LDD3第三章,字符设备驱动的地方(只限第三章),由于官方给的源码里面是第三章到第六章的混合代码,所以,我想剥离出来只实现第三章的源码,main.c我剥离出来了,里面有open,release,read,writer方法以及这些方法使用的过程中使用到的方法,在scull.h里面,只保留了,qset和cdev两个数据结构,但是对于,load和unload以及init脚本不太懂,不知道怎么分离,请各位指教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LINUX
设备
驱动
程序(第二版)
第1章
Linux
内核简介 第2章 编写和运行模块 第3章
字符
设备
驱动
程序 第4章 调试技术 第5章
字符
设备
驱动
程序的扩展操作 第6章 时间流 第7章 获取内存 第8章 硬件管理 第9章 中断处理 第10章 合理使用数据类型 第11章 kerneld和高级模块化 第12章 加载快
设备
驱动
程序 第13章 MMAP和DMA 第14章 网络
驱动
程序 第15章 外围总线概览 第16章 核心
源码
的物理布局
嵌入式
linux
设备
驱动
(共17章)
详细的嵌入式
linux
设备
驱动
编写word文档 第1章
Linux
内核简介 第2章 编写和运行模块 第3章
字符
设备
驱动
程序 第4章 调试技术 第5章
字符
设备
驱动
程序的扩展操作 第6章 时间流 第7章 获取内存 第8章 硬件管理 第9章 中断处理 第10章 合理使用数据类型 第11章 kerneld和高级模块化 第十二章 加载快
设备
驱动
程序 第十三章 MMAP和DMA 第十四章 网络
驱动
程序 第十五章 外围总线概览 第十六章 核心
源码
的物理布局 第十七章 最新进展
最简单的
linux
字符
设备
驱动
一个最简单的
字符
设备
驱动
程序,包括LDD第三版前三章的内容。 关键是书中并未讲的太细,关于mknod以及如何自己写一个程序使用自己的
驱动
,我的代码中有详细的过程,也在blog中写明了
驱动
模块的思路以及常见问题的解决思路。主要是自己学习所用,现在共享出来大家一起学习吧! 考虑到
linux
下对中文的支持随版本而异,所以
源码
并未详细注释,详细注释的代码见我博客。
《精通
Linux
设备
驱动
程序开发》.(Sreekrishnan).pdf
基本信息 原书名: Essential
Linux
Device Drivers 原出版社: Prentice Hall 作者: (印)Sreekrishnan Venkateswaran 译者: 宋宝华 何昭然 史海滨 吴国成 丛书名: 图灵程序设计丛书 操作系统 出版社:人民邮电出版社 ISBN:9787115221674 出版日期:2010 年6月 页码:468 内容简介 本书是
linux
设备
驱动
程序开发领域的权威著作。全书基于2.6内核,不仅透彻讲解了基本概念和技术,更深入探讨了其他书没有涵盖或浅尝辄止的许多重要主题和关键难点,如pcmcia、i2c和usb等外部总线以及视频、音频、无线连网和闪存等
驱动
程序的开发,并讲解了相关的内核
源码
文件,给出了完整的开发实例。 本书适合中高级
linux
开发人员阅读。 目录 第1章 引言1 1.1 演进1 1.2 gnu copyleft2 1.3 kernel.org2 1.4 邮件列表和论坛3 1.5
linux
发行版3 1.6 查看源代码4 1.7 编译内核7 1.8 可加载的模块8 1.9 整装待发9 第2章 内核11 2.1 启动过程11 2.1.1 bios-provided physical ram map12 2.1.2 758mb lowmem available14 2.1.3 kernel command line: ro root=/dev/hda114 2.1.4 calibrating delay...1197.46 .bogomips (lpj=2394935)15 2.1.5 checking hlt instruction16 2.1.6 net: registered protocol family 217 2.1.7 freeing initrd memory: 387k freed17 2.1.8 io scheduler anticipatory registered (default)18 2.1.9 setting up standard pci resources18 2.1.10 ext3-fs: mounted filesystem19 2.1.11 init: version 2.85 booting19 2.2 内核模式和用户模式20 2.3 进程上下文和中断上下文20 2.4 内核定时器21 2.4.1 hz和jiffies21 2.4.2 长延时22 2.4.3 短延时24 2.4.4 pentium时间戳计数器24 2.4.5 实时钟25 2.5 内核中的并发26 2.5.1 自旋锁和互斥体26 2.5.2 原子操作30 2.5.3 读—写锁31 2.5.4 调试32 2.6 proc文件系统32 2.7 内存分配33 2.8 查看源代码34 第3章 内核组件37 3.1 内核线程37 3.1.1 创建内核线程37 3.1.2 进程状态和等待队列41 3.1.3 用户模式辅助程序42 3.2 辅助接口43 3.2.1 链表44 3.2.2 散列链表49 3.2.3 工作队列49 3.2.4 通知链51 3.2.5 完成接口54 3.2.6 kthread辅助接口56 3.2.7 错误处理助手57 3.3 查看源代码58 第4章 基本概念61 4.1
设备
和
驱动
程序介绍61 4.2 中断处理63 4.2.1 中断上下文63 4.2.2 分配irq号64 4.2.3
设备
实例:导航杆65 4.2.4 softirq和tasklet68 4.3
linux
设备
模型71 4.3.1 udev71 4.3.2 sysfs、kobject和
设备
类73 4.3.3 热插拔和冷插拔76 4.3.4 微码下载76 4.3.5 模块自动加载77 4.4 内存屏障78 4.5 电源管理79 4.6 查看源代码79 第5章
字符
设备
驱动
程序81 5.1
字符
设备
驱动
程序基础81 5.2
设备
实例:系统cmos82 5.2.1
驱动
程序初始化83 5.2.2 打开与释放86 5.2.3 数据交换88 5.2.4 查找92 5.2.5 控制94 5.3 检测数据可用性95 5.3.1 轮询95 5.3.2 fasync98 5.4 和并行端口交互99 5.5 rtc子系统108 5.6 伪字符
驱动
程序109 5.7 混杂
驱动
程序110 5.8
字符
设备
驱动
程序注意事项115 5.9 查看源代码115 第6章 串行
设备
驱动
程序118 6.1 层次架构119 6.2 uart
驱动
程序121 6.2.1
设备
实例:手机122 6.2.2 rs-485132 6.3 tty
驱动
程序132 6.4 线路规程134 6.5 查看源代码141 第7章 输入
设备
驱动
程序143 7.1 输入事件
驱动
程序144 7.2 输入
设备
驱动
程序150 7.2.1 serio150 7.2.2 键盘150 7.2.3 鼠标152 7.2.4 触摸控制器157 7.2.5 加速度传感器158 7.2.6 输出事件158 7.3 调试159 7.4 查看源代码160 第8章 i2c协议161 8.1 i2c/smbus是什么161 8.2 i2c核心162 8.3 总线事务164 8.4
设备
实例:eeprom164 8.4.1 初始化165 8.4.2 探测
设备
167 8.4.3 检查适配器的功能169 8.4.4 访问
设备
169 8.4.5 其他函数170 8.5
设备
实例:实时时钟171 8.6 i2c-dev174 8.7 使用lm-sensors监控硬件174 8.8 spi总线174 8.9 1-wire总线176 8.10 调试176 8.11 查看源代码176 第9章 pcmcia和cf179 9.1 pcmcia/cf是什么179 9.2
linux
-pcmcia子系统181 9.3 主机控制器
驱动
程序183 9.4 pcmcia核心183 9.5
驱动
程序服务183 9.6 客户
驱动
程序183 9.6.1 数据结构184 9.6.2
设备
实例:pcmcia卡185 9.7 将零件组装在一起188 9.8 pcmcia存储189 9.9 串行pcmcia189 9.10 调试191 9.11 查看源代码191 第10章 pci193 10.1 pci系列193 10.2 寻址和识别195 10.3 访问pci198 10.3.1 配置区198 10.3.2 i/o和内存199 10.4 dma200 10.5
设备
实例:以太网—调制解调器卡203 10.5.1 初始化和探测203 10.5.2 数据传输209 10.6 调试214 10.7 查看源代码214 第11章 usb216 11.1 usb体系架构216 11.1.1 总线速度218 11.1.2 主机控制器218 11.1.3 传输模式219 11.1.4 寻址219 11.2
linux
-usb子系统220 11.3
驱动
程序的数据结构221 11.3.1 usb_device结构体221 11.3.2 urb222 11.3.3 管道223 11.3.4 描述符结构223 11.4 枚举225 11.5
设备
实例:遥测卡225 11.5.1 初始化和探测过程226 11.5.2 卡寄存器的访问230 11.5.3 数据传输233 11.6 类
驱动
程序236 11.6.1 大容量存储
设备
236 11.6.2 usb-串行端口转换器241 11.6.3 人机接口
设备
243 11.6.4 蓝牙243 11.7 gadget
驱动
程序243 11.8 调试244 11.9 查看源代码245 第12章 视频
驱动
程序247 12.1 显示架构247 12.2
linux
视频子系统249 12.3 显示参数251 12.4 帧缓冲api252 12.5 帧缓冲
驱动
程序254 12.6 控制台
驱动
程序265 12.6.1
设备
实例:手机266 12.6.2 启动logo270 12.7 调试270 12.8 查看源代码271 第13章 音频
驱动
程序273 13.1 音频架构273 13.2
linux
声音子系统275 13.3
设备
实例:mp3播放器277 13.3.1
驱动
程序函数和结构体278 13.3.2 alsa编程287 13.4 调试288 13.5 查看源代码289 第14章 块
设备
驱动
程序291 14.1 存储技术291 14.2
linux
块i/o层295 14.3 i/o调度器295 14.4 块
驱动
程序数据结构和方法296 14.5
设备
实例:简单存储控制器298 14.5.1 初始化299 14.5.2 块
设备
操作301 14.5.3 磁盘访问302 14.6 高级主题304 14.7 调试306 14.8 查看源代码306 第15章 网络接口卡308 15.1
驱动
程序数据结构308 15.1.1 套接字缓冲区309 15.1.2 网络
设备
接口310 15.1.3 激活311 15.1.4 数据传输311 15.1.5 看门狗311 15.1.6 统计312 15.1.7 配置313 15.1.8 总线相关内容314 15.2 与协议层会话314 15.2.1 接收路径314 15.2.2 发送路径315 15.2.3 流量控制315 15.3 缓冲区管理和并发控制315 15.4
设备
实例:以太网nic316 15.5 isa网络
驱动
程序321 15.6 atm321 15.7 网络吞吐量322 15.7.1
驱动
程序性能322 15.7.2 协议性能323 15.8 查看源代码324 第16章
linux
无线
设备
驱动
326 16.1 蓝牙327 16.1.1 bluez328 16.1.2
设备
实例:cf卡329 16.1.3
设备
实例:usb适配器330 16.1.4 rfcomm331 16.1.5 网络332 16.1.6 hid334 16.1.7 音频334 16.1.8 调试334 16.1.9 关于源代码334 16.2 红外335 16.2.1
linux
-irda335 16.2.2
设备
实例:超级i/o芯片337 16.2.3
设备
实例:ir dongle338 16.2.4 ircomm340 16.2.5 联网340 16.2.6 irda套接字341 16.2.7 lirc341 16.2.8 查看源代码342 16.3 wifi343 16.3.1 配置343 16.3.2
设备
驱动
程序346 16.3.3 查看源代码347 16.4 蜂窝网络347 16.4.1 gprs347 16.4.2 cdma349 16.5 当前趋势350 第17章 存储技术
设备
352 17.1 什么是闪存352 17.2
linux
-mtd子系统353 17.3 映射
驱动
程序353 17.4 nor芯片
驱动
程序358 17.5 nand芯片
驱动
程序359 17.6 用户模块361 17.6.1 块
设备
模拟361 17.6.2
字符
设备
模拟361 17.6.3 jffs2362 17.6.4 yaffs2363 17.7 mtd工具363 17.8 配置mtd363 17.9 xip364 17.10 fwh364 17.11 调试367 17.12 查看源代码367 第18章 嵌入式
linux
369 18.1 挑战369 18.2 元器件选择370 18.3 工具链371 18.4 bootloader372 18.5 内存布局374 18.6 内核移植375 18.7 嵌入式
驱动
程序376 18.7.1 闪存377 18.7.2 uart377 18.7.3 按钮和滚轮378 18.7.4 pcmcia/cf378 18.7.5 sd/mmc378 18.7.6 usb378 18.7.7 rtc378 18.7.8 音频378 18.7.9 触摸屏379 18.7.10 视频379 18.7.11 cpld/fpga379 18.7.12 连接性379 18.7.13 专用领域电子器件380 18.7.14 更多
驱动
程序380 18.8 根文件系统380 18.8.1 nfs挂载的根文件系统381 18.8.2 紧凑型中间件382 18.9 测试基础设施383 18.10 调试383 18.10.1 电路板返工384 18.10.2 调试器385 第19章 用户空间的
驱动
程序386 19.1 进程调度和响应时间387 19.1.1 原先的调度器387 19.1.2 o(1)调度器387 19.1.3 cfs388 19.1.4 响应时间388 19.2 访问i/o区域390 19.3 访问内存区域393 19.4 用户模式scsi395 19.5 用户模式usb397 19.6 用户模式i2c400 19.7 uio401 19.8 查看源代码402 第20章 其他
设备
和
驱动
程序403 20.1 ecc报告403 20.2 频率调整407 20.3 嵌入式控制器408 20.4 acpi408 20.5 isa与mca410 20.6 火线410 20.7 智能输入/输出411 20.8 业余无线电411 20.9 voip411 20.10 高速互联412 20.10.1 infiniband413 20.10.2 rapidio413 20.10.3 光纤通道413 20.10.4 iscsi413 第21章 调试
设备
驱动
程序414 21.1 kdb414 21.1.1 进入调试器415 21.1.2 kdb415 21.1.3 kgdb417 21.1.4 gdb420 21.1.5 jtag调试器421 21.1.6 下载423 21.2 内核探测器423 21.2.1 kprobe423 21.2.2 jprobe427 21.2.3 返回探针429 21.2.4 局限性431 21.2.5 查看源代码431 21.3 kexec与kdump431 21.3.1 kexec432 21.3.2 kdump与kexec协同工作432 21.3.3 kdump433 21.3.4 查看源代码437 21.4 性能剖析437 21.4.1 利用oprofile剖析内核性能438 21.4.2 利用gprof剖析应用程序性能440 21.5 跟踪441 21.6 ltp444 21.7 uml444 21.8 诊断工具444 21.9 内核修改配置选项444 21.10 测试
设备
445 第22章 维护与发布446 22.1 代码风格446 22.2 修改标记446 22.3 版本控制447 22.4 一致性检查447 22.5 构建脚本448 22.6 可移植代码450 第23章 结束语451 23.1 流程一览表451 23.2 下一步该做什么452 附录a
linux
汇编453 附录b
linux
与bios457 附录c seq文件461
linux
设备
驱动
程序(第三版)CHM和配套
源码
目录 1. 第一章
设备
驱动
简介 1.1.
驱动
程序的角色 1.2. 划分内核 1.2.1. 可加载模块 1.3.
设备
和模块的分类 1.4. 安全问题 1.5. 版本编号 1.6. 版权条款 1.7. 加入内核开发社团 1.8. 本书的内容 2. 建立和运行模块 2.1. 设置你的测试系统 2.2. Hello World 模块 2.3. 内核模块相比于应用程序 2.3.1. 用户空间和内核空间 2.3.2. 内核的并发 2.3.3. 当前进程 2.3.4. 几个别的细节 2.4. 编译和加载 2.4.1. 编译模块 2.4.2. 加载和卸载模块 2.4.3. 版本依赖 2.4.4. 平台依赖性 2.5. 内核符号表 2.6. 预备知识 2.7. 初始化和关停 2.7.1. 清理函数 2.7.2. 初始化中的错误处理 2.7.3. 模块加载竞争 2.8. 模块参数 2.9. 在用户空间做 2.10. 快速参考 3. 字符
驱动
3.1. scull 的设计 3.2. 主次编号
驱动程序开发区
1,318
社区成员
2,173
社区内容
发帖
与我相关
我的任务
驱动程序开发区
主要是开发驱动技术
复制链接
扫一扫
分享
社区描述
主要是开发驱动技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章