ARM平台内核及驱动高级课程
ARM平台Linux内核以及设备驱动程序 教学目标: 强调从零开始写驱动,让学员真正掌握Linux驱动的编程能力,这是嵌入式程序员层次的标志,能不能进行驱动程序开发是学员是否可以拿到真正高薪的标准。同时学员还必须熟悉内核的裁剪、移植及多种内核模块的开发
案例实践: 我们将从以下驱动中让大家手写几款重要的
(根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个)
a. ARM-Linux GPIO驱动
b. ARM-Linux WatchDog驱动
c. ARM-Linux Udev移植
d. ARM-Linux 触摸屏输入设备驱动
e. ARM-Linux LCD显示设备驱动
f. ARM-Linux 音频设备驱动
g. ARM-Linux Nand Flash块设备驱动
h. ARM-Linux 网络设备驱动
Linux内核设计部分:
1、Linux内核配置与内核模块 . 内核配置编译
. 补丁的制作
. 内核补丁
. 内核Makefile
. Kconfig的编写
. 模块的编译与加载
. 导出符号
. 引用计数
. 内核空间与用户空间的区别
. printk
2、设备驱动初步
. Linux的VFS简介
. 设备文件与设备号
. 字符设备
. cdev结构
. 用户空间的操作与设备操作关系
. open、release、read、write、lseek、ioctl等
3、进程调度
. 定时器中断
. task_struct的作用
. thread_info
. 抢占与非抢占
. 进程睡眠
. 等待队列
. 阻塞I/O与非阻塞I/O
. select/poll
4、并发控制
. 原子操作
. 自旋锁
. 禁用抢占
. 中断屏蔽
. 信号量
. completion
5、异步通知
. Linux信号
. fasync的实现
6、内存管理与内核内存管理模块的使用
. 虚拟地址空间与MMU
. 内核页管理机制
. 内核内存分配
. 高端内存
. vmalloc
. 统一编址与独立编址
. I/O端口与I/O内存
. I/O静态映射
. mmap
7、内核时间与内核体系的时间控制
. 内核计时jiffies
. timer
. tasklet
. work_struct
8、中断系统与Linux中断系统的使用
. 中断机制
. 异常向表相关代码分析
. 中断号的确定
. 上半部与下半部
. 中断共享
9、内核Debug
. proc文件系统
. 模块参数
模块的相关Debug
Linux驱动部分(在Bootloader部分已经在尝试裸驱动的编写,这部分是驱动的第二部分) 9、设备模型 . kobject、kset、class、subsystem与sysfs的原理和关系
. udev的原理与移植;
. 总线设备驱动简介
. bus_type 总线相关体系结构
. device与device_driver原理 设备驱动体系结构
. platform_device的应用
10、LCD驱动
. ARM-Linux Frame Buffer驱动详解
Linux中图形控制体系
. LCD控制程序
LCD驱动程序编写
11、触摸屏驱动
. ARM-Linux Input设备详解
. 触摸屏控制
实际开发板上的触摸屏驱动编写
12、音频设备驱动
. OSS驱动详解
. I2S控制
13、块设备驱动体系结构
. 块设备的注册
内核模块与块设备驱动
. 块设备的I/O的特点
. I/O请求
. 操作集合
14、网卡驱动编写
. 设备注册
. 驱动层数据收发
. 地址解析
|







