2 Star 4 Fork 5

lishanwen / linux驱动开发进阶代码

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

linux驱动开发进阶代码

还在为Linux驱动的学习而迷茫吗?《Linux驱动开发进阶》将带您走出困境,每个章节都有详细的代码示例。

showme

目录  
前  言	0
第一章 文件系统	1
    1.1应用程序执行过程	2
    1.2 VFS虚拟文件系统	3
        1.2.1 Linux文件系统对象	4
        1.2.2 文件系统的挂载	19
        1.2.3 文件描述符(fd)	21
    1.3 文件系统注册	23
        1.3.2 file_system_type	25
        1.3.3 mount	26
        1.3.4 file_operation	31
    1.4 实现一个虚拟文件系统	33
        1.4.1 定义文件系统结构	33
        1.4.2 memfs源码	44
第二章 sysfs文件系统	56
    2.1内核对象	56
        2.1.1 kobject	57
        2.1.2 kobj_type	59
        2.1.3 kset	61
        2.1.4 kernfs_node	63
    2.2 文件创建	66
        2.2.1 创建目录文件	66
        2.2.2	创建属性文件	68
        2.3 统一驱动模型	75
        2.3.1 总线	76
        2.3.2 设备	86
        2.3.3 驱动	97
    2.4 sysfs与热插拔	108
    2.5 设备模型与字符设备关系	112
        2.5.1 devtmpfs	113
        2.5.2 设备节点与统一设备模型	114
    2.6 子系统	115
        2.6.4 设备类	118
        2.6.5 总线与类的关系	122
    2.7 实例说明	130
        2.7.1 总线	132
        2.7.2 控制器驱动	137
        2.7.3 设备驱动	139
        2.7.4 编译测试	140
    2.8 component框架	142
第三章 热插拔机制	152
    3.1 热插拔与sysfs关系	153
    3.2 内核调用应用程序	161
    3.3 热插拔事件关键字	166
        3.3.1 ACTION	167
        3.3.2 MAJOR和MINOR	169
        3.3.3 MODALIAS(已过时)	170
        3.3.5 DEVNAME和DEVPATH	174
        3.3.6 其他关键字	174
        3.3.4 sysfs属性文件	174
    3.4 mdev热插拔	175
        3.4.1 环境变量测试	177
        3.4.2 mdev规则	182
    3.5 udev热插拔	189
        3.5.1 udev规则	190
        3.5.2 动态挂载驱动	194
        3.5.3 设置设备节点权限	200
        3.5.4 设备节点连接文件	201
        3.5.5 运行脚本	201
        3.5.6 udev调试工具	203
        3.5.7基于属性文件的热插拔驱动	203
    3.6	实例说明	208
        3.6.1 实现一个热插拔的LED驱动	208
第四章 内存管理	222
    4.1 内存管理机制	223
        4.1.1 基于位图的内存管理	223
        4.1.2 基于链表的内存管理	224
    4.2 内存管理单元	224
        4.2.3 伙伴算法(buddy)	227
    4.3 内存布局	230
        4.3.1 内存地址映射	230
        4.3.2 用户空间内存布局	232
    4.4 内存分配	233
        4.4.1 页分配器	234
        4.4.2 slab分配器	236
        4.4.3 kmalloc和vmalloc	237
    4.5 mmap机制	239
        4.5.1 映射类型(用户空间)	240
        4.5.2 内核中的mmap	244
        4.5.3 mmap优缺点	253
    4.6 DMA内存	254
        4.6.1 DMA设备驱动	254
        4.6.2 DMA示例说明	261
        4.6.3 DMA BSP驱动简单说明	264
第五章 系统调用	266
    5.1 系统调用过程	266
    5.2 阻塞与非阻塞IO	269
        5.2.1 阻塞方式	270
        5.2.2 非阻塞方式	278
    5.3 异步IO	283
        5.3.1 poll	284
        5.3.2 select	291
        5.3.3 epoll	293
        5.3.4 异步通知	296
    5.4 unlocked_ioctl	302
    5.5 sysfs_notify	307
第六章 多线程与并发	314
    6.1 线程与进程	314
    6.2	内核线程	317
    6.3	底半部机制	321
        6.3.1 软中断	322
        6.3.2 tasklet	323
        6.3.3 工作队列	329
    6.4中断线程化	338
    6.5 进程	341
        6.5.1 fork	342
        6.5.2 vfork	344
        6.5.3 clone	345
        6.5.4 pthread_create	347
    6.6 锁机制	348
        6.6.1 原子操作	348
        6.6.2 自旋锁	350
        6.6.3 信号量	352
        6.6.4 互斥锁	353
        6.6.5 completion	354
第七章 DRM驱动程序设计	356
    7.1 DRM简介	358
        7.1.1 KMS(Kernel Mode Setting)	359
        7.1.2 GEM(Graphics Execution Manager)	361
    7.2 DRM驱动	362
        7.2.1 驱动结构体	362
        7.2.2 设备结构体	365
        7.2.3 DRM驱动注册	367
        7.2.4 DRM模式设置	370
    7.3 实例说明	389
    7.4 DRM Simple Display框架	402
    7.5 DRM热插拔	414
        7.5.1 中断方式	416
        7.5.2 poll方式	432
        7.5.3 实际中的热插拔	443
    7.6 DRM中plane update函数详解	444
    7.7 DRM相关结构	445
        7.7.1 edid	445
        7.7.2 panel	449
        7.7.3 bridge	451
        7.7.4 组件连接	458
第八章 GPIO子系统BSP驱动	466
    8.1 GPIO寄存器说明	466
    8.2 pinctrl子系统	474
        8.2.1 pinctrl BSP驱动	477
        8.2.2 pinctrl客户端驱动	487
        8.2.3 虚拟pinctrl子系统实例	488
    8.3 GPIO子系统	498
        8.3.1 GPIO BSP驱动	498
        8.3.2 GPIO 客户端驱动	507
        8.3.3 虚拟GPIO子系统实例	508
第九章 SPI子系统BSP驱动	518
    9.1 SPI硬件	518
        9.1.1 SPI传输模式	519
        9.1.2 SPI寄存器列表	521
        9.1.3 SPI寄存器说明	522
    9.2 SPI总线注册	537
    9.3 SPI设备注册	541
    9.4 SPI驱动注册	544
        9.4.1 BSP驱动程序	544
        9.4.2 设备驱动程序	551
        9.4.3 SPI BSP例子	552
第十章 I2C子系统BSP驱动	561
    10.1 I2C协议	561
        10.1.1 I2C硬件	561
        10.1.2 I2C控制器	564
        10.1.3 I2C寄存器说明	565
    10.2 I2C总线注册	575
    10.3 I2C设备注册	578
    10.4 I2C驱动注册	580
        10.4.1 BSP驱动程序	580
        10.4.2 设备驱动程序	585
        10.4.3 I2C BSP实例	586
MIT License Copyright (c) 2023 lishanwen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

《Linux驱动开发进阶》教程 展开 收起
C 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/li-shan-asked/linux-advanced-development-code.git
git@gitee.com:li-shan-asked/linux-advanced-development-code.git
li-shan-asked
linux-advanced-development-code
linux驱动开发进阶代码
master

搜索帮助