写点什么

《Linux 设备驱动开发详解》读书笔记

作者:贾献华
  • 2022 年 7 月 13 日
  • 本文字数:846 字

    阅读完需:约 3 分钟

微信阅读

Linux设备驱动开发详解:基于最新的Linux4.0内核-宋宝华-微信读书 (qq.com)

虚拟机及案例代码下载

虚拟机实验环境下载(内含案例代码):

链接:https://pan.baidu.com/s/1YNvAySz-_AgZ4F8rZSMfsg

提取码:vpdt

如果仅仅想下载代码不想要庞大的虚拟机,

https://download.csdn.net/download/21cnbao/86021376

Linux 内核源代码的目录结构

  • arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如 i386、arm、arm64、powerpc、mips 等。Linux 内核目前已经支持 30 种左右的体系结构。在 arch 目录下,存放的是各个平台以及各个平台的芯片对 Linux 内核进程调度、内存管理、中断等的支持,以及每个具体的 SoC 和电路板的板级支持代码。

  • block:块设备驱动程序 I/O 调度。

  • crypto:常用加密和散列算法(如 AES、SHA 等),还有一些压缩和 CRC 校验算法。

  • documentation:内核各部分的通用解释和注释。

  • drivers:设备驱动程序,每个不同的驱动占用一个子目录,如 char、block、net、mtd、i2c 等。

  • fs:所支持的各种文件系统,如 EXT、FAT、NTFS、JFFS2 等。

  • include:头文件,与系统相关的头文件放置在 include/linux 子目录下。

  • init:内核初始化代码。著名的 start_kernel()就位于 init/main.c 文件中。

  • ipc:进程间通信的代码。

  • kernel:内核最核心的部分,包括进程调度、定时器等,而和平台相关的一部分代码放在 arch/*/kernel 目录下。

  • lib:库文件代码。

  • mm:内存管理代码,和平台相关的一部分代码放在 arch/*/mm 目录下。

  • net:网络相关代码,实现各种常见的网络协议。

  • scripts:用于配置内核的脚本文件。

  • security:主要是一个 SELinux 的模块。

  • sound:ALSA、OSS 音频设备的驱动核心代码和常用设备驱动。

  • usr:实现用于打包和压缩的 cpio 等。

  • include:内核 API 级别头文件。


内核一般要做到 drivers 与 arch 的软件架构分离,驱动中不包含板级信息,让驱动跨平台。同时内核的

通用部分(如 kernel、fs、ipc、net 等)则与具体的硬件(arch 和 drivers)剥离。

参考

《Linux设备驱动开发详解》虚拟机及案例代码下载_宋宝华的博客-CSDN博客_linux设备驱动开发详解虚拟机

用户头像

贾献华

关注

及时当勉励 岁月不待人 2018.06.04 加入

https://2022.iosdevlog.com

评论

发布
暂无评论
《Linux设备驱动开发详解》读书笔记_7月月更_贾献华_InfoQ写作社区