linux驱动
文章平均质量分 84
Konwledging
这个作者很懒,什么都没留下…
展开
-
sg_table and scatterlist
sg_table and scatterlist原创 2023-12-26 23:04:51 · 1405 阅读 · 0 评论 -
dma-buf
【代码】dma-buf。原创 2021-07-20 00:08:59 · 281 阅读 · 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 · 270 阅读 · 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 · 221 阅读 · 0 评论 -
基于QEMU的Linux Driver开发环境的配置
Setup Driver development EnvironmentSoftware: QEMU + Vexpress原创 2021-01-16 00:40:51 · 1056 阅读 · 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 · 235 阅读 · 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 · 318 阅读 · 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 · 386 阅读 · 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 · 304 阅读 · 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 · 301 阅读 · 0 评论 -
中断下半部分机制--tasklet和工作队列
中断下半部分机制--tasklet和工作队列1.tasklet tasklet机制是内核定义的几种softirq之一(常用) 根据优先级不同内核将tasklet分成两种:TASKLET_SOFTIRQ 和 HI_SOFTIRQ (后者优先级高) 执行时机通常是上半部分返回的时候。 1.1 tasklet机制初始化 在linux系统内核初始化的时翻译 2017-08-15 12:06:13 · 342 阅读 · 0 评论 -
Linux设备驱动模型探究--2(bus)
二. 总线bus、设备device、驱动driver ----总线、设备、驱动是建立在kobject和kset基础之上的,也是设备驱动程序员与之打交道最多的部分。----总线是Linux设备驱动模型中最核心的框架,设备与驱动都围绕着总线工作,总线可以是实际物理总线(比如PCI总线,I2C总线)的抽象,----也可以是出去驱动模型构架需要产生的虚拟"平台"总线,因为符合Lin原创 2017-08-25 10:44:53 · 265 阅读 · 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 · 342 阅读 · 0 评论 -
Linux设备驱动模型探究--1(kobject)
1. sysfs文件系统---首先为应用程序提供了文件接口,其次将设备和驱动链接起来; sysfs文件系统在 sysfs_init( )初始化 ---主要的函数sysfs_init_inode( ) 2 kobject 和 kset ----概述:如果将linux设备驱动模型比喻成一座大厦,那么kobject和kset就是构成这座大厦内部的钢筋和构架原创 2017-08-25 09:55:29 · 305 阅读 · 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 · 255 阅读 · 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 · 725 阅读 · 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 · 311 阅读 · 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 · 253 阅读 · 0 评论 -
LCD架构浅析&&mmap
一. 关于mmap1. linux I/O端口与I/O内存 IO端口:当一个寄存器或者内存位于IO空间时;/*x86体系结构处理器*/ IO内存:当一个内存或者寄存器位于内存空间时;/*ARM体系结构处理器*/ 在访问IO内存之前需要首先使用ioremap函数将设备所处的物理地址映射到虚拟地址上。 ----why? 在系统运行时,外设的I/O内存资原创 2017-08-17 16:02:53 · 1107 阅读 · 0 评论