Linux驱动入门笔记


笔记

参考资料

  1. Writing a Linux Kernel Module — Part 1: Introduction
  2. Linux Driver Tutorial: How to Write a Simple Linux Device Driver
  3. 介绍一个最简单的驱动程序,有完整的例子和编译Makefile。里面只有打印。不过文章说明了很多源文件中Lisene等等相关的内容。

  4. Writing a Linux Kernel Module — Part 2: A Character Device
    • 详细介绍了如何写一个字符设备驱动程序。
    • 如何写一个udev的rule,来改变驱动对应/dev/ebbchar的权限,使普通用户对他也有读写权限。
    • 解释了权限位的最后一位,sticky位。如果此位置为t,表示对该文件有写入权限,并不意味着对它有删除权限。 比如/tmp/目录,每个用户都可以在这个目录创建文件,但是用户A不能随变删除用户B的文件。
    • 使用了锁,解决了多进程同时和该驱动程序通信的问题。

  5. Writing a Linux Kernel Module — Part 3: Buttons and LEDs
    • 一个例子是在用户空间直接设置GPIO。
    • 一个例子是通过驱动程序在内核空间设置GPIO。通过中断(这里应该是按下开关产生的硬件中断)来设置GPIO。 GPIO115是input状态,用于读开关状态。 GPIO49是output状态,用于设置led灯。开关按下提起会导致该GPIO产生中断,调到中断处理函数中,处理函数通过设置GPIO49就能控制led灯的亮和灭。
    • 关于本文中介绍的GPIO,可以参考 GPIO in the kernel: an introduction 这篇文章。
    • 最后一个例子,是在内核空间中使用kthread来演示内核态中的多线程。
    • 大概讲了一下kobject,我没搞太懂。

如果你觉得本文不错,欢迎 donate