linux驱动
文章平均质量分 58
Konwledging
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
display
在 Linux 内核及显示系统中,是的缩写,是一套用于控制显示器电源状态的行业标准协议。原创 2025-12-24 16:07:03 · 179 阅读 · 0 评论 -
page migrate
原创 2025-12-24 10:22:04 · 319 阅读 · 0 评论 -
page fault
原创 2025-12-24 10:20:06 · 345 阅读 · 0 评论 -
alsa驱动架构
从属关系snd_pcm是snd_card的子设备,必须依附于某个snd_card存在;双向引用链表包含所有snd_pcm(父找子);指针指向所属snd_card(子找父);生命周期绑定snd_card的注册/销毁会同步影响所有snd_pcm,是“牵一发而动全身”的根节点。snd_card是声卡的“总控中心”,snd_pcm是总控中心下负责“音频播放/录音”的具体功能模块,没有总控中心,功能模块无法独立存在和工作。原创 2025-12-18 09:45:38 · 666 阅读 · 0 评论 -
audio drv
模拟输出”和“多声道输出”是音频领域的两个核心概念,分别对应和。原创 2025-12-17 11:34:48 · 903 阅读 · 0 评论 -
rmap(no check)
结构体核心定位类比(便于理解)vma(VMA)单个进程的「匿名内存区间描述符」(比如进程堆/栈对应的匿名 VMA),是反向映射的「终端节点」某栋楼的「某个房间」(属于特定住户,对应特定内存区间)anon_vma多个共享同一匿名页的 VMA 的「聚合容器」,是反向映射的「核心枢纽」「小区共享大厅」(连接所有共享同一批匿名页的房间)vma和anon_vma之间的「双向链接桥梁」(因为一个 VMA 可关联多个anon_vma,一个anon_vma可关联多个 VMA)原创 2025-12-16 10:41:15 · 817 阅读 · 0 评论 -
VMA-virtual memory areas
【代码】VMA-virtual memory areas。原创 2025-12-15 14:18:37 · 91 阅读 · 0 评论 -
slab/slob/slub 分配器
原创 2025-12-15 10:12:58 · 94 阅读 · 0 评论 -
Linux memblock
原创 2025-12-10 17:15:04 · 283 阅读 · 0 评论 -
Linux页面分配器
【代码】Linux页面分配器。原创 2025-12-09 09:51:31 · 110 阅读 · 0 评论 -
mmap三种映射方式
【代码】mmap三种映射方式。原创 2025-12-10 10:42:53 · 260 阅读 · 0 评论 -
字符设备驱动 (二)
1 开发环境Linux Kernel 4.18.0QEMU 5.2.0-vexpressSource Insight 3.52 并发控制linux设备驱动中存在多个进程对资源共享并发访问.因此需要对驱动并发控制进行深入分析.2.1 基本概念并发(Concurrency)指的是多个执行单元同时、并行被执行.竞态(Race Conditions):并发的执行单元对共享资源的访问则很容易导致竞态.临界区(Critical Section):每个进程中访问临界资源的那段代码称为临界区.临界原创 2021-02-23 14:26:07 · 445 阅读 · 0 评论 -
字符设备驱动 (一)
1 字符设备驱动 (一)Linux Kernel 4.18.0QEMU 5.2.0-VexpressSource Insight 3.52 字符设备驱动Linux从各异的设备中提取共性,将其划分成三大类:字符设备、块设备和网络设备。常见的字符设备有键盘、鼠标、液晶显示、打印机等。2.1 字符设备结构体在Linux内核中使用cdev描述一个字符设备struct cdev { struct kobject kobj; struct module *owner; /*所属模块*/原创 2021-01-27 22:06:02 · 296 阅读 · 0 评论 -
基于QEMU的Linux Driver开发环境的配置
Setup Driver development EnvironmentSoftware: QEMU + Vexpress原创 2021-01-16 00:40:51 · 1520 阅读 · 0 评论 -
UART设备驱动探究1
UART设备驱动探究1--Uart设备发送和接受数据的流程1.1 tty设备发送数据的流程:--tty核心从一个用户获取将要发送给一个tty设备的数据,[用户空间-->tty核心(tty_write)];--tty核心将数据传递给tty线路规程驱动,[tty核心--->tty线路规程驱动(ldisc.write)];--接着数据被传递到tty驱动,tty驱动将数据转换为原创 2017-09-08 10:58:50 · 324 阅读 · 0 评论 -
中断下半部分机制--tasklet和工作队列
中断下半部分机制--tasklet和工作队列1.tasklet tasklet机制是内核定义的几种softirq之一(常用) 根据优先级不同内核将tasklet分成两种:TASKLET_SOFTIRQ 和 HI_SOFTIRQ (后者优先级高) 执行时机通常是上半部分返回的时候。 1.1 tasklet机制初始化 在linux系统内核初始化的时翻译 2017-08-15 12:06:13 · 427 阅读 · 0 评论 -
Linux设备驱动模型探究--2(bus)
二. 总线bus、设备device、驱动driver ----总线、设备、驱动是建立在kobject和kset基础之上的,也是设备驱动程序员与之打交道最多的部分。----总线是Linux设备驱动模型中最核心的框架,设备与驱动都围绕着总线工作,总线可以是实际物理总线(比如PCI总线,I2C总线)的抽象,----也可以是出去驱动模型构架需要产生的虚拟"平台"总线,因为符合Lin原创 2017-08-25 10:44:53 · 357 阅读 · 0 评论 -
Linux设备驱动模型探究--3(device)
三.设备(device)/***系统中的每个设备都是一个struct device对象,内核为容纳所有这些设备定义了一个kset-->devices_kset,****作为系统中所有struct device类型内核对象的容器,内核将系统中的设备分为两大类:block和char****每一个类对应内核对象,分别为sysfs_dev_block_kobj和sysfs_dev_ch原创 2017-08-25 16:15:58 · 432 阅读 · 0 评论 -
Linux设备驱动模型探究--1(kobject)
1. sysfs文件系统---首先为应用程序提供了文件接口,其次将设备和驱动链接起来; sysfs文件系统在 sysfs_init( )初始化 ---主要的函数sysfs_init_inode( ) 2 kobject 和 kset ----概述:如果将linux设备驱动模型比喻成一座大厦,那么kobject和kset就是构成这座大厦内部的钢筋和构架原创 2017-08-25 09:55:29 · 376 阅读 · 0 评论 -
Linux设备驱动模型探究--4(driver)
四. 关于驱动(driver)--driver.c/*数据结构*/struct device_driver { const char *name; /*驱动名字*/ struct bus_type *bus; /*驱动所属总线*/ struct module *owner; /*驱动所在内核模块*/ int (*probe) (struct device *原创 2017-08-25 16:57:58 · 342 阅读 · 0 评论 -
Iput子系统探究--1(input_dev)
1.input子系统初始化input子系统对上层应用提供一个统一的接口--字符设备接口-主设备号13static const struct file_operations input_fops = { .owner = THIS_MODULE, .open = input_open_file, .llseek = noop_llseek,};static int原创 2017-08-25 20:01:55 · 828 阅读 · 0 评论 -
Iput子系统模型探究--2(handler-->以evdev_handler为例)
3. 关于input_handler//Evdev--> Event char devices, giving access to raw input device events.接下来以evdev(Input driver event char devices)为例,探究基本的handler;3.1 input_handler数据结构struct input_handle原创 2017-08-25 20:46:03 · 358 阅读 · 0 评论 -
IIC && SPI架构浅析
一. IIC 架构浅析1. 注册板级包中的i2c设备(例如:eeprom1,eeprom2,eeprom3), 将i2c设备添加到__i2c_board_list链表中。 i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0)); 2. SPI控制器驱动(spi-s3c64xx.c) 采用平台总线的形式,原创 2017-08-15 21:38:45 · 315 阅读 · 0 评论 -
Iput设备使用分析--1(驱动层面)
4. 使用input_device分析/****************怎样使用input系统--简单的分析********************/static int __init inputdev_init(void){ struct input_dev* inputdev = input_allocate_device(); /*1分配input_dev设备原创 2017-08-25 21:53:59 · 365 阅读 · 0 评论 -
Iput设备使用分析--2(应用层面)
5.input设备使用分析--2(应用层面)应用程序打开一个设备(需要包含内核一些头文件.h)---/*struct input_event{ struct timeval time; __u16 type; __u16 code; __s32 value;};*/void main(){ struct input_event key_e原创 2017-08-25 22:16:14 · 388 阅读 · 0 评论 -
Linux字符设备原理探究--2(应用层调用)
4. 关于系统调用分析4.1 创建字符设备文件节点--mknode在使用字符设备之前通常要创建字符设备文件节点--例如:mknod /dev/char_key c 255 0-->在/dev/目录下创建char_key字符设备文件,主设备号255,次设备号0mknod-->sys_mknodat(AT_FDCWD, filename, mode, dev)//namei原创 2017-08-27 17:22:14 · 470 阅读 · 0 评论 -
dm9000驱动分析
1.关于write函数条用过程write--->sock_aio_write------>do_sock_write--------->__sock_sendmsg /*--->协议无关层*/sock->ops->sendmsg /*--->协议栈(以udp为例)*/--->udp_sendmsg---->ip_route_output_flow(选择路原创 2017-08-24 16:01:31 · 396 阅读 · 0 评论 -
Framebuffer/LCD框架
一. 关于mmap1. linux I/O端口与I/O内存 IO端口:当一个寄存器或者内存位于IO空间时;/*x86体系结构处理器*/ IO内存:当一个内存或者寄存器位于内存空间时;/*ARM体系结构处理器*/ 在访问IO内存之前需要首先使用ioremap函数将设备所处的物理地址映射到虚拟地址上。 ----why? 在系统运行时,外设的I/O内存资原创 2017-08-17 16:02:53 · 1255 阅读 · 0 评论
分享