• 2024-06-20第6章 设备驱动程序(1)
    目录6.1I/O体系结构6.2访问设备6.2.1设备文件6.2.2字符设备、块设备和其他设备6.2.3ioctl寻址设备6.2.4主从设备号的表示6.2.5注册本专栏文章将有70篇左右,欢迎+关注,查看后续文章。6.1I/O体系结构1.扩展硬件总线的作用:        用于连接CPU和外
  • 2024-06-15泰山派学习12--GPIO_LED字符设备驱动
    一、GPIO寄存器1、对GPIO进行控制有以下步骤①:是能GPIO的时钟(默认开启,不用配置);②:设置引脚复用为GPIO(复位默认配置GPIO,不用配置);③:设置引脚属性(上下拉、速率、驱动能力,默认不用配置);④:控制GPIO引脚为输出,并且输出高低电平。2、GPIO功能引脚及寄存器rk3566有5个gpio控制器
  • 2024-06-06写一个linux驱动
    简单一点,写一个字符设备驱动。首先我们希望在/dev下面出现一个新的字符设备文件。1.分配一个设备号;intalloc_chrdev_region(dev_t*dev,unsignedintfirstminor,unsignedintcount,char*name);示例:首先定义一个dev_t的变量,它其实就是一个32位的整数。再使用上述函
  • 2024-06-05新字符设备驱动函数学习
    register_chrdev和unregister_chrdev这两个函数是老版本驱动使用的函数,现在新的字符设备驱动已经不再使用这两个函数,而是使用Linux内核推荐的新字符设备驱动API函数。新字符设别驱动API函数在驱动模块加载的时候自动创建设备节点文件。分配和释放设备号使用register_chrdev
  • 2024-04-27字符设备,write一直返回-1的问题
    在学习linux设备驱动时遇到的问题,请求大佬指点:1、insmodchar_dev.ko 2、mknod/dev/mydevicec24003、./test write返回-1,内核没有调用的device_write函数。 char_dev.c#include<linux/module.h>#include<linux/fs.h>#include<linux/cdev.h>#include
  • 2024-04-10Linux驱动开发入门实验
    目录一、驱动模块的加载和卸载二、分配和释放设备号三、字符设备注册与注销四、实现设备的具体操作函数五、添加LICENSE和作者信息六、驱动程序完整代码七、编译驱动程序八、加载驱动模块一、驱动模块的加载和卸载Linux驱动有两种运行方式:第一种即是将驱动编译
  • 2024-03-23新字符驱动框架驱动LED
    代码参考正点原子 在https://www.cnblogs.com/lethe1203/p/18091283一文中,存在以下的几个问题:1、使用register_chrdev函数注册字符设备,浪费了大量的次设备号,而且需要手动指定主设备号,还需要事先确认好哪一个主设备号没用2、需要手动mknode创建设备节点 解决问题1:使用设备
  • 2024-01-29通过LINUX驱动控制FPGA端PWM外设(LED) 通过应用程序命令传参随意修改寄存器的值(PWM波频率和占空比随意修改)
    用法:先下发下面的命令让kernel信息打印到串口:echo7417>/proc/sys/kernel/printk然后增加程序可执行性:chmod777pwmdriver_app  先执行./pwmdriver_app/dev/pwm400000200然后执行./pwm_driver_app/dev/pwm400000200,可以发现LED[1]
  • 2023-12-26Linux驱动开发之杂项设备注册和Linux2.6设备注册
    Linux设备驱动开发中,需要向内核正确注册设备,才能创建设备节点,以供应用层访问。本文将详细介绍Linux下的两种设备注册方法:杂项设备注册和Linux2.6新方法注册。一、杂项设备注册杂项设备注册简介杂项设备注册是Linux驱动开发中的一种设备注册方式。在Linux系统中,杂项设备是一类
  • 2023-12-19字符驱动框架
    HelloWorld/*字符驱动框架*///*****************相关的头文件和宏定义*******************#include<linux/kernel.h>#include<linux/module.h>#include<linux/fs.h>#include<linux/device.h>#include<linux/version.h>#defineCLASS_NAME"
  • 2023-12-09Intel710驱动代码分析-客户端的通知回掉函数
    继续分析710的驱动代码:今天主要分析这个代码:客户端通知函数作用今天要分析的是一个客户端通知函数,该函数i40e_notify_client_of_vf_enable的作用是:在PF上启用或禁用VF后,通过客户端的回调函数通知客户端。传入参数structi40e_pf*pf(表示PF(PhysicalFunction,物理功能)设备信息)u3
  • 2023-12-05RK3568,字符设备框架:管理同主设备号、不同次设备号设备
    字符设备框架:管理同主设备号、不同次设备号设备以下代码针对迅为开发板RK3568,开发板系统是ubuntu20.04,正文以下是我写的字符设备框架,实现了管理同主设备号、不同次设备号的功能。代码:private_data_test.c#include<linux/init.h>#include<linux/module.h>#include<linux
  • 2023-10-25kernel function: the difference beween cdev_add and device_create
     Touseacharacterdriver,firstyoushouldregisteritwiththesystem.Thenyoushouldexposeittotheuserspace. 1.cdev_initandcdev_addfunctionsperformthecharacterdeviceregistration.cdev_addaddsthecharacterdevicetothesystem.When
  • 2023-08-1510 新字符设备驱动文件
    一、新字符设备驱动原理  因为 register_chrdev和unregister_chrdev两个函数是老版本驱动文件,现在可以用新字符设备驱动API函数。 1.分配和和释放设备号  使用register_chrdev函数注册字符设备的时候只需要给定一个主设备号即可,但是这样会带来两个问题: 1、需
  • 2023-07-17正点原子第五十八章 Linux input子系统实验 文档之外(没提到的部分)
    使用input子系统,不需要分配设备号、注册设备、创建类等等工作。也就是不需要以下的代码。//1.由系统分配设备号if(Key_Struct.major!=0){Key_Struct.devid=MKDEV(Key_Struct.major,0);register_chrdev_region(Key_Struct.devid,DEV_C
  • 2023-05-08kernel module编程(四):设备属性和与上层应用的联系
     本文也即是《LinuxDeviceDrivers》一书第三章CharDrivers的读书笔记之二。 这部分开始有些觉得阴涩难懂。我上网去查,没能找到这本书的Example的例子,所以决定还是靠自己。我先写一个应用层的例子,通过这个例子来触发kernelmodule的一些操作,这样比较容易理解。#in
  • 2023-05-07字符设备驱动的框架
    字符设备驱动框架编写字符驱动设备框架时,主要的工作量在入口函数,卸载函数以及其设备文件操作函数当中。现在的很多板子写驱动不会像下面的程序这样的繁琐,但是从其中基本可以看到框架大体没变,所以用chatgpt生成了找个函数并修改,搭了字符设备驱动的框架。首先我们得明白一个字符
  • 2023-04-15驱动模块加载三要素例子
    #include<linux/kernel.h>#include<linux/module.h>#include<linux/cdev.h>#include<linux/fs.h>#defineHELLO_MAJOR250#defineHELLO_MINOR0#defineDEV_NUM1#defineDEV_NAME"hello_world&qu
  • 2023-04-01chrdev_open --- 通过文件路径,执行驱动设置的open()流程
    open一个字符设备的流程大概是:文件路径=>inode=>chrdev_open()=>(kobj_lookup=>)inode.i_cdev=>cdev.fops.my_chr_open()。所以只要通过VFS找到了inode,就可以找到chrdev_open(),这里我们就来关注一个chrdev_open()是怎么从内核的数据结构中找到我们的cdev并执行其中的my_c
  • 2023-03-27使用alloc_chrdev_region/register_chrdev_region/cdev注册字符设备和使用class在驱动加载时自动创建设备节点
    前言在旧版本中使用register_chrdev函数注册字符设备,该函数只需给定主设备号即可。一旦确认了主设备号,该主设备号下的所有次设备号全部都没有用,并且在驱动加载成功后还需
  • 2023-03-09【Linux 中断】红外接收器设备驱动
    一、概述现在很多家电都使用了红外,而智能家居的诞生,连音响都带了红外遥控功能。为了解决家里遥控器比较多的情况,多数手机都支持了红外功能,这和以前的万能遥控器一样。这里
  • 2023-02-21转字符驱动实例gpio
    概述:字符设备驱动程序:是按照字符设备要求完成的由操作系统调用的代码。重点理解以下内容: 1.驱动是写给操作系统的代码,它不是直接给用户层程序调用的,而是给系统调用的
  • 2023-02-18【IMX6ULL学习笔记】十二、Linux新字符设备
    一、新字符设备驱动原理1.1分配和释放设备号使用register_chrdev函数注册字符设备的时候只需要给定一个主设备号即可,但是这样会带来两个问题:①、需要我们事先确定好
  • 2023-02-18字符设备驱动编写流程
    1什么是字符设备?字符(char)设备是能够像字节流(类似文件)一样被访问的设备,由字符设备驱动来实现这种特性。字符设备驱动程序通常至少要实现open、close、read和write系统
  • 2023-02-11Linux Char-Driver (字符驱动 摘要)(一)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID