本博实时更新《Linux设备驱动开发详解(第3版)》的最新进展。 2015.2.26 几乎完成初稿。

[F]是修正或升级;[N]是新增知识点;[D]是删除的内容

第1章 《Linux设备驱动概述及开发环境构建》

[D]删除关于LDD6410开发板的介绍

[F]更新新的Ubuntu虚拟机

[N]添加关于QEMU模拟vexpress板的描述

第2章 《驱动设计的硬件基础》

[N]增加关于SoC的介绍;

[N]增加关于eFuse的内容;

[D]删除ISA总线的内容了;

[N]增加关于SPI总线的介绍;

[N]增加USB 3.0的介绍;

[F]修正USB同步传输方式英文名;

[D]删除关于cPCI介绍;

[N]增加关于PCI Express介绍;

[N]增加关于Xilinx ZYNQ的介绍;

[N]增加SD/SDIO/eMMC的章节;

[D]删除“原理图分析的内容”一节;

[N]增加通过逻辑分析仪看I2C总线的例子;

第3章 《Linux内核及内核编程》

[N]新增关于3.X内核版本和2015年2月23日 Linux 4.0-rc1

[N]新增关于内核版本升级流程以及Linux社区开发模式讲解

[N]新增关于Linux内核调度时间的图式讲解

[N]新增关于Linux 3.0后ARM架构的变更的讲解

[N]新增关于TASK_KILLABLE状态的简介

[N]新增Linux内存管理图式讲解

[F]修正Kconfig和Makefile中的一些表述

[D]删除关于x86启动过程讲解

[N]新增ARM Linux启动过程讲解

[N]新增关于likely()和unlikely()讲解

[N]新增toolchain的讲解,以及toolchain的几种浮点模式

第4章 《Linux内核模块》

[F]改正关于模块使用非GPL license的问题;

[F]修正关于__exit修饰函数的内存管理

第5章 《Linux文件系统与设备文件》

[F]修正关于文件系统与块设备驱动关系图;

[N]增加应用到驱动的file操作调用图;

[N]增加通过netlink接受内核uevent的范例;

[N]增加遍历sysfs的范例;

[N]增加为kingston U盘编写udev规则的范例;

[F]更新udev规则,以符合新版本;

[N]增加udevadm的讲解;

[N]高亮Android vold

第6章 《字符设备驱动》

[F]更新file_operations的定义,升级ioctl()原型;

[N]增加关于Linux access_ok()的讲解以及Linux内核安全漏洞的说明;

[F]修正globalmem的编码风格;

[F]在globalmem支持2个以上实例的时候,从直接2个实例,升级为支持N个实例;

第7章 《Linux设备驱动中的并发控制》

[N]绘图深入讲解单核和多核下的各种竞态;

[N]增加关于编译乱序,执行乱序,编译屏障和内存屏障的讲解;

[N]增加关于ARM LDREX/STREX指令的讲解;

[N]对spin_lock单核和多核的使用场景进行深入分析;

[F]重新整理RCU的讲解方法和实例;

[F]明确指明信号量已过时;

[F]将globalmem中使用的信号量换为mutex。

第8章 《Linux设备驱动中的阻塞与非阻塞I/O》

[N]新增阻塞和非组塞的时序图

[F]修正关于等待队列头部、等待队列元素的一些中文说法

[N]添加等待队列的图形描述

[F]修正globalfifo的编码风格

[F]修正globalfifo可读可写的if判断为while判断

[N]新增select的时序图

[N]新增EPOLL的章节

第9章 《Linux设备驱动中的异步通知与异步I/O》

[F]修正关于glibc AIO支持

[F]修正关于内核AIO支持

[F]修正驱动AIO接口

[D]删除关于驱动AIO支持的错误实例

[N]高亮C10问题

第10章 《中断与时钟》

[N]增加关于ARM GIC的讲解

[N]增加关于irq_set_affinity() API的讲解

[N]增加关于devm_request_irq() API的讲解

[N]增加关于request_any_context_irq() API的讲解

[F]修正interrupt handler原型

[F]修正work queue原型

[N]新增关于Concurrency-managed workqueues讲解

[N]增加关于ksoftirqd讲解

[N]增加关于request_threaded_irq()讲解

[D]删除s3c6410 rtc驱动中断实例

[N]新增GPIO按键驱动中断实例

[N]新增hrtimer讲解和实例

[F]修正second设备编码风格

第11章 《内存与I/O访问》

[F]修正关于页表级数的描述,添加PUD

[F]修正page table walk的案例,使用ARM Linux pin_page_for_write

[N]新增关于ARM Linux内核空间虚拟地址分布

[F]修正关于内核空间与用户空间界限

[N]新增关于DMA、NORMAL和HIGHMEM ZONE的几种可能分布

[N]新增关于buddy的介绍

[F]修正关于用户空间malloc的讲解

[N]增加mallopt()的案例

[N]增加关于devm_ioremap、devm_request_region()和devm_request_mem_region()的讲解

[N]增加关于readl()与readl_relaxed()的区别,writel()与writel_relaxed()的区别

[F]更新vm_area_struct的定义

[F]修正nopage() callback为fault() callback

[N]增加io_remap_pfn_range()、vm_iomap_memory()讲解

[F]强调iotable_init()静态映射目前已不太推荐

[N]增加关于coherent_dma_mask的讲解

[N]讲解dma_alloc_coherent()与DMA ZONE关系

[N]提及了一致性DMA缓冲区与CMA的关系

[N]增加关于dmaengine驱动和API的讲解

第12章 《工程中的Linux设备驱动》

[F]更名为《Linux设备驱动的软件架构思想》;

[N]本章新增多幅图片讲解Linux设备驱动模型;

[N]新增内容详细剖析为什么要进行设备与驱动的分离,platform的意义;

[N]新增内容详细剖析为什么Linux设备驱动要分层,枚举多个分层实例;

[N]新增内容详细剖析Linux驱动框架如何解耦,为什么主机侧驱动要和外设侧驱动分离;

[N]DM9000实例新增关于在dts中填充平台信息的内容;

[N]新增内容讲解驱动核心层的3大功能;

[N]新增内容以面向对象类泛化对比Linux驱动;

[N]SPI案例部分新增通过dts填充外设信息;

[F]从tty, LCD章节移出架构部分到本章

第13章 《Linux块设备驱动》

[N]介绍关于block_device_operations的check_events成员函数

[N]添加关于磁盘文件系统,I/O调度关系的图形

[F]更新关于request_queue、request、bio、segment关系的图形

[F]淘汰elv_next_request

[F]淘汰blkdev_dequeue_request

[N]添加关于blk_start_request描述

[F]淘汰Anticipatory I/O scheduler

[N]添加关于ZRAM块设备驱动实例

[F]更新针对内核4.0-rc1的vmem_disk

[N]添加关于vmem_disk处理I/O过程的图形

[N]增加关于Linux MMC子系统的描述

第14章 《Linux终端设备驱动》

[D]整章全部删除,部分架构内容前移到第12章作为驱动分层实例

第15章 《Linux I2C核心、总线与设备驱动》

[F]修正i2c_adpater驱动的案例

[N]增加关于在device tree中增加i2c设备的方法的描述

第16章 《Linux网络设备驱动》

[F]本章顺序从第16章前移到第14章

[N]澄清sk_buff head、data、tail、end指针关系

[F]更新sk_buff定义

[F]澄清skb_put、skb_push、skb_reserve

[N]增加netdev_priv的讲解,加入实例

[N]增加关于get_stats()可以从硬件读统计信息的描述

[F]修正关于net_device_stats结构体的定义位置

[F]修正关于统计信息的更新方法

第18章 《LCD设备驱动》

[D] 本章直接删除,部分架构内容前移到第12章

第19章 《Flash设备驱动》

[D] 本章直接删除

第20章 《USB主机与设备驱动》

[F]前移到第16章;

[F]更名为《USB主机、设备与Gadget驱动》;

[N]增加关于xHCI的介绍;

[F]修正usb gadget驱动为function驱动;

[D]删除OHCI实例;

[N]添加EHCI讲解和Chipidea EHCI实例;

[F]修正iso传输实例;

[F]修正usb devices信息到/sys/kernel/debug/usb/devices

[N]介绍module_usb_driver;

[N]介绍usb_function;

[N]介绍usb_ep_autoconfig;

[N]介绍usb_otg;

[D]删除otg_transceiver;

第21章 《PCI设备驱动》

[D]整章删除

第22章 《Linux设备驱动的调试》

[F]变为第21章;

[D]把实验室环境建设相关的节移到第3章;

[F]修正关于gdb的set step-mode的含义讲解;

[F]增加关于gdb的set命令的讲解;

[F]增加gdb call命令的案例

[D/N]删除手动编译工具链的代码,使用crosstool-ng;

[N]更新toolchain的下载地址(codesourcery -> memtor),加入linaro下载地址;

[N]增加pr_fmt的讲解;

[N]增加关于ignore_loglevel bootargs的讲解;

[N]增加EARLY_PRINTK和DEBUG_LL的讲解;

[F]调整proc的范例,创建/proc/test_dir/test_rw;

[N]修正关于3.10后内核proc实现框架和API的变更;

[N]增加关于BUG_ON和WARN_ON的讲解

[F]不再以BDI-2000为例,改为ARM DS-5;

[N]增加关于ARM streamline性能分析器的介绍;

[N]增加使用qemu调试linux内核的案例;

[F]调整Oops的例子,使用globalmem,平台改为ARM;

[F]更新LTT为LTTng。

第23章 《Linux设备驱动的移植》

[D]整章删除

全新的章节

第18章  《Linux设备树(Device Tree)》

本章导读

本章将介绍Linux设备树(Device Tree)的起源、结构和因为设备树而引起的驱动和BSP变更。

18.1节阐明了ARM Linux为什么要采用设备树。

18.2节详细剖析了设备树的结构、结点和属性,设备树的编译方法以及如何用设备树来描述板上的设备、设备的地址、设备的中断号、时钟等信息。

18.3节讲解了采用设备树后,驱动和BSP的代码需要怎么改,哪些地方变了。

18.4节补充了一些设备树相关的API定义以及用法。

本章是相对《Linux设备驱动开发详解(第2版)》全新的一章内容,也是步入内核3.x时代后,嵌入式Linux工程师必备的知识体系。

第19章 《Linux电源管理》

本章导读

Linux在消费电子领域的应用已经铺天盖地,而对于消费电子产品而言,省电是一个重要的议题。

本章将介绍Linux设备树(Device Tree)的起源、结构和因为设备树而引起的驱动和BSP变更。

19.1节阐述了Linux电源管理的总体架构。

19.2~19.8节分别论述了CPUFreq、CPUIdle、CPU热插拔以及底层的基础设施Regulator、OPP以及电源管理的调试工具PowerTop。

19.9节讲解了系统Suspend to RAM的过程以及设备驱动如何提供对Suspend to RAM的支持。

19.10节讲解了设备驱动的Runtimesuspend。

本章是相对《Linux设备驱动开发详解(第2版)》全新的一章内容,也是Linux设备驱动工程师必备的知识体系。

第20章 《Linux芯片级移植与底层驱动》

本章导读

本章主要讲解,在一个新的ARM SoC上,如何移植Linux。当然,本章的内容也适合MIPS、PowerPC等其他的体系架构。

第20.1节先总体上介绍了Linux 3.x之后的内核在底层BSP上进行了哪些优化。

第20.2节讲解了如何提供操作系统的运行节拍。

第20.3节讲解了中断控制器驱动,以及它是如何为驱动提供标准接口的。

第20.4节讲解多核SMP芯片的启动。

第20.6~20.9节分别讲解了作为Linux运行底层基础设施的GPIO、pinctrl、clock和dmaengine驱动。

本章相对《Linux设备驱动开发详解(第2版)》几乎是全新的一章内容,有助于工程师理解驱动调用的底层API的来源,以及直接有助于进行Linux的平台移植。

linux设备驱动总结,《Linux设备驱动开发详解(第3版)》海量更新总结相关推荐

  1. 《Linux设备驱动开发详解(第2版)》隆重出版

    Linux设备驱动开发详解(第2版)(前一版狂销3万册,畅销书最新升级) [新品] 点击看大图     基本信息 * 作者: 宋宝华       * 出版社:人民邮电出版社     * ISBN:97 ...

  2. linux设备驱动开发详解 第三版,《Linux设备驱动开发详解(第3版)》进展同步更新...

    2014.8.25 目前初步完成2-11章以及第22章 <Linux设备驱动的调试>,相对于第2版,这几章主要的变更. 本博实时更新<Linux设备驱动开发详解(第3版)>的最 ...

  3. 《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)进展同步更新

    本博实时更新<Linux设备驱动开发详解(第3版)>的最新进展. 目前已经完成稿件. 2015年8月9日,china-pub开始上线预售: http://product.china-pub ...

  4. Linux设备驱动开发详解 第3版 (即 Linux设备驱动开发详解 基于最新的Linux 4 0内核 )前言

    Linux从未停歇脚步.Linus Torvalds,世界上最伟大的程序员之一,Linux内核的创始人,Git的缔造者,仍然在没日没夜的合并补丁,升级内核.做技术,从来没有终南捷径,拼的就是坐冷板凳的 ...

  5. 《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)网购链接

    <Linux设备驱动开发详解:基于最新的Linux 4.0内核> china-pub   天猫     dangdang   京东 China-pub 8月新书销售榜 推荐序一 技术日新月 ...

  6. 转:S3C2440上LCD驱动(FrameBuffer)实例开发详解

    1.S3C2440上LCD驱动 (FrameBuffer)实例开发讲解 其中的代码也可直接参考:drivers/video/s3c2410fb.c 以下为转载文章,文章原地址:http://blog. ...

  7. NPAPI开发详解,Windows版

    原文:http://mozilla.com.cn/post/21666/ 本文通过多图组合,详细引导初学者开发NPAPI的浏览器插件. 如需测试开发完成的插件请参考http://mozilla.com ...

  8. 《Linux设备驱动开发详解》学习笔记一

    Linux设备驱动开发详解学习笔记<一> 书名:<Linux设备驱动开发详解>第二版 主机环境:Linux version 2.6.25-14.fc9.i686@Fedora ...

  9. linux设备驱动开发详解孔夫子,Linux设备驱动开发详解

    [内容简介] <Linux设备驱动开发详解(第2版)>是一本介绍linux设备驱动开发理论.框架与实例的书,<Linux设备驱动开发详解(第2版)>基于ldd6410开发板,以 ...

最新文章

  1. 5G:4G到5G的演进,整体网络架构的主要区别。
  2. centos nginx不是命令_Nginx 在CentOS 6/7 上的安装与使用
  3. C++Primer笔记之复制控制
  4. mysql 数据库编程_MySQL数据库编程(C++语言)
  5. 光栅尺与PLC的配合使用
  6. leetcode13. 罗马数字转整数
  7. Python+Selenium基础篇之2-打开和关闭火狐浏览器
  8. 前端之旅,做一点有回报的事情
  9. Lync Server 2013群聊天室创建和简单测试
  10. sql机器学习服务_机器学习服务–在SQL Server中配置R服务
  11. jsapi微信扫一扫
  12. mappartitions java_Spark算子:RDD基本转换操作(5)–mapPartitions、mapPartitionsWithIndex
  13. 有关STL使用上的一些注意事项。关于某些函数的参数问题。
  14. 从获得字符串中获取数字
  15. ubuntu 最新提权漏洞_Ubuntu和Debian最新的KDE安全漏洞,附-修复指南
  16. matlab画图标签,Matlab绘图
  17. 自然语言处理(NLP)语义分析--文本分类、情感分析、意图识别
  18. 算法设计与分析: 3-4 多重幂计数问题
  19. mysql chunk 函数_Laravel中的chunk组块结果集处理与注意问题
  20. 【网络安全】还在担心网络诈骗?让OneDNS替你揽下一切

热门文章

  1. centos 7,局域网不能访问禅道
  2. 历年六级词汇翻译总结
  3. python按键事件的按键号,在Python 2.7中模拟按键事件
  4. Python开发 之 10分钟教你学会爬虫Scrapy
  5. 行业发布 | 2019年产业区块链图谱
  6. mac快捷键【会持续更新喔】
  7. 爬取淘宝商品评论信息
  8. NoPrint.js:使用JavaScript在HTML中禁用打印、截屏、复制和粘贴
  9. Android初尝甜果之MVP模式
  10. UI自动化(四)-鼠标操作