内核驱动
杀不死的进程
很少写代码的驱动工程师
展开
-
linux多点触摸
touch转载 2022-11-01 17:23:42 · 230 阅读 · 0 评论 -
ISP pipeline
camx chi-cdk转载 2022-09-08 13:58:25 · 1433 阅读 · 0 评论 -
linux共享内存
mmap dma转载 2022-09-06 17:34:42 · 120 阅读 · 0 评论 -
drm驱动
drm驱动转载 2022-08-31 11:50:50 · 162 阅读 · 0 评论 -
高通camera调试
camera调试原创 2022-07-07 10:40:32 · 302 阅读 · 0 评论 -
shell 读写内核寄存器
adb shell ecall reg_read_u32adb shell ecall reg_write_u32 0xaddr 0xvalue原创 2022-03-04 21:03:04 · 684 阅读 · 2 评论 -
sysfs code
static ssize_t ser_main_regs_show(struct device *dev, struct device_attribute *attr, char *buf){ int i = 0; unsigned char reg_value = 0; struct i2c_client *client = to_i2c_client(dev); if (buf == NULL) { ds941_debugerr("buff ...原创 2022-03-04 21:02:11 · 100 阅读 · 0 评论 -
v4l2框架
V4L2 driver -整体架构 - yooooooo - 博客园转载 2022-02-22 22:50:47 · 135 阅读 · 0 评论 -
中断下半部
linux驱动 — 中断下半部之tasklet&workqueue_上官绝痕的专栏-CSDN博客转载 2022-02-22 22:20:09 · 70 阅读 · 0 评论 -
of_iomap
void __iomem *of_iomap(struct device_node *node, int index);通过设备结点直接进行设备内存区间的 ioremap(),index是内存段的索引。若设备结点的reg属性有多段,可通过index标示要ioremap的是哪一段,只有1段的情况, index为0。采用Device Tree后,大量的设备驱动通过of_iomap()进行映射,而不再通过传统的ioremap。...原创 2021-11-13 18:15:19 · 1405 阅读 · 0 评论 -
多指触摸代码
1. 初始化 const struct f1ltouch_platform_data *pdata = data->pdata; struct device *dev = &data->client->dev; struct input_dev *input_dev; int error; unsigned int num_mt_slots; unsigned int mt_flags = 0; /* Handle default values and ori原创 2020-08-04 16:15:47 · 304 阅读 · 0 评论 -
work queue and wait queue and tasklet
work queue是一种bottom half,中断处理的后半程,强调的是动态的概念,即work是重点,而queue是其次。wait queue是一种【任务队列】,可以把一些进程放上面睡眠等待某个事件,强调静态多一些,重点在queue上,即它就是一个queue,这个queue如何调度,什么时候调度并不重要。一、等待队列等待队列在内核中有很多用途,尤其适合用于中断处理,进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。例如,等待一个磁盘操作的终止,等待释放系统资源,或者等待时间经过固定的转载 2020-08-03 20:59:09 · 196 阅读 · 0 评论 -
fasync的总结
fasync的总结我们知道,驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时 候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备 的状态,从而节约了资源,这就是异步通知。相关函数原型:int fasync_helper(struct inode *inode, struct file ...转载 2019-10-19 16:19:22 · 512 阅读 · 1 评论 -
linux usbnet驱动
工作中接触了USB转网口设备,通过USB口连接到电视盒子上,会被识别成一个网卡,遇到USB转网口无法获取IP的问题,学习和调试了这部分usb host端的usbnet驱动,进行一下总结。USB host端的驱动,包括usb host controller(如xhci, ehci), usb core(负责usb设备插入识别,枚举,设备与驱动匹配), usb driver (具体某种USB设备...转载 2019-03-23 16:03:10 · 2558 阅读 · 0 评论 -
高通gobi系列modem
https://blog.csdn.net/yazhouren/article/details/52287803?utm_source=blogxgwz6转载 2019-05-04 15:29:21 · 270 阅读 · 0 评论 -
linux下的usb驱动分析
Linux USB驱动框架分析(一) 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了。好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动开发。但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货。当然,还会顺带提一下其他的驱动程序写法。 事实上,Linux的设备驱动都...转载 2019-05-04 20:27:24 · 678 阅读 · 0 评论 -
request_threaded_irq及IRQF_ONESHOT的简单研究
https://blog.csdn.net/melo_fang/article/details/78224326最近有对request_threaded_irq以及IRQF_ONESHOT进行了一下研究, 首先是通过TP驱动的IRQ来做实验,中断为低有效,gpio默认状态为输入高电平,驱动内部代码为:ret =request_threaded_irq(touchdev-...转载 2019-03-11 10:33:47 · 1638 阅读 · 0 评论 -
如何打开linux内核函数dev_dbg()调试开关
https://blog.csdn.net/kinzxv/article/details/81944397转载 2019-03-11 10:02:17 · 2078 阅读 · 0 评论 -
使用非平台方式进行配置GPIO引脚
采用非平台方式进行配置GPIO引脚采用非平台方式进行配置gpio引脚,是直接对其gpio组寄存器进行读写。由于不能直接对寄存器物理地址进行操作,所有需要利用ioremap将gpio寄存器的物理地址映射成虚拟地址写寄存器:writel(value,对应寄存器的虚拟地址);读寄存器:value = readl(对应寄存器的虚拟地址);采用tcc893x平台方式进行配置GPIO引脚t...转载 2019-03-04 14:24:31 · 343 阅读 · 0 评论 -
linux 中mdelay() 与msleep()的区别
https://blog.csdn.net/cbk861110/article/details/40747139转载 2019-07-16 16:54:30 · 972 阅读 · 0 评论 -
Android 6.0中SELinux的TE简介
SELinux资源访问基本概念SELinux使用类型强制来改进强制访问控制。所有的主体(程序进程)对客体(文件/socket等资源)的访问都有一条TE规则来许可。当程序访问一个资源的时候,系统会搜索所有的TE规则集,并根据结果进行处理。这个规则集是由访问向量规则(AV, Access Vector)来描述的。内核向外部暴露允许访问的资源权限,由TE来描述主体拥有什么样的访问权。SELinu...转载 2019-02-26 16:27:23 · 547 阅读 · 0 评论 -
Linux kernel的中断子系统
http://www.wowotech.net/linux_kenrel/irq-domain.html转载 2019-05-10 10:31:08 · 213 阅读 · 0 评论 -
低功耗调试
delete_moduleexternal/kmod/libkmod/libkmod-module.c +790system与power相关:system/core/libsuspend/system/core/libsuspend/autosuspend_wakeup_count.c:46:static const char *sleep_state = "mem";...原创 2019-05-30 17:59:53 · 3573 阅读 · 2 评论 -
一次读懂 Select、Poll、Epoll IO复用技术
https://baijiahao.baidu.com/s?id=1611547498841608701&wfr=spider&for=pc我们之前采用的多进程方式实现的服务器端,一次创建多个工作子进程来给客户端提供服务。其实这种方式是存在问题的。可以打个比方:如果我们先前创建的几个进程承载不了目前快速发展的业务的话,是不是还得增加进程数?我们都知道系统创建进程是需要消耗大...转载 2019-06-10 11:38:43 · 159 阅读 · 0 评论 -
编写一个 USB 驱动
http://www.deansys.com/doc/ldd3/ch13s04.html转载 2019-07-01 21:18:34 · 378 阅读 · 0 评论 -
urb分析,usb_fill_bulk_urb函数理解
https://blog.csdn.net/liangxiaozhang/article/details/8332080转载 2019-06-23 17:04:18 · 863 阅读 · 0 评论 -
内核同步方法(自旋锁,信号量,互斥锁,完成变量,顺序锁,禁止抢占)
https://blog.csdn.net/damontive/article/details/80629731原子操作Linux内核提供了多种同步机制,这些机制本质上都是通过原子操作来实现的。原子操作可以保证指令以原子方式执行,不会被中途打断(中断也不会打断一个指令,处理器只有在当前指令完成后才会去处理中断)。内核提供了两套原子操作的接口,一套用于整数原子操作,一套用于进行位原子操作。这...转载 2019-06-23 18:05:10 · 587 阅读 · 0 评论 -
struct net_device网络设备结构体详解
https://blog.51cto.com/weiguozhihui/1584894转载 2019-07-04 13:58:26 · 840 阅读 · 0 评论 -
i2ctool的使用
https://www.cnblogs.com/xiaojianliu/p/9728371.html转载 2019-07-18 14:09:50 · 267 阅读 · 0 评论 -
当usbnet打印 kevent * may have been dropped
Every once in a while when my system is under a bit of stress I seesome spammy messages show up in my logs that say: kevent X may have been droppedAs far as I can tell these messages aren't ter...转载 2019-09-08 16:10:42 · 5200 阅读 · 1 评论 -
Android内核学习笔记
https://blog.csdn.net/weiqifa0/article/details/832467340、android系统启动《Android系统启动流程 -- bootloader》《The Android boot process from power on》《Android 启动过程介绍》《Android培训班(86)内核运行之前的引导程序》 这是一系列文章...转载 2019-01-03 15:37:06 · 220 阅读 · 0 评论 -
DEVICE_ATTR的使用
https://blog.csdn.net/njuitjf/article/details/16849333转载 2018-12-11 11:03:25 · 401 阅读 · 0 评论 -
内核中两个重要结构体inode,file
https://www.cnblogs.com/chen-farsight/p/6177870.html转载 2018-08-23 21:17:50 · 187 阅读 · 0 评论 -
Linux 驱动头文件说明
https://blog.csdn.net/zqixiao_09/article/details/50457713转载 2018-08-08 17:04:25 · 280 阅读 · 0 评论 -
博通wifi驱动
代码块的抓取:https://blog.csdn.net/shichaog/article/details/50989609代码块分析:https://blog.csdn.net/fenzhi1988/article/details/44809779转载 2018-09-19 12:18:19 · 616 阅读 · 0 评论 -
创建一个简单的device_create_file文件节点
DEVICE_ATTR的使用使用DEVICE_ATTR,可以在sys fs中添加“文件”,通过修改该文件内容,可以实现在运行过程中动态控制device的目的。类似的还有DRIVER_ATTR,BUS_ATTR,CLASS_ATTR。这几个东东的区别就是,DEVICE_ATTR对应的文件在/sys/devices/目录中对应的device下面。而其他几个分别在driver,bus,c...转载 2018-12-11 10:55:10 · 1119 阅读 · 0 评论 -
android编译产生的apk或so不安装
https://blog.csdn.net/andyhuabing/article/details/6649919上周六碰到android在线编译系统中的几个问题,记录如下:问题1:问题描述:将java应用放在packages\apps下面一起编译,单独进入应用mm编译,可以install安装到out下面的system/app下面,但根目录上make却不会原因:LOCAL_MODULE...转载 2018-12-12 19:32:32 · 362 阅读 · 0 评论 -
wpa_supplicant详解
http://blog.chinaunix.net/uid-29181887-id-4826168.html目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络。请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口。 wpa_supplicant是一个较好的选择,但缺点是它不支持所有的驱动。请浏览wpa_supplicant网站获得...转载 2018-11-26 19:59:10 · 297 阅读 · 0 评论 -
网络驱动的相关函数
ethtool dummy.c 添加一个dummy的网络设备 关键函数及结构体 module_init linux内核的模块机制,向linux内核提供本模块的初始化函数 rtnl_link_ops(dummy_link_ops) 为rtnl机制(???)提供setup和validate方...原创 2018-11-20 14:16:43 · 1410 阅读 · 0 评论 -
linux pinmux 引脚多路复用驱动分析与使用
一、网上的文章一般都是分析pinctrl驱动的,从头到尾分析了一遍,搞的相当复杂,实际上没那么复杂二、pinmux的概要分析,有关文件如下/pinctrl/core.c、/pinctrl/Pinmux.c、平台相关的结构体pinctrl_state,pinctrl_setting,pinmux_ops,pinctrl_desc,pinctrl_map,基本原理如下:1、通过在平台相关的pin......转载 2018-11-20 16:44:07 · 8744 阅读 · 0 评论