
Linux驱动
文章平均质量分 76
Unique--ZGY
这个作者很懒,什么都没留下…
展开
-
阻塞式IO(驱动)
构造并初始化等待队列头、构造等待队列节点、设置进程状态、将节点加入等待队列,放弃CPU、调度其他程序执行、适时唤醒。原创 2023-01-16 15:32:01 · 395 阅读 · 0 评论 -
Input子系统
设计了输入子系统**事件处理层:**接收来自核心层上报的事件,并选择对应的handler(事件处理器 struct input_handler)去处理。内核维护着多个事件处理器对象,每个input_handler对象专门处理一类事件,所有产生同类事件的设备驱动共用同一个handler。**设备驱动层:**主要实现获取硬件设备的数据信息(包括触摸屏被按下、按下位置、鼠标移动、键盘按下等等),并转换为核心层定义的规范事件后提交给核心层,该层每个设备对应一个struct input_dev对象,原创 2023-01-09 16:24:15 · 152 阅读 · 0 评论 -
I2C总线驱动
Inter-Integrated Circuit: 字面意思是用于“集成电路之间”的通信总线,简写:IIC(或者I2C)i2c传输的要点就是: 传输一个字节 后面必然紧跟一个"响应"信号----应答信号.这个响应信号可能来自主机,或者是从机,具体是谁,就要看传输方向。传输方向分两种情况(每种情况又有两种可能: A无应答和 B有应答):1.主机->从机,主机对从机发一个字节之后,主机要读取从机的响应信号(主机读SDA线)原创 2023-01-08 23:30:56 · 1928 阅读 · 0 评论 -
平台总线式驱动开发——基本框架
硬件上同一总线上的设备遵循一致的时序通信,在其基础上增加管理设备和驱动的软件功能,于是引入总线(BUS),各种总线的核心框架有内核来实现,通信时序一般由SOC供应商支持;初期方案,各种device需要编码方式注册进内核中的设备管理结构中,为了进一步减少这样的编码,引入设备树。3.2 id匹配(可想象成八字匹配):一个驱动可以对应多个设备 ------优先级次低。3.3 设备树匹配:内核启动时根据设备树自动产生的设备 ------ 优先级最高。总线:匹配设备和驱动——婚介所:提供沟通机制,完成拉郎配。原创 2023-01-07 14:21:33 · 906 阅读 · 0 评论 -
驱动之设备模型
设备模型总线、驱动、设备sysfs(文件系统)+Uevent(通信)+udevd(上层app)原创 2023-01-06 14:20:22 · 416 阅读 · 0 评论 -
中断处理---下半部机制
起源:struct tasklet_struct{ struct tasklet_struct *next; unsigned long state; atomic_t count; void (*func)(unsigned long); unsigned long data;};void tasklet_func(unsigned long data);2.4 调度tasklet3.下半部机制之workqueue-----基于内核线程3.1 工作队列结构体:typedef void原创 2023-01-03 14:59:08 · 601 阅读 · 1 评论 -
中断处理—基础框架
一种硬件上的通知机制,用来通知CPU发生了某种需要立即处理的事件。原创 2023-01-02 21:04:41 · 291 阅读 · 0 评论 -
设备树(devicetree)
减少垃圾代码减轻驱动开发工作量驱动代码和设备信息分离参考Open Fireware设计用来记录硬件平台中各种硬件设备的属性信息。原创 2023-01-01 20:34:37 · 757 阅读 · 0 评论 -
内核内存管理
内核将物理内存等分成N块4KB,称之为一页,每页都用一个struct page来表示,采用伙伴关系算法维护内核地址空间划分图:3G~3G+896M:低端内存,直接映射 虚拟地址 = 3G + 物理地址细分为:ZONE_DMA、ZONE_NORMAL大于3G+896M:高端内存细分为:vmalloc区、持久映射区、固定映射区分配方式:vmalloc:虚拟地址连续,物理地址不连续。原创 2023-01-01 13:03:00 · 1264 阅读 · 1 评论 -
内核定时器
硬件有一个时钟装置,该装置每隔一定时间发出一个时钟中断(称为一次时钟嘀嗒-tick),对应的中断处理程序就将全局变量jiffies_64加1jiffies_64 是一个全局64位整型, jiffies全局变量为其低32位的全局变量,程序中一般用jiffiesHZ:可配置的宏,表示1秒钟产生的时钟中断次数,一般设为100或200。原创 2022-12-31 17:28:36 · 273 阅读 · 0 评论 -
字符设备驱动(三)-----并发控制
执行流:有开始有结束总体顺序执行的一段代码 又称上下文应用编程:任务上下文竞态:多任务并行执行时,如果在一个时刻同时操作同一个资源,会引起资源的错乱,这种错乱情形被称为竞态共享资源:可能会被多个任务同时使用的资源临界区:操作共享资源的代码段为了解决竞态,需要提供一种控制机制,来避免在同一时刻使用共享资源,这种机制被称为并发控制机制。原创 2022-12-30 19:16:32 · 502 阅读 · 0 评论 -
字符设备驱动(二)
(1)阻塞式IO:不能操作就睡觉(2)非阻塞式IO:不能操作就返回错误(3)IO复用(4)信号驱动式IO(5)异步IO。原创 2022-12-30 14:45:24 · 624 阅读 · 0 评论 -
字符设备驱动(一)
:普通文件文件内容+文件名+元信息(文件的相关属性—组织在inode的一个结构体内)d:目录文件p:管道文件s:本地socket文件l:链接文件软链接:类似于快捷方式,指向源文件的路径硬链接:类似于别名c:字符设备b:块设备。原创 2022-12-29 19:47:26 · 642 阅读 · 0 评论 -
内核模块(下)
Linux内核的插件机制——内核模块类似于浏览器、eclipse这些软件的插件开发,Linux提供了一种可以向正在运行的内核中插入新的代码段、在代码段不需要继续运行时也可以从内核中移除的机制,这个可以被插入、移除的代码段被称为内核模块。原创 2022-12-27 16:02:45 · 128 阅读 · 0 评论 -
内核模块(上)
即新功能源码与内核其它代码一起编译进uImage(镜像)文件内1.新功能源码与Linux内核源码在同一目录结构下2.给新功能代码配置Kconfig3.给新功能代码改写Makefile4.make menuconfig 界面里将新功能对应的那项选择成在Linux源码的顶层目录下执行make menuconfig设置相关功能为5.Linux源码顶层目录下 make uImage6.将生成的uImage文件复制到tftp服务器目录下7.启动开发板,观察串口打印信息。原创 2022-12-26 19:08:47 · 84 阅读 · 0 评论 -
驱动相关基础
1.1 裸机程序:直接运行在对应硬件的的程序1.2 应用程序:只能运行在对应操作系统上的程序。原创 2022-12-26 18:19:47 · 373 阅读 · 0 评论