全面解析基于ARM内核的嵌入式Linux驱动开发,通过丰富的实战案例让单片机开发者熟练掌握嵌入式Linux驱动开发。
目录
第四篇ARMLinux驱动开发篇
第1章字符设备驱动开发
1.1字符设备驱动简介
1.2字符设备驱动开发步骤
1.2.1驱动模块的加载和卸载
1.2.2字符设备注册与注销
1.2.3实现设备的具体操作函数
1.2.4添加LICENSE和作者信息
1.3Linux设备号
1.3.1设备号的组成
1.3.2设备号的分配
1.4chrdevbase字符设备驱动开发实验
1.4.1实验程序编写
1.4.2编写测试App
1.4.3编译驱动程序和测试App
1.4.4运行测试
第2章嵌入式LinuxLED灯驱动开发实验
2.1Linux下LED灯驱动原理
2.1.1地址映射
2.1.2I/O内存访问函数
2.2硬件原理图分析
2.3实验程序编写
2.3.1LED灯驱动程序编写
2.3.2编写测试App
2.4运行测试
2.4.1编译驱动程序和测试App
2.4.2运行测试
第3章新字符设备驱动实验
3.1新字符设备驱动原理
3.1.1分配和释放设备号
3.1.2新的字符设备注册方法
3.2自动创建设备节点
3.2.1mdev机制
3.2.2创建和删除类
3.2.3创建设备
3.2.4参考示例
3.3设置文件私有数据
3.4硬件原理图分析
3.5实验程序编写
3.5.1LED灯驱动程序编写
3.5.2编写测试App
3.6运行测试
3.6.1编译驱动程序和测试App
3.6.2运行测试
第4章Linux设备树
4.1什么是设备树
4.2DTS、DTB和DTC
4.3DTS语法
4.3.1.dtsi头文件
4.3.2设备节点
4.3.3标准属性
4.3.4根节点compatible属性
4.3.5向节点追加或修改内容
4.4创建小型模板设备树
4.5设备树在系统中的体现
4.6特殊节点
4.6.1aliases子节点
4.6.2chosen子节点
4.7Linux内核解析DTB文件
4.8绑定信息文档
4.9设备树常用OF操作函数
4.9.1查找节点的OF函数
4.9.2查找父/子节点的OF函数
4.9.3提取属性值的OF函数
4.9.4其他常用的OF函数
第5章设备树下的LED灯驱动实验
5.1设备树LED驱动原理
5.2硬件原理图分析
5.3实验程序编写
5.3.1修改设备树文件
5.3.2LED灯驱动程序编写
5.3.3编写测试App
5.4运行测试
5.4.1编译驱动程序和测试App
5.4.2运行测试
第6章pinctrl和gpio子系统实验
6.1pinctrl子系统
6.1.1pinctrl子系统简介
6.1.2I.MX6ULL的pinctrl子系统驱动
6.1.3设备树中添加pinctrl节点模板
6.2gpio子系统
6.2.1gpio子系统简介
6.2.2I.MX6ULL的gpio子系统驱动
6.2.3gpio子系统API函数
6.2.4设备树中添加gpio节点模板
6.2.5与GPIO相关的OF函数
6.3硬件原理图分析
6.4实验程序编写
6.4.1修改设备树文件
6.4.2LED灯驱动程序编写
6.4.3编写测试App
6.5运行测试
6.5.1编译驱动程序和测试App
6.5.2运行测试
第7章Linux蜂鸣器实验
7.1蜂鸣器驱动原理
7.2硬件原理图分析
7.3实验程序编写
7.3.1修改设备树文件
7.3.2蜂鸣器驱动程序编写
7.3.3编写测试App
7.4运行测试
7.4.1编译驱动程序和测试App
7.4.2运行测试
第8章Linux并发与竞争
8.1并发与竞争
8.2原子操作
8.2.1原子操作简介
8.2.2原子整型数据操作API函数
8.2.3原子位操作API函数
8.3自旋锁
8.3.1自旋锁简介
8.3.2自旋锁API函数
8.3.3其他类型的锁
8.3.4自旋锁使用注意事项
8.4信号量
8.4.1信号量简介
8.4.2信号量API函数
8.5互斥体
8.5.1互斥体简介
8.5.2互斥体API函数
第9章Linux并发与竞争实验
9.1原子操作实验
9.1.1实验程序编写
9.1.2运行测试
9.2自旋锁实验
9.2.1实验程序编写
9.2.2运行测试
9.3信号量实验
9.3.1实验程序编写
9.3.2运行测试
9.4互斥体实验
9.4.1实验程序编写
9.4.2运行测试
第10章Linux按键输入实验
10.1Linux下按键驱动原理
10.2硬件原理图分析
10.3实验程序编写
10.3.1修改设备树文件
10.3.2按键驱动程序编写
10.3.3编写测试App
10.4运行测试
10.4.1编译驱动程序和测试App
10.4.2运行测试
第11章Linux内核定时器实验
11.1Linux时间管理和内核定时器简介
11.1.1内核时间管理简介
11.1.2内核定时器简介
11.1.3Linux内核短延时函数
11.2硬件原理图分析
11.3实验程序编写
11.3.1修改设备树文件
11.3.2定时器驱动程序编写
11.3.3编写测试App
11.4运行测试
11.4.1编译驱动程序和测试App
11.4.2运行测试
第12章Linux中断实验
12.1Linux中断简介
12.1.1Linux中断API函数
12.1.2上半部与下半部
12.1.3设备树中断信息节点
12.1.4获取中断号
12.2硬件原理图分析
12.3实验程序编写
12.3.1修改设备树文件
12.3.2按键中断驱动程序编写
12.3.3编写测试App
12.4运行测试
12.4.1编译驱动程序和测试App
12.4.2运行测试
第13章Linux阻塞和非阻塞I/O实验
13.1阻塞和非阻塞I/O
13.1.1阻塞和非阻塞简介
13.1.2等待队列
13.1.3轮询
13.1.4Linux驱动下的poll操作函数
13.2阻塞I/O实验
13.2.1硬件原理图分析
13.2.2实验程序编写
13.2.3运行测试
13.3非阻塞I/O实验
13.3.1硬件原理图分析
13.3.2实验程序编写
13.3.3运行测试
第14章异步通知实验
14.1异步通知
14.1.1异步通知简介
14.1.2驱动中的信号处理
14.1.3应用程序对异步通知的处理
14.2硬件原理图分析
14.3实验程序编写
14.3.1修改设备树文件
14.3.2程序编写
14.3.3编写测试App
14.4运行测试
14.4.1编译驱动程序和测试App
14.4.2运行测试
第15章platform设备驱动实验
15.1Linux驱动的分离与分层
15.1.1驱动的分隔与分离
15.1.2驱动的分层
15.2platform平台驱动模型简介
15.2.1platform总线
15.2.2platform驱动
15.2.3platform设备
15.3硬件原理图分析
15.4实验程序编写
15.4.1platform设备与驱动程序编写
15.4.2编写测试App
15.5运行测试
15.5.1编译驱动程序和测试App
15.5.2运行测试
第16章设备树下的platform驱动编写
16.1设备树下的platform驱动简介
16.2硬件原理图分析
16.3实验程序编写
16.3.1修改设备树文件
16.3.2platform驱动程序编写
16.3.3编写测试App
16.4运行测试
16.4.1编译驱动程序和测试App
16.4.2运行测试
第17章Linux自带的LED灯驱动实验
17.1Linux内核自带LED灯驱动使能
17.2Linux内核自带LED灯驱动简介
17.2.1LED灯驱动框架分析
17.2.2module_platform_driver()函数简介
17.2.3gpio_led_probe()函数简介
17.3设备树节点编写
17.4运行测试
第18章LinuxMISC驱动实验
18.1MISC设备驱动简介
18.2硬件原理图分析
18.3实验程序编写
18.3.1修改设备树
18.3.2beep驱动程序编写
18.3.3编写测试App
18.4运行测试
18.4.1编译驱动程序和测试App
18.4.2运行测试
第19章Linuxinput子系统实验
19.1input子系统
19.1.1input子系统简介
19.1.2input驱动编写流程
19.1.3input_event结构体
19.2硬件原理图分析
19.3实验程序编写
19.3.1修改设备树文件
19.3.2按键input驱动程序编写
19.3.3编写测试App
19.4运行测试
19.4.1编译驱动程序和测试App
19.4.2运行测试
19.5Linux自带按键驱动程序的使用
19.5.1自带按键驱动程序源码简介
19.5.2自带按键驱动程序的使用
第20章LinuxPWM驱动实验
20.1PWM驱动简介
20.1.1设备树下的PWM控制器节点
20.1.2PWM子系统
20.1.3PWM驱动源码分析
20.2PWM驱动编写
20.2.1修改设备树
20.2.2使能PWM驱动
20.3PWM驱动测试
第21章LinuxLCD驱动实验
21.1Linux下LCD驱动简介
21.1.1Framebuffer设备
21.1.2LCD驱动简介
21.2硬件原理图分析
21.3LCD驱动程序编写
21.3.1修改设备树
21.3.2LCD屏幕背光节点信息
21.4运行测试
21.4.1LCD屏幕基本测试
21.4.2设置LCD作为终端控制台
21.4.3LCD背光调节
21.4.4LCD自动关闭解决方法
第22章LinuxRTC驱动实验
22.1Linux内核RTC驱动简介
22.2I.MX6U内部RTC驱动分析
22.3RTC时间查看与设置
第23章LinuxI2C驱动实验
23.1LinuxI2C驱动框架简介
23.1.1I2C总线驱动
23.1.2I2C设备驱动
23.1.3I2C设备和驱动匹配过程
23.2I.MX6U的I2C适配器驱动分析
23.3I2C设备驱动编写流程
23.3.1I2C设备信息描述
23.3.2I2C设备数据收发处理流程
23.4硬件原理图分析
23.5实验程序编写
23.5.1修改设备树
23.5.2AP3216C驱动编写
23.5.3编写测试App
23.6运行测试
23.6.1编译驱动程序和测试App
23.6.2运行测试
.......