课程安排 |
课程内容 |
理论课 |
1. Linux操作系统核心基础
◆ 调度,互斥量和锁等的实现原理
◆ 中断的上下部,定时器,内核线程
◆ 等待队列和工作队列,tasklet等
◆ Linux核心的内存管理(页面分配,slab,kmalloc,DMA内存)
◆ Linux设备管理模型和sysfs文件系统 |
理论课 |
2. 驱动程序与模块概念
◆ Linux设备驱动的概念
◆ Platform device模型介绍
◆ 模块的概念
◆ 模块的构建、编译和加载 |
理论课 |
3. 字符设备驱动程序
◆ 字符设备驱动程序概念
◆ 主设备号和次设备号
◆ fs_operation结构分析
◆ 驱动程序调试技术简单介绍 |
实验课 |
第一部分 驱动基础实验
实验一:模块的构建、编译和装载,hello world模块的实现
实验二:Platform device模型实验
实验三:GPIO按键实验——使用中断机制访问 |
理论课 |
4. Linux块设备驱动程序开发
◆ Linux块设备驱动程序概要
◆ 块设备驱动程序的特点和工作原理
◆ 块设备驱动的设备文件接口概念
◆ 块设备驱动的文件系统接口概念
5. Linux块设备驱动程序实现要素分析
◆ 块设备驱动的注册接口(register_blkdev等)
◆ 块设备驱动操作接口(open,release,ioctl等)
◆ 块设备驱动的request队列和request操作
6. 块设备代码分析(vdisk.c)
◆ vdisk.c的注册接口
◆ vdisk.c的open,release,ioctl
◆ vdisk.c的request队列和request操作 |
实验课 |
第二部分 块设备驱动实验
实验一: 修改vdisk.c支持多个设备
实验二: 在实验一基础上为vdisk.c添加字符设备接口实现
(实现open,close,ioctl,read,write,lseek方法) |
理论课 |
7. 网络设备驱动程序开发
网卡设备介绍
◆ 常见网卡
◆ 网卡芯片所实现的协议层功能
◆ cs8900网卡芯片手册导读
◆ cs8900网卡硬件电路分析
8. Linux网络驱动结构
◆ Linux TCPIP网络结构概述
◆ Linux网络设备结构 |
实验课 |
第三部分 字符设备驱动实验
实验一:ifconfig等命令实验
实验二:字符设备的网卡驱动实现(上)
实验三:字符设备的网卡驱动实现(下)
实验四:驱动的测试程序编写 |