基于ARM的Linux设备驱动.doc

上传人:h**** 文档编号:126568 上传时间:2018-07-09 格式:DOC 页数:211 大小:3.26MB
下载 相关 举报
基于ARM的Linux设备驱动.doc_第1页
第1页 / 共211页
基于ARM的Linux设备驱动.doc_第2页
第2页 / 共211页
基于ARM的Linux设备驱动.doc_第3页
第3页 / 共211页
基于ARM的Linux设备驱动.doc_第4页
第4页 / 共211页
基于ARM的Linux设备驱动.doc_第5页
第5页 / 共211页
点击查看更多>>
资源描述

1、中软国际内部教材 之 基于 ARM 的 Linux设备驱动 1 目 录 第一章 设备驱动程序开发基础 . 5 1.1 设备驱动程序的作用 . 5 1.2 从无操作系统的设备驱动到有操作系统的设备驱动 . 5 1.2.1 无操作系统的设备驱动 . 5 1.2.2 有操作系统的设备驱动 . 7 1.3 Linux 内核模块 .10 1.3.1 Hello World 模块 .10 1.3.2 Linux 内核模块的程序结构 . 11 1.3.3 内核模块的编译 .13 1.3.4 内核模块的加载和卸载 .15 1.3.5 模块参数 .17 1.3.6 模块导出符号 .17 1.3.7 模块的使用计

2、数 .18 1.4 Linux 设备驱动 .19 1.4.1 Linux 设备驱动的分类 .19 1.4.2 设备号 .19 1.4.3 设备文件 .20 1.4.4 Linux 设备文件与设备驱动 .21 第二章 Linux 字符设备驱动程序 . 23 2.1 字符设备驱动简介 .23 2.2 重要的数据结构 .24 2.2.1 file_operations 结构 .24 2.2.2 file 结构体 .28 2.2.3 inode 结构 .30 2.3 字符设备驱动编写 .32 2.3.1 设备号的分配和释放 .33 2.3.2 字符设备的注册 .34 2.3.3 file_operat

3、ions 结构体中函数的实现 .36 2.3 设备驱动的编译和加载 .40 2.4 设备驱动程序的测试 .40 2.5 开机自动创建设备节点 .41 第三章 简单的字符设备驱动试验 . 43 3.1 S3C2440GPIO 简介 .43 3.2 I/O 内存读取 .43 3.3 蜂鸣器驱动试验 .44 3.3.1 蜂鸣器硬件电路 .45 3.3.2 蜂鸣器驱动程序设计 .45 3.3.3 蜂鸣器测试程序的设计 .48 3.4 led 驱动试验 .49 3.4.1 led 硬件电路 .49 3.4.2 利用 linux 内核提供的接口设置寄存器 .50 中软国际内部教材 之 基于 ARM 的 L

4、inux设备驱动 2 3.4.3 LED 驱动程序设计 .52 3.3.3 蜂鸣器测试程序的设计 .54 第四章 Linux 设备驱动的并发与竞争 . 57 4.1 kbuf 的缺陷 .57 4.2 并发与竞态 .57 4.3 中断屏蔽 .58 4.4 原子操作 .58 4.4.1 整型原子操作 .58 4.4.2 位原子操作 .60 4.5 内核锁 .60 4.5.1 自旋锁 .60 4.5.2 读写自旋锁 .62 4.5.3 顺序锁 .64 4.6 信号量 .65 4.5.4 信号量与自旋锁的区别 .67 第五章 阻塞与非阻塞 I/O . 69 5.1 阻塞与非阻塞 I/O 介绍 .69

5、5.2 等待队列 .69 5.3 在 kbuf 实例汇总加入阻塞与非阻塞 I/O .71 5.4 对 kbuf 阻塞与非阻塞 I/O 的测试 .72 5.5 轮询操作 .74 5.5.1 设备驱动中 poll 方法的实现 .74 5.5.2 在 kbuf 中加入对读轮询的支持 .75 5.5.3 在用户空间验证 kbuf 设备的读轮询 .76 第六章 中断处理 . 78 6.1 中断的基本概念 .78 6.2 linux 中断编程 .78 6.3 中断的 /proc 接口 .80 6.4 中断实例 .81 6.4.1 硬件资源 .81 6.4.2 代码实现 .82 6.4.3 在用户空间测试中

6、断 .84 6.5 中断的顶半部和底半部 .84 6.5.1 tasklet.85 6.5.2 工作队列 .86 6.6 中断共享 .87 第七章 Linux 设备模型 . 89 7.1 Sysfs 文件系统 .89 7.2 设备模型的构建 .93 7.2.1 Kobject .93 7.2.2 Kset.99 7.2.3 kobj_attribute . 102 7.2.4 module 的创建 . 108 7.2.5 module 的撤销 . 111 中软国际内部教材 之 基于 ARM 的 Linux设备驱动 3 第八章 输入子系统 . 113 8.1 输入子系统架构 Overview .

7、 113 8.1.1 主要数据结构 . 113 8.1.2 输入子系统架构示例图 . 114 8.2 输入链路的创建过程 . 114 8.2.1 硬件设备的注册 . 114 8.2.2 Event Handler 层 . 116 8.3 设备的打开和读写 . 118 8.3.1 Open . 118 8.3.2 Read. 119 8.3.3 Write . 119 8.4 Input 子系统实例 . 119 第九章 网络设备驱动程序开发 .135 9.1 网络协议原理 . 135 9.1.1 TCP/IP 协议 . 135 9.1.2 报文的处理过程 . 139 9.1.3 网卡与网卡驱动

8、. 140 9.1.4 网络传输实例:局域网内 UDP 报文发送和接收 . 141 9.1.5 IP 地址与 MAC 地址 . 142 9.1.6 网络调试工具 Wireshark . 143 9.2 DM9000 芯片 操作 . 143 9.2.1 硬件连接 . 143 9.2.2 DM9000 的操作方式 . 144 9.2.3 初始化 DM9000 网卡芯片 . 145 9.2.4 DM9000 发送和接受数据 . 146 9.3 UDP 协议 . 149 9.3.1 报文格式 . 149 9.3.2 UDP 协议包的封装和发送 . 153 9.3.3 UDP 协议包的接收和解析 . 1

9、55 9.3.4 测试方法 . 157 9.4 ARP 报文的发送和接受 . 157 9.4.1 ARP 协议简介 . 157 9.4.2 ARP 协议包的封装 . 159 9.4.3 ARP 协议报的接受和发送 . 159 9.4.4 测试方法 . 160 9.5 ICMP 报文接收和发送 . 160 9.5.1 ICMP 协议简介 . 160 9.5.2 ICMP 协议包的接收和发送 . 161 第十章 USB 设备驱动程序开发 .163 10.1 USB 系统概述 . 163 10.1.1 USB 总线的发展 . 163 10.1.2 USB 总线的特点 . 163 10.1.3 USB 总线规范 . 164 10.1.4 USB 设备概述 . 164 中软国际内部教材 之 基于 ARM 的 Linux设备驱动 4 10.1.5 USB 系统模型 . 164 10.1.6 USB 硬件系统总体结构 . 165 10.1.7 USB 系统层次结构 . 166 10.2 USB 主机 . 167 10.2.1 USB 主机端构成 . 168 10.2.2 客户软件 . 168 10.2.2 USB 系统软件 . 169 10.3 USB 集线器 .

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。