
linux驱动
文章平均质量分 67
驱动介绍
知秋贺
这个作者很懒,什么都没留下…
展开
-
sign-file: certs/signing_key.pem: 解决方法
使用ubuntu18.04环境,在make之后,make install 加载时,出现如下错误:At main.c:158: - SSL error:02001002:system library:fopen:No such file or directory: bss_file.c:175 - SSL error:2006D080:BIO routines:BIO_new_file:no such file: bss_file.c:178 sign-file: certs/signin...原创 2021-12-15 11:06:35 · 5697 阅读 · 3 评论 -
Linux驱动Platform总线模型
设备模型设备模型要解决的问题: 代码重复最小化 可以列举系统中所有的设备,观察它们的状态 可以沿设备树的叶子向根方向依次遍历,以保证以正确的顺序关闭各设备电源。比如内核需要先关闭一个USB鼠标,然后才可以关闭USB控制器,然后再可以关闭PCI总线为了描述设备模型,内核采用了sysfs文件系统来描述了设备驱动程序模型组件间的层次关系,用户在/sys目录下可查看相关信息Sysfs文件系统Sysfs系统下设备模型Sysfs系统采用三个结构来描述kobject...转载 2021-08-20 10:37:43 · 323 阅读 · 0 评论 -
嵌入式Linux之platform设备驱动框架详解
前言在platform设备驱动模型中,需关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统中每注册一个设备的时候,会寻找与之匹配的驱动;相同的,在系统中每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。设备设备注册部分的流程图如下图所示:定义一个platform_device结构体static struct platform_device led_dev = { .name = "myled", //#1 .id转载 2021-08-04 18:49:43 · 1183 阅读 · 0 评论 -
Xilinx的两款FPGA平台xdma和qdma
之前使用过xdma和qdma,但是未对其流程梳理,今天对其DMA操作流程梳理下,以备记录。首先说一下流式DMA映射和一致性DMA映射:流式DMA映射:缓冲区来自叫上层的比如,kmalloc,__get_free_pages 等申请的,一般使用流式DMA映射,流式DMA映射大多进行cache的使无效或清楚操作,以解决cache的一致性问题,接口较为复杂。xmda使用流式dma映射:dma_map_single(dev, addr, size, direction);d...原创 2021-07-28 13:37:21 · 14045 阅读 · 1 评论 -
手把手教Linux驱动4-进程、文件描述符、file、inode关系详解
本文目标什么是文件描述符? 进程打开文件相关信息管理 Linux设备文件三大结构:inode,file,file_operations mknod 做了什么事? 进程打开设备文件 驱动如何支持同类型设备? 如何获得注册的设备结构体私有地址?什么是文件描述符?Linux 中一切都可以看作文件,包括普通文件、链接文件、Socket 以及设备驱动等,对其进行相关操作时,都可能会创建对应的文件描述符。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,用于转载 2021-07-26 11:48:52 · 922 阅读 · 0 评论 -
USB驱动程序(基础)
以前阅读过《圈圈教你学USB》,介绍USB比较详细,但一直没有总结,今天简单总结一下~USB支持热插拔,使用方便,越来越受欢迎USB2.0支持60M/B/s的速率。最新的USB3.0最高可支持500MB/s。USB按主机控制器可分为如下:UHCI 通用主机控制器接口;OHCI 开发主机控制器接口;EHCI 增强型主机控制器接口;USB OTG控制器传输模式: 控制传输模式;...原创 2021-07-20 17:59:14 · 1043 阅读 · 0 评论 -
linux内核编译
linux系统在当下可谓如日中天,而且代码开源,作为一个程序员,如果不阅读下linux源码,真可谓一种遗憾。闲话少说,本文介绍下linux的内核编译过程:1.从linux 官网下载内核源码 https://www.kernel.org/到目前为止,最新的版本是5.13.2,选择合适的版本下载。2.下载后,解压编译tar xvf xx.tar.gzmake menuconfigmake注,1.使用make -jx x为cpu的核数,通过cat /proc/cpuinfo 可..原创 2021-07-16 18:01:24 · 168 阅读 · 0 评论 -
linux驱动编写之进程独占驱动
一、描述 嵌入式开发系统中,有各种硬件资源,而有些硬件资源使用时候是需要进程独占的。也就是说,同一时刻只有一个进程允许使用这个硬件资源,其他的进程只能放弃执行或者挂起等待。在设计其对应驱动的时候,就需要做独占处理。example: led灯驱动,4盏LED灯,在open的时候调用驱动,对其引脚进行配置。如果没有进程独占驱动的处理机制,效果如下: 根据测试结果可以得到结论,调用了4次应用程序led_test,每一次调用open("/dev/leds", ...转载 2021-01-13 12:41:39 · 337 阅读 · 0 评论 -
uio驱动编写
AUTHOR: Joseph Yang (杨红刚) <eagle.rtlinux@gmail.com>CONTENT: uio驱动编写 实例1NOTE: linux-3.0LAST MODIFIED:09-06-2011-----------------------------------------------------------------------------------------------------------Distributed and Embedded Syst转载 2020-12-24 18:45:30 · 677 阅读 · 1 评论 -
用户态驱动--UIO机制的实现
1 uio理论部分1.1为什么出现了UIO?硬件设备可以根据功能分为网络设备,块设备,字符设备,或者根据与CPU相连的方式分为PCI设备,USB设备等。它们被不同的内核子系统支持。这些标准的设备的驱动编写较为容易而且容易维护。很容易加入主内核源码树。但是,又有很多设备难以划分到这些子系统中,比如I/O卡,现场总线接口或者定制的FPGA。通常这些非标准设备的驱动被实现为字符驱动。这些驱动使用了很多内核内部函数和宏。而这些内部函数和宏是变化的。这样驱动的编写者必须编写一个完全的内核驱动,而且一直维.转载 2020-12-02 10:23:57 · 1482 阅读 · 0 评论 -
DMA内存申请--dma_alloc_coherent 及 寄存器与内存
在项目驱动过程中会经常用到dma传输数据,而dma需要的内存有自己的特点,一般认为需要物理地址连续,并且内存是不可cache的,在linux内核中提供一个供dma所需内存的申请函数dma_alloc_coherent. 如下所述:dma_alloc_coherent()dma_alloc_coherent() -- 获取物理页,并将该物理页的总线地址保存于dma_handle,返回该物理页的虚拟地址DMA映射建立了一个新的结构类型---------dma_addr_t来表示总线地址。dma_a.转载 2020-11-16 11:09:12 · 6586 阅读 · 0 评论 -
INIT_WORK()工作队列使用
#define INIT_WORK(_work, _func)\do {\__INIT_WORK((_work), (_func), 0);\} while (0)#define __INIT_WORK(_work, _func, _onstack)\do {\__init_work((_work), _onstack);\(_work)->data = (atomic_long_t) WORK_DATA_I...原创 2020-11-10 18:55:44 · 11531 阅读 · 0 评论