
linux驱动
cike626
这个作者很懒,什么都没留下…
展开
-
linux驱动学习——自动创建设备节点
文章目录7.1、udev7.2、函数说明7.3、示例代码7.1、udevlinux传统上使用静态设备创建方法,因此大量设备节点在/dev下创建(有时上千个),而不管相应的硬件设备是否真正存在。采用udev的方法,只有被内核监测到的设备,才会去为它们创建设备节点。当插入新设备——加入驱动模块——在sysfs上注册新的数据后,udev会创建新的设备节点。linux系统中/sys/devices/virtual/input/xxx路径下,dev文件和uevent文件会存储驱动的设备号以及设备的名称。原创 2021-11-11 16:22:23 · 2626 阅读 · 0 评论 -
字符设备注册——更简单的方式
register_chrdev/*如果major为0,该函数会动态分配一个主设备号,成功后并返回主设备号如果major > 0,该函数尝试获取该定制的设备号,申请成功返回0,失败返回负值;*/static inline int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops){ return __register_chrdev(maj.原创 2021-11-11 16:10:06 · 332 阅读 · 0 评论 -
linux驱动学习——字符设备的注册
5.1、cdevvoid cdev_init(struct cdev *, const struct file_operations *);int cdev_add(struct cdev *, dev_t , unsigned );void cdev_del(struct cedv *);5.2、示例代码#include<linux/module.h>#include<linux/init.h>#include<linux/kdev_t.h>#in原创 2021-11-11 16:06:06 · 535 阅读 · 0 评论 -
linux驱动学习——字符设备号
字符设备号本质就是一个32位的无符号整型值。高12位为主设备号;低20位为次设备号。查看设备号cat /proc/devices4.1、构造设备号源码路径: include/linux/kdev_t.h#define MINORBITS 20#define MINORMASK ((1U << MINORBITS) - 1)#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS))#define MINOR(原创 2021-10-19 22:34:29 · 175 阅读 · 0 评论 -
linux驱动学习——模块传参
3、模块传参实验环境:ubunut32 虚拟机3.1、模块传参的意义和应用程序一样,可以在执行的时候通过命令行输入运行参数传递参数(main函数的参数),只不过方法不一样而已,这个就是模块传递参数的意义。模块参数向用户提供一种随时向内核模块传递、修改参数的方法。比如串口驱动的波特率、数据位数、校验位、停止位这些参数,我们可以在驱动中定义相关变量,然后通过模块传参的方法去读写他们。3.2、如何传参原型:module_param(name, tpye, perm)功能描述:用来从用户层获取参原创 2021-10-17 18:55:48 · 566 阅读 · 0 评论 -
linux驱动学习——符号导出
符号导出这里的符号主要指的是全局变量和函数linux内核采用的是以模块化形式管理内核代码。内核中的每个模块互相之间是相互独立的,也就是说A模块的全局变量和函数,B模块是无法访问的。如果B模块想访问A模块中的符号该怎么办呢?符号表linux内核里面,它把所有的符号放到一个表里面,模块在编译的时候,它会去这个表里面去找这些对应的符号(函数,全局变量),表里面有很多这样的信息。Ubuntuubuntu中,linux内核的全局符号表在:/usr/src/linux-headers-xxxx-原创 2021-10-15 22:21:18 · 689 阅读 · 0 评论 -
Linux驱动学习——入门
模块化编程编译加载查看命令make 编译lsmod 显示模块insmod/rmmod 安装/卸载模块dmesg打印log信息dmesg -c 清除当前的log实例#include <linux/module.h>#include <linux/init.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("NEONAN");static int hello_init(void){ printk("hello_init\原创 2021-10-15 22:17:53 · 112 阅读 · 0 评论