Linux驱动开发入门与实战(第2版)

Linux驱动开发入门与实战(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2014-02
版次: 2
ISBN: 9787302337768
定价: 69.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 135页
字数: 707千字
正文语种: 简体中文
70人买过
  •    “Linux典藏大系”自2010年陆续出版以来,因其内容丰富、讲解细腻、通俗易懂和实用性强等特色而深受广大读者的喜爱,长期位居同类图书销售排行榜的前列,累计销量近10万册。丛书中部分图书荣获51CTO读书频道“最受读者喜爱的原创IT技术图书奖”,还有多种图书的中文繁体字版权输出到了中国台湾地区出版发行。丛书中的多个品种被国内几十所培训机构和大中专院校选为教材。丛书的出版还得到了国内Linux领域最知名的技术社区ChinaUnix的大力支持。读者在ChinaUnix社区的论坛上与社区中的Linux爱好者进行了广泛的交流,取得了良好的学习效果。2014年2月“Linux典藏大系“全新升级版(第2版)正式出版,第2版图书迎合了Linux技术的最新发展,全部采用当前最流行和稳定的Linux发行版或者相关工具,是Linux爱好者学习Linux的好帮手。    《Linux典藏大系:Linux驱动开发入门与实战(第2版)》是获得了大量读者好评的“Linux典藏大系”中的《Linux驱动开发入门与实战》的第2版。本.书由浅入深,全面、系统地介绍了Linux驱动开发技术,并提供了大量实例供读者实战演练。另外,作者在实例讲解中详细分析了各种重要的理论知识,让读者能够举一反三。
      《Linux典藏大系:Linux驱动开发入门与实战(第2版)》共分3篇。第1篇介绍了Linux驱动开发概述、嵌入式处理器和开发板简介、构建嵌入式驱动程序开发环境、构建嵌入式Linux操作系统、构建第一个驱动程序、简单的字符设备驱动程序等内容;第2篇介绍了设备驱动中的并发控制、设备驱动中的阻塞和同步机制、中断与时钟机制、内外存访问等内容;第3篇介绍了设备驱动模型、RTC实时时钟驱动程序、看门狗驱动程序、IIC设备驱动程序、LCD设备驱动程序、触摸屏设备驱动程序、输入子系统设计、块设备驱动程序、USB设备驱动程序等内容。
      《Linux典藏大系:Linux驱动开发入门与实战(第2版)》重点突出,涉及面广,实用性强,从基本知识到核心原理,再到实例开发,几乎涉及Linux驱动开发的所有重要知识。《Linux典藏大系:Linux驱动开发入门与实战(第2版)》适合所有想学习Linux驱动开发的入门人员阅读,也适合作为驱动工程师的参考书,对于Linux驱动开发的专业开发人员也有很高的参考价值。   郑强,毕业于西南大学,获硕士学位。长期从事嵌入式系统开发和设计。现任职于某公司的项目主管,先后开发过十几个大中型项目,涉及GPS定位系统、刷卡系统、指纹识别和手机等产品。工作之余,热心于Flash游戏引擎开发和2D游戏开发。 第1篇Linux驱动开发基础
    第1章Linux驱动开发概述
    1.1Linux设备驱动的基本概念
    1.1.1设备驱动程序概述
    1.1.2设备驱动程序的作用
    1.1.3设备驱动的分类
    1.2Linux操作系统与驱动的关系
    1.3Linux驱动程序开发
    1.3.1用户态和内核态
    1.3.2模块机制
    1.3.3编写设备驱动程序需要了解的知识
    1.4编写设备驱动程序的注意事项
    1.4.1应用程序开发与驱动程序开发的差异
    1.4.2GUNC开发驱动程序
    1.4.3不能使用C库开发驱动程序
    1.4.4没有内存保护机制
    1.4.5小内核栈
    1.4.6重视可移植性
    1.5Linux驱动的发展趋势
    1.5.1Linux驱动的发展
    1.5.2驱动的应用
    1.5.3相关学习资源
    1.6小结

    第2章嵌入式处理器和开发板简介
    2.1处理器的选择
    2.1.1处理器简述
    2.1.2处理器的种类
    2.2ARM处理器
    2.2.1ARM处理器简介
    2.2.2ARM处理器系列
    2.2.3ARM处理器的应用
    2.2.4ARM处理器的选型
    2.2.5ARM处理器选型举例
    2.3S3C2440开发板
    2.3.1S3C2440开发板简介
    2.3.2S3C2440开发板的特性
    2.3.3其他开发板
    2.4小结

    第3章构建嵌入式驱动程序开发环境
    3.1虚拟机和Linux安装
    3.1.1在Windows上安装虚拟机
    3.1.2在虚拟机上安装Linux
    3.1.3设置共享目录
    3.2代码阅读工具SourceInsight
    3.2.1Sourcelnsight简介
    3.2.2阅读源代码
    3.3小结

    第4章构建嵌入式Linux操作系统
    4.1Linux操作系统的介绍
    4.1.1Linux操作系统
    4.1.2Linux操作系统的优点
    4.2Linux内核子系统
    4.2.1进程管理
    4.2.2内存管理
    4.2.3文件系统
    4.2.4设备管理
    4.2.5网络功能
    4.3Linux源代码结构分析
    4.3.1arch目录
    4.3.2drivers目录
    4.3.3fs目录
    4.3.4其他目录
    4.4内核配置选项
    4.4.1配置编译过程
    4.4.2常规配置
    4.4.3模块配置
    4.4.4块设备层配置
    4.4.5CPU类型和特性配置
    4.4.6电源管理配置
    4.4.7总线配置
    4.4.8网络配置4.4.9 设备驱动配置
    4.4.10 文件系统配置
    4.5 嵌入式文件系统基础知识
    4.5.1 嵌入式文件系统
    4.5.2 嵌入式系统的存储介质
    4.5.3 JFFS文件系统
    4.5.4 YAFFS文件系统
    4.6 构建根文件系统
    4.6.1 根文件系统概述
    4.6.2 Linux根文件系统目录结构
    4.6.3 BusyBox构建根文件系统
    4.7 小结第5章 构建第一个驱动程序
    5.1 开发环境配置之内核升级
    5.1.1 为什么升级内核
    5.1.2 内核升级
    5.1.3 make menconfig的注意事项
    5.2 Hello World驱动程序
    5.2.1 驱动模块的组成
    5.2.2 Hello World模块
    5.2.3 编译Hello World模块
    5.2.4 模块的操作
    5.2.5 Hello World模块加载后文件系统的变化
    5.3 模块参数和模块之间通信
    5.3.1 模块参数
    5.3.2 模块的文件格式ELF
    5.3.3 模块之间的通信
    5.3.4 模块之间的通信实例
    5.4 将模块加入内核
    5.4.1 向内核添加模块
    5.4.2 Kconfig
    5.4.3 Kconfig的语法
    5.4.4 应用实例:在内核中新增加add_sub模块
    5.4.5 对add_sub模块进行配置
    5.5 小结
    第6章 简单的字符设备驱动程序
    6.1 字符设备驱动程序框架
    6.1.1 字符设备和块设备
    6.1.2 主设备号和次设备号
    6.1.3 申请和释放设备号
    6.2 初识cdev结构
    6.2.1 cdev结构体
    6.2.2 file_operations结构体
    6.2.3 cdev和file_operations结构体的关系
    6.2.4 inode结构体 102
    6.3 字符设备驱动的组成 103
    6.3.1 字符设备加载和卸载函数 103
    6.3.2 file_operations结构体和其成员函数
    6.3.3 驱动程序与应用程序的数据交换
    6.3.4 字符设备驱动程序组成小结
    6.4 VirtualDisk字符设备驱动
    6.4.1 VirtualDisk的头文件、宏和设备结构体
    6.4.2 加载和卸载驱动程序
    6.4.3 cdev的初始化和注册
    6.4.4 打开和释放函数
    6.4.5 读写函数
    6.4.6 seek()函数
    6.4.7 ioctl()函数
    6.5 小结
    第2篇 Linux驱动开发核心技术
    第7章 设备驱动中的并发控制
    7.1 并发与竞争
    7.2 原子变量操作
    7.2.1 原子变量操作
    7.2.2 原子整型操作
    7.2.3 原子位操作
    7.3 自旋锁
    7.3.1 自旋锁概述
    7.3.2 自旋锁的使用
    7.3.3 自旋锁的使用注意事项
    7.4 信号量
    7.4.1 信号量概述
    7.4.2 信号量的实现
    7.4.3 信号量的使用
    7.4.4 自旋锁与信号量的对比
    7.5 完成量
    7.5.1 完成量概述
    7.5.2 完成量的实现
    7.5.3 完成量的使用
    7.6 小结第8章 设备驱动中的阻塞和同步机制
    8.1 阻塞和非阻塞
    8.2 等待队列
    8.2.1 等待队列概述
    8.2.2 等待队列的实现
    8.2.3 等待队列的使用
    8.3 同步机制实验
    8.3.1 同步机制设计
    8.3.2 实验验证
    8.4 小结
    第9章 中断与时钟机制
    9.1 中断简述
    9.1.1 中断的概念
    9.1.2 中断的宏观分类
    9.1.3 中断产生的位置分类
    9.1.4 同步和异步中断
    9.1.5 中断小结
    9.2 中断的实现过程
    9.2.1 中断信号线(IRQ)
    9.2.2 中断控制器
    9.2.3 中断处理过程
    9.2.4 中断的安装与释放
    9.3 按键中断实例
    9.3.1 按键设备原理图
    9.3.2 有寄存器设备和无寄存器设备
    9.3.3 按键设备相关端口寄存器
    9.4 按键中断实例程序分析
    9.4.1 按键驱动程序组成
    9.4.2 初始化函数s3c2440_buttons_init()
    9.4.3 中断处理函数isr_button()
    9.4.4 退出函数s3c2440_buttons_exit()
    9.5 时钟机制
    9.5.1 时间度量
    9.5.2 时间延时
    9.6 小结第10章 内外存访问
    10.1 内存分配
     10.1.1 kmalloc()函数
     10.1.2 vmalloc()函数
     10.1.3 后备高速缓存
    10.2 页面分配
     10.2.1 内存分配
     10.2.2 物理地址和虚拟地址之间的转换
    10.3 设备I/O端口的访问
     10.3.1 Linux I/O端口读写函数
     10.3.2 I/O内存读写
     10.3.3 使用I/O端口
    10.4 小结
    第3篇 Linux驱动开发实用实战
    第11章 设备驱动模型
    第12章 RTC实时时钟驱动第13章 看门狗驱动程序第14章 IIC设备驱动程序
    第15章 LCD设备驱动程序
    第16章 触摸屏设备驱动程序
    第17章 输入子系统设计
    第18章 块设备驱动程序第19章 USB设备驱动程序
  • 内容简介:
       “Linux典藏大系”自2010年陆续出版以来,因其内容丰富、讲解细腻、通俗易懂和实用性强等特色而深受广大读者的喜爱,长期位居同类图书销售排行榜的前列,累计销量近10万册。丛书中部分图书荣获51CTO读书频道“最受读者喜爱的原创IT技术图书奖”,还有多种图书的中文繁体字版权输出到了中国台湾地区出版发行。丛书中的多个品种被国内几十所培训机构和大中专院校选为教材。丛书的出版还得到了国内Linux领域最知名的技术社区ChinaUnix的大力支持。读者在ChinaUnix社区的论坛上与社区中的Linux爱好者进行了广泛的交流,取得了良好的学习效果。2014年2月“Linux典藏大系“全新升级版(第2版)正式出版,第2版图书迎合了Linux技术的最新发展,全部采用当前最流行和稳定的Linux发行版或者相关工具,是Linux爱好者学习Linux的好帮手。    《Linux典藏大系:Linux驱动开发入门与实战(第2版)》是获得了大量读者好评的“Linux典藏大系”中的《Linux驱动开发入门与实战》的第2版。本.书由浅入深,全面、系统地介绍了Linux驱动开发技术,并提供了大量实例供读者实战演练。另外,作者在实例讲解中详细分析了各种重要的理论知识,让读者能够举一反三。
      《Linux典藏大系:Linux驱动开发入门与实战(第2版)》共分3篇。第1篇介绍了Linux驱动开发概述、嵌入式处理器和开发板简介、构建嵌入式驱动程序开发环境、构建嵌入式Linux操作系统、构建第一个驱动程序、简单的字符设备驱动程序等内容;第2篇介绍了设备驱动中的并发控制、设备驱动中的阻塞和同步机制、中断与时钟机制、内外存访问等内容;第3篇介绍了设备驱动模型、RTC实时时钟驱动程序、看门狗驱动程序、IIC设备驱动程序、LCD设备驱动程序、触摸屏设备驱动程序、输入子系统设计、块设备驱动程序、USB设备驱动程序等内容。
      《Linux典藏大系:Linux驱动开发入门与实战(第2版)》重点突出,涉及面广,实用性强,从基本知识到核心原理,再到实例开发,几乎涉及Linux驱动开发的所有重要知识。《Linux典藏大系:Linux驱动开发入门与实战(第2版)》适合所有想学习Linux驱动开发的入门人员阅读,也适合作为驱动工程师的参考书,对于Linux驱动开发的专业开发人员也有很高的参考价值。
  • 作者简介:
      郑强,毕业于西南大学,获硕士学位。长期从事嵌入式系统开发和设计。现任职于某公司的项目主管,先后开发过十几个大中型项目,涉及GPS定位系统、刷卡系统、指纹识别和手机等产品。工作之余,热心于Flash游戏引擎开发和2D游戏开发。
  • 目录:
    第1篇Linux驱动开发基础
    第1章Linux驱动开发概述
    1.1Linux设备驱动的基本概念
    1.1.1设备驱动程序概述
    1.1.2设备驱动程序的作用
    1.1.3设备驱动的分类
    1.2Linux操作系统与驱动的关系
    1.3Linux驱动程序开发
    1.3.1用户态和内核态
    1.3.2模块机制
    1.3.3编写设备驱动程序需要了解的知识
    1.4编写设备驱动程序的注意事项
    1.4.1应用程序开发与驱动程序开发的差异
    1.4.2GUNC开发驱动程序
    1.4.3不能使用C库开发驱动程序
    1.4.4没有内存保护机制
    1.4.5小内核栈
    1.4.6重视可移植性
    1.5Linux驱动的发展趋势
    1.5.1Linux驱动的发展
    1.5.2驱动的应用
    1.5.3相关学习资源
    1.6小结

    第2章嵌入式处理器和开发板简介
    2.1处理器的选择
    2.1.1处理器简述
    2.1.2处理器的种类
    2.2ARM处理器
    2.2.1ARM处理器简介
    2.2.2ARM处理器系列
    2.2.3ARM处理器的应用
    2.2.4ARM处理器的选型
    2.2.5ARM处理器选型举例
    2.3S3C2440开发板
    2.3.1S3C2440开发板简介
    2.3.2S3C2440开发板的特性
    2.3.3其他开发板
    2.4小结

    第3章构建嵌入式驱动程序开发环境
    3.1虚拟机和Linux安装
    3.1.1在Windows上安装虚拟机
    3.1.2在虚拟机上安装Linux
    3.1.3设置共享目录
    3.2代码阅读工具SourceInsight
    3.2.1Sourcelnsight简介
    3.2.2阅读源代码
    3.3小结

    第4章构建嵌入式Linux操作系统
    4.1Linux操作系统的介绍
    4.1.1Linux操作系统
    4.1.2Linux操作系统的优点
    4.2Linux内核子系统
    4.2.1进程管理
    4.2.2内存管理
    4.2.3文件系统
    4.2.4设备管理
    4.2.5网络功能
    4.3Linux源代码结构分析
    4.3.1arch目录
    4.3.2drivers目录
    4.3.3fs目录
    4.3.4其他目录
    4.4内核配置选项
    4.4.1配置编译过程
    4.4.2常规配置
    4.4.3模块配置
    4.4.4块设备层配置
    4.4.5CPU类型和特性配置
    4.4.6电源管理配置
    4.4.7总线配置
    4.4.8网络配置4.4.9 设备驱动配置
    4.4.10 文件系统配置
    4.5 嵌入式文件系统基础知识
    4.5.1 嵌入式文件系统
    4.5.2 嵌入式系统的存储介质
    4.5.3 JFFS文件系统
    4.5.4 YAFFS文件系统
    4.6 构建根文件系统
    4.6.1 根文件系统概述
    4.6.2 Linux根文件系统目录结构
    4.6.3 BusyBox构建根文件系统
    4.7 小结第5章 构建第一个驱动程序
    5.1 开发环境配置之内核升级
    5.1.1 为什么升级内核
    5.1.2 内核升级
    5.1.3 make menconfig的注意事项
    5.2 Hello World驱动程序
    5.2.1 驱动模块的组成
    5.2.2 Hello World模块
    5.2.3 编译Hello World模块
    5.2.4 模块的操作
    5.2.5 Hello World模块加载后文件系统的变化
    5.3 模块参数和模块之间通信
    5.3.1 模块参数
    5.3.2 模块的文件格式ELF
    5.3.3 模块之间的通信
    5.3.4 模块之间的通信实例
    5.4 将模块加入内核
    5.4.1 向内核添加模块
    5.4.2 Kconfig
    5.4.3 Kconfig的语法
    5.4.4 应用实例:在内核中新增加add_sub模块
    5.4.5 对add_sub模块进行配置
    5.5 小结
    第6章 简单的字符设备驱动程序
    6.1 字符设备驱动程序框架
    6.1.1 字符设备和块设备
    6.1.2 主设备号和次设备号
    6.1.3 申请和释放设备号
    6.2 初识cdev结构
    6.2.1 cdev结构体
    6.2.2 file_operations结构体
    6.2.3 cdev和file_operations结构体的关系
    6.2.4 inode结构体 102
    6.3 字符设备驱动的组成 103
    6.3.1 字符设备加载和卸载函数 103
    6.3.2 file_operations结构体和其成员函数
    6.3.3 驱动程序与应用程序的数据交换
    6.3.4 字符设备驱动程序组成小结
    6.4 VirtualDisk字符设备驱动
    6.4.1 VirtualDisk的头文件、宏和设备结构体
    6.4.2 加载和卸载驱动程序
    6.4.3 cdev的初始化和注册
    6.4.4 打开和释放函数
    6.4.5 读写函数
    6.4.6 seek()函数
    6.4.7 ioctl()函数
    6.5 小结
    第2篇 Linux驱动开发核心技术
    第7章 设备驱动中的并发控制
    7.1 并发与竞争
    7.2 原子变量操作
    7.2.1 原子变量操作
    7.2.2 原子整型操作
    7.2.3 原子位操作
    7.3 自旋锁
    7.3.1 自旋锁概述
    7.3.2 自旋锁的使用
    7.3.3 自旋锁的使用注意事项
    7.4 信号量
    7.4.1 信号量概述
    7.4.2 信号量的实现
    7.4.3 信号量的使用
    7.4.4 自旋锁与信号量的对比
    7.5 完成量
    7.5.1 完成量概述
    7.5.2 完成量的实现
    7.5.3 完成量的使用
    7.6 小结第8章 设备驱动中的阻塞和同步机制
    8.1 阻塞和非阻塞
    8.2 等待队列
    8.2.1 等待队列概述
    8.2.2 等待队列的实现
    8.2.3 等待队列的使用
    8.3 同步机制实验
    8.3.1 同步机制设计
    8.3.2 实验验证
    8.4 小结
    第9章 中断与时钟机制
    9.1 中断简述
    9.1.1 中断的概念
    9.1.2 中断的宏观分类
    9.1.3 中断产生的位置分类
    9.1.4 同步和异步中断
    9.1.5 中断小结
    9.2 中断的实现过程
    9.2.1 中断信号线(IRQ)
    9.2.2 中断控制器
    9.2.3 中断处理过程
    9.2.4 中断的安装与释放
    9.3 按键中断实例
    9.3.1 按键设备原理图
    9.3.2 有寄存器设备和无寄存器设备
    9.3.3 按键设备相关端口寄存器
    9.4 按键中断实例程序分析
    9.4.1 按键驱动程序组成
    9.4.2 初始化函数s3c2440_buttons_init()
    9.4.3 中断处理函数isr_button()
    9.4.4 退出函数s3c2440_buttons_exit()
    9.5 时钟机制
    9.5.1 时间度量
    9.5.2 时间延时
    9.6 小结第10章 内外存访问
    10.1 内存分配
     10.1.1 kmalloc()函数
     10.1.2 vmalloc()函数
     10.1.3 后备高速缓存
    10.2 页面分配
     10.2.1 内存分配
     10.2.2 物理地址和虚拟地址之间的转换
    10.3 设备I/O端口的访问
     10.3.1 Linux I/O端口读写函数
     10.3.2 I/O内存读写
     10.3.3 使用I/O端口
    10.4 小结
    第3篇 Linux驱动开发实用实战
    第11章 设备驱动模型
    第12章 RTC实时时钟驱动第13章 看门狗驱动程序第14章 IIC设备驱动程序
    第15章 LCD设备驱动程序
    第16章 触摸屏设备驱动程序
    第17章 输入子系统设计
    第18章 块设备驱动程序第19章 USB设备驱动程序
查看详情
系列丛书 / 更多
Linux驱动开发入门与实战(第2版)
Linux典藏大系 Linux从入门到精通+Linux系统管理与网络管理+Linux服务器架设指
刘忆智、林天峰、谭志彬、余柏山 著
Linux驱动开发入门与实战(第2版)
ARM嵌入式Linux系统开发详解(第2版)
弓雷 著
Linux驱动开发入门与实战(第2版)
Linux系统管理与网络管理
余柏山 著
Linux驱动开发入门与实战(第2版)
Linux网络编程:第2版
宋敬彬 著
Linux驱动开发入门与实战(第2版)
Linux Shell命令行及脚本编程实例详解
刘艳涛 著
Linux驱动开发入门与实战(第2版)
Shell从入门到精通
张春晓 著
Linux驱动开发入门与实战(第2版)
Linux服务器架设指南
林天峰、谭志彬 著
Linux驱动开发入门与实战(第2版)
Linux环境C程序设计
徐诚 编
Linux驱动开发入门与实战(第2版)
Linux典藏大系:Linux服务范例速查大全
刘丽霞、邱晓华 著
Linux驱动开发入门与实战(第2版)
Linux从入门到精通
刘忆智 著
Linux驱动开发入门与实战(第2版)
Linux指令范例速查手册
黄照鹤 著
Linux驱动开发入门与实战(第2版)
Linux命令编辑器与Shell编程
王刚 著
相关图书 / 更多
Linux驱动开发入门与实战(第2版)
LiteOS轻量级物联网操作系统实战 微课视频版
魏杰
Linux驱动开发入门与实战(第2版)
Linux综合实训案例教程
陈智斌;梁鹏;肖政宏
Linux驱动开发入门与实战(第2版)
Linux操作系统项目化教程
周秀丽;张徐超;周密
Linux驱动开发入门与实战(第2版)
Linux操作系统
刘睿;包大宏;兰晓天;李吉桃;王仕杰;吴晓清;张宏洲;杨云江
Linux驱动开发入门与实战(第2版)
Linux C语言程序设计(微课视频版)
张同光;田文强;荆春棋;田乔梅;陈明
Linux驱动开发入门与实战(第2版)
Linux虚拟化——原理、方法和实战(KVM+Docker+OpenStack)
吴光科;李建尧;柯宇霖
Linux驱动开发入门与实战(第2版)
Linux源码趣读
闪客
Linux驱动开发入门与实战(第2版)
Linux自动化运维实战(Linux开发书系)
吴光科;彭威城;文·S
Linux驱动开发入门与实战(第2版)
Linux云计算——Kubernetes实战
吴光科;程浩;刑亚飞
Linux驱动开发入门与实战(第2版)
Linux运维从入门到精通
明日科技
Linux驱动开发入门与实战(第2版)
Linux操作系统项目化教程(第2版)
洪伟 主编;丁传炜 谢鹏 副主编
Linux驱动开发入门与实战(第2版)
Linux企业高性能架构实战
吴光科;曹森;赵瑞丰