嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程序 一旦有了一个正在运行的Linux系统,了解哪些设备驱动程序被加载以及它们处于什么状态是很有用的.通过阅读/proc和/sys中的文件可以发现很多信息. 首先,您可以通过读取/proc/devices列出当前加载和激活的字符和块设备驱动程序: # cat /proc/devices   Chara…
嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing with Device Drivers  Device drivers in user space 用户空间中的设备驱动程序 在开始编写设备驱动程序之前,请暂停片刻,考虑是否确实有必要.对于许多常见类型的设备,有通用的设备驱动程序,允许您直接从用户空间与硬件交互,而不必编写一行内核代码.用户空间代码…
嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfacing with Device Drivers 了解硬件配置 虚拟驱动程序演示了一个设备驱动程序的结构,但是由于它只操作内存结构,因此它缺乏与实际硬件的交互.设备驱动程序通常是用来与硬件交互的.部分原因是能够在第一时间发现硬件,记住它可能位于不同配置的不同地址. 在某些情况下,硬件本身提供信息.PC…
嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最终,当您用尽了之前所有的用户空间选项后,您将发现自己必须编写一个设备驱动程序来访问连接到设备上的硬件.字符驱动程序是最灵活的,应该能满足你90%的需求:网络驱动程序适用于使用网络接口,而块驱动程序用于大容量存储.编写内核驱动程序的任务很复杂,超出了本文的范围.最后有一些参考资料可以帮助你.概述一下与…
linux字符设备驱动程序--hello_world 基于4.14内核, beagleBone green平台 PC端的设备驱动程序 有过电脑使用经验的人都知道,当我们将外部硬件设备比如鼠标键盘插入到电脑端口(通常是USB口)时,在windows系统右下角会弹出"安装设备驱动程序"的显示框,那么,为什么每个硬件都需要安装设备驱动程序才能使用呢? 首先,每个硬件都有相应的功能,鼠标的功能就是将鼠标的位移与点击状态转换成相应的数据,然后将数据传输给电脑,然后电脑根据收到的数据移动屏幕上的光…
原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件.#include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件.#include <mach/***.h> 是在linux-2.6.29/arch/ar…
一.Linux device driver 的概念 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口.设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作.设备驱动程序是内核的一部分,它完成以下的功能: 1. 对设备初始化和释放. 2. 把数据从内核传送到硬件和从硬件读取数据. 3. 读取应用程序传送给设备文件的数据和回送应用程序请求的数据. 4. 检测和处理设备出现的错误…
Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #include <linux/module.h> // 声明模块的许可证书 MODULE_LICENSE("Dual BSD/GPL"); static __init hello_init(void) { // KERN_ALERT表示的是日志级别 printk(KERN_ALERT &…
内核为设备驱动提供了一个统一的内存管理接口,所以模块无需涉及分段和分页等问题. 我已经在第一个scull模块中使用了 kmalloc 和 kfree 来分配和释放内存空间. kmalloc 函数内幕 kmalloc 是一个功能强大且高速(除非被阻塞)的工具,所分配到的内存在物理内存中连续且保持原有的数据(不清零).原型: #include <linux/slab.h>void *kmalloc(size_t size, int flags); size 参数 内核管理系统的物理内存,物理内存只…
模块的编译和装载 更多内容请参考Linux设备驱动程序学习----目录 1. 设置测试系统 第1步,要先从kernel.org的镜像网站上获取一个主线内核,并安装到自己的系统中,因为学习驱动程序的编写,最好使用标准内核. 第2步,必须在自己的系统中配置并构造好内核树,这样可以得到一个更加健壮的模块装载器,可以使内核的模块要和内核源码树中的目标文件连接.同时也需要这些目标文件存在于内核目录树中.这样,准备一个内核源代码树,构造一个新内核,并安装到自己的系统中,有利于开发工作的进行. 第3步,要决定…