封面
版权页
译者序
前言
作者简介
第1章 构建系统
1.1 引导加载程序
1.2 Linux内核
1.3 系统调用接口和C运行时库
1.4 系统共享库
1.5 根文件系统
1.6 Linux启动过程
1.7 构建嵌入式Linux系统
1.8 设置以太网通信
1.9 为NXP i.MX7D处理器构建嵌入式Linux系统
1.10 为Microchip SAMA5D2处理器构建嵌入式Linux系统
1.11 为Broadcom BCM2837处理器构建Linux嵌入式系统
1.12 使用Eclipse
第2章 Linux设备与驱动模型
2.1 总线核心驱动
2.2 总线控制器驱动
2.3 设备驱动
2.4 设备树简介
第3章 最简驱动程序
3.1 许可证
3.2 实验3-1:“helloworld”模块
3.3 代码清单3-1:helloworld_imx.c
3.4 代码清单3-2:Makefile
3.5 helloworld_imx.ko演示
3.6 实验3-2:“带参数的helloworld”模块
3.7 代码清单3-3:helloworld_imx_with_parameters.c
3.8 helloworld_imx_with_parameters.ko演示
3.9 实验3-3:“helloworld计时”模块
3.10 代码清单3-4:helloworld_imx_with_timing.c
3.11 helloworld_imx_with_timing.ko演示
第4章 字符设备驱动
4.1 实验4-1:“helloworld字符设备”模块
4.2 代码清单4-1:helloworld_imx_char_driver.c
4.3 代码清单4-2:Makefile
4.4 代码清单4-3:ioctl_test.c
4.5 helloworld_imx_char_driver.ko演示
4.6 将模块添加到内核构建
4.7 使用设备文件系统创建设备文件
4.8 实验4-2:“class字符设备”模块
4.9 代码清单4-4:helloworld_imx_class_driver.c
4.10 helloworld_imx_class_driver.ko演示
4.11 杂项字符设备驱动
4.12 实验4-3:“杂项字符设备”模块
4.13 代码清单4-5:misc_imx_driver.c
4.14 misc_imx_driver.ko演示
第5章 平台设备驱动
5.1 实验5-1:“平台设备”模块
5.2 代码清单5-1:hellokeys_imx.c
5.3 hellokeys_imx.ko演示
5.4 操作硬件的文档
5.5 硬件命名约定
5.6 引脚控制器
5.7 引脚控制子系统
5.8 设备树引脚控制器绑定
5.9 GPIO控制器驱动
5.10 GPIO描述符使用者接口
5.11 在内核和用户态之间交换数据
5.12 MMIO(内存映射I/O)设备访问
5.13 实验5-2:“RGB LED平台设备”模块
5.14 代码清单5-2:ledRGB_sam_platform.c
5.15 ledRGB_sam_platform.ko演示
5.16 平台驱动资源
5.17 Linux LED类
5.18 实验5-3:“RGB LED类”模块
5.19 代码清单5.3:ledRGB_sam_class_platform.c
5.20 ledRGB_sam_class_platform.ko演示
5.21 用户态中的平台设备驱动
5.22 用户定义的I/O:UIO
5.23 实验5-4:“LED UIO平台”模块
5.24 代码清单5-4:led_sam_UIO_platform.c
5.25 代码清单5-5:UIO_app.c
5.26 led_sam_UIO_platform.ko及UIO_app演示
第6章 I2C从端驱动
6.1 Linux I2C子系统
6.2 编写I2C从端驱动
6.3 实验6-1:“I2C I/O扩展设备”模块
6.4 代码清单6-1:io_imx_expander.c
6.5 io_imx_expander.ko演示
6.6 sysfs文件系统
6.7 实验6-2:“I2C多显LED”模块
6.8 代码清单6-2:ltc3206_imx_led_class.c
6.9 ltc3206_imx_led_class.ko演示
第7章 处理设备驱动中的中断
7.1 GPIO控制器在Linux内核的中断域
7.2 设备树中断处理
7.3 在Linux设备驱动中申请中断
7.4 实验7-1:“按钮中断设备”模块
7.5 代码清单7-1:int_imx_key.c
7.6 int_imx_key.ko演示
7.7 延迟工作
7.8 内核中的锁
7.9 内核中的睡眠
7.10 实验7-2:“睡眠设备”模块
7.11 代码清单7-2:int_imx_key_wait.c
7.12 int_imx_key_wait.ko演示
7.13 内核线程
7.14 实验7-3:“keyled类”模块
7.15 代码清单7-3:keyled_imx_class.c
7.16 keyled_imx_class.ko演示
第8章 在Linux驱动中分配内存
8.1 查询ARM的MMU转换表
8.2 Linux地址的类型
8.3 用户进程的虚拟地址到物理地址的映射
8.4 内核的虚拟地址到物理地址的映射
8.5 内核内存分配器
8.6 实验8-1:“链表内存分配”模块
8.7 代码清单8-1:linkedlist_imx_platform.c
8.8 linkedlist_imx_platform.ko演示
第9章 在Linux设备驱动中使用DMA
9.1 缓存一致性
9.2 Linux DMA引擎API
9.3 实验9-1:“流式DMA”模块
9.4 代码清单9-1:sdma_imx_m2m.c
9.5 sdma_imx_m2m.ko演示
9.6 DMA分散/聚集映射
9.7 实验9-2:“分散/聚集DMA设备”模块
9.8 代码清单9-2:sdma_imx_sg_m2m.c
9.9 sdma_imx_sg_m2m.ko演示
9.10 用户态DMA
9.11 实验9-3:“用户态DMA”模块
9.12 代码清单9-3:sdma_imx_mmap.c
9.13 代码清单9-4:sdma.c
9.14 sdma_imx_mmap.ko演示
第10章 输入子系统设备驱动框架
10.1 输入子系统驱动程序
10.2 实验10-1:“输入子系统加速度计”模块
10.3 代码清单10-1:i2c_imx_accel.c
10.4 i2c_imx_accel.ko演示
10.5 在Linux中使用SPI
10.6 Linux的SPI子系统
10.7 编写SPI从设备驱动程序
10.8 实验10-2:“SPI加速度计输入设备”模块
10.9 代码清单10-2:adxl345_imx.c
10.10 adxl345_imx.ko演示
第11章 设备驱动中的工业IO子系统
11.1 IIO设备的sysfs接口
11.2 IIO设备通道
11.3 iio_info数据结构
11.4 缓冲区
11.5 工业I/O事件
11.6 IIO工具
11.7 实验11-1:“IIO子系统DAC”模块
11.8 代码清单11-1:ltc2607_imx_dual_device.c
11.9 实验11-2:“SPIDEV双通道ADC用户”应用程序的“IIO子系统DAC”模块
11.10 代码清单11-2:LTC2422_spidev.c
11.11 ltc2607_imx_dual_device.ko配合LTC2422_spidev使用演示
11.12 实验11-3:“IIO子系统ADC”模块
11.13 代码清单11-3:ltc2422_imx_dual.c
11.14 代码清单11-4:ltc2422_app.c
11.15 ltc2422_imx_dual.ko配合ltc2422_app使用演示
11.16 实验11-4:“具备硬件触发功能的IIO子系统ADC”模块
11.17 代码清单11-5:ltc2422_imx_trigger.c
11.18 ltc2422_imx_trigger.ko配合LTC2422_app使用演示
第12章 在Linux设备驱动程序中使用regmap API
12.1 regmap的实现
12.2 实验12-1:“SPI regmap IIO设备”模块
12.3 代码清单12-1:adxl345_imx_iio.c
12.4 adxl345_imx_iio.ko演示
第13章 Linux USB设备驱动
13.1 USB 2.0总线拓扑
13.2 USB总线枚举和设备布局
13.3 USB数据传输
13.4 USB设备类别
13.5 USB描述符
13.6 Linux USB子系统
13.7 编写Linux USB设备驱动程序
13.8 实验13-1:USB HID设备应用程序
13.9 实验13-2:“USB LED”模块
13.10 代码清单13-1:usb_led.c
13.11 usb_led.ko演示
13.12 实验13-3:“USB LED和开关”模块
13.13 代码清单13-2:usb_urb_int_led.c
13.14 usb_urb_int_led.ko演示
13.15 实验13-4:“连接到USB多显LED的I2C”模块
13.16 代码清单13-3:usb_ltc3206.c
13.17 usb_ltc3206.ko演示
附录 将内核模块移植到Microchip SAMA5D27-SOM1上
A.1 为Microchip SAMA5D27-SOM1模块化系统构建嵌入式Linux系统
A.2 Microchip SAMA5D27-SOM1模块化系统实验的硬件描述
参考文献
术语表
更新时间:2021-08-31 18:01:51