随笔分类 -  Linux 内核 && 驱动

Linux内核 && 驱动知识
摘要:参考资料: https://www.cnblogs.com/pengdonglin137/p/8149859.html https://blog.csdn.net/HuangChen666/article/details/133633120 remap_pfn_range : remap_pfn_r 阅读全文
posted @ 2024-04-06 22:32 lethe1203 阅读(1590) 评论(0) 推荐(0)
摘要:学习资料: https://blog.csdn.net/hexiaolong2009/category_10838100.html https://www.cnblogs.com/sky-heaven/category/1288321.html https://www.kernel.org/doc/ 阅读全文
posted @ 2024-04-01 18:56 lethe1203 阅读(285) 评论(0) 推荐(0)
摘要:DMA传输类型: enum dma_transaction_type { DMA_MEMCPY, // 内存拷贝 DMA_XOR, // 异或操作 DMA_PQ, // 乘方操作 DMA_XOR_VAL, // 异或值操作 DMA_PQ_VAL, // 乘方值操作 DMA_INTERRUPT, // 阅读全文
posted @ 2024-04-01 18:42 lethe1203 阅读(630) 评论(0) 推荐(0)
摘要:dma engine 相关代码分析_dmaengine desc callback-CSDN博客 dmatest 代码分析-CSDN博客 阅读全文
posted @ 2024-04-01 10:31 lethe1203 阅读(57) 评论(0) 推荐(0)
摘要:参考资料: Linux内核4.14版本——DMA Engine框架分析(3)_dma controller驱动_dma_cookie_status-CSDN博客 linux内核之dmaengine_dmaengine 总线地址-CSDN博客 struct dma_device: struct dma 阅读全文
posted @ 2024-04-01 10:29 lethe1203 阅读(457) 评论(0) 推荐(0)
摘要:在Linux内核中,用于管理DMA内存池的相关函数通常包含在内核的DMA API中。以下是一些常见的DMA内存池管理函数: struct dma_pool *dma_pool_create(const char *name, struct device *dev, size_t size, size 阅读全文
posted @ 2024-04-01 09:26 lethe1203 阅读(554) 评论(0) 推荐(0)
摘要:参考资料: 宋宝华:那些年你误会的Linux DMA(关于Linux DMA ZONE和API最透彻的一篇)-CSDN博客 https://blog.csdn.net/waterhawk/article/details/50723677 https://www.linuxidc.com/Linux/ 阅读全文
posted @ 2024-04-01 09:02 lethe1203 阅读(109) 评论(0) 推荐(0)
摘要:SPI作为共享中断,直接使用request_irq等函数注册中断处理函数即可 对于SMP系统PPI中断来说,就需要为每个core都注册一个中断处理函数,相关处理函数如下: int smp_call_function(void (*func)(void *info), void *info, int 阅读全文
posted @ 2024-04-01 02:45 lethe1203 阅读(152) 评论(0) 推荐(0)
摘要:学习资料来源于:韦东山第三期,侵联删 可以从request_irq函数一路分析,interrupt相关结构体如下: Linux中有一个中断数据,对于每一个硬件中断,都有一个数组项,这个数组就是irq_desc数组 当调用request_irq、request_threaded_irq注册中断处理函数 阅读全文
posted @ 2024-04-01 02:31 lethe1203 阅读(88) 评论(0) 推荐(0)
摘要:irqreturn有以下几种: enum irqreturn { IRQ_NONE = (0 << 0), // 表示中断处理程序未处理该中断,或者没有发生中断 IRQ_HANDLED = (1 << 0), // 表示中断已经被处理 IRQ_WAKE_THREAD = (1 << 1), // 表 阅读全文
posted @ 2024-04-01 02:03 lethe1203 阅读(207) 评论(0) 推荐(0)
摘要:workqueue作为中断下半部的一种实现方式,和tasklet不同点在于: 1、workqueue中的工作项的执行是在内核线程的上下文中进行的,因此可以执行长时间运行的任务,不会阻塞其他进程的执行。tasklet 在中断上下文中执行,因此不能执行可能会阻塞的操作或者长时间运行的任务。它们的执行时间 阅读全文
posted @ 2024-04-01 01:49 lethe1203 阅读(150) 评论(0) 推荐(0)
摘要:Softirq: 内核用softirq_action结构管理软件中断的注册和激活等操作,它的定义如下: struct softirq_action { void (*action)(struct softirq_action *); }; 只有一个用于回调的函数指针action。软件中断的资源是有限 阅读全文
posted @ 2024-04-01 01:35 lethe1203 阅读(83) 评论(0) 推荐(0)
摘要:学习文章记录: https://blog.csdn.net/chichi123137/article/details/80956149 https://www.cnblogs.com/slzuo/p/15005057.html 待时间分析 阅读全文
posted @ 2024-03-31 23:46 lethe1203 阅读(29) 评论(0) 推荐(0)
摘要:以下代码为整点原子代码: 多点触摸相关API函数: int input_mt_init_slots( struct input_dev *dev, unsigned int num_slots, unsigned int flags) // 初始化slots // 函数参数和返回值含义如下: dev 阅读全文
posted @ 2024-03-31 23:29 lethe1203 阅读(270) 评论(0) 推荐(0)
摘要:参考资料:https://www.cnblogs.com/kn-zheng/p/17529462.html 1、x/y坐标获取反了理论上LCD左上为[0, 0],右下为分辨率坐标(例如[4096, 2160]),但是上报上去的数据右下为[0 ,0],左上为[4096 , 2160],此时可以做x方向 阅读全文
posted @ 2024-03-31 23:17 lethe1203 阅读(858) 评论(0) 推荐(0)
摘要:此处代码为正点原子代码 probe函数重点: 1、dts获得硬件信息 2、alloc/set/register input_dev alloc:input_allocate_device或devm_input_allocate_device,input_dev.name等不重要 set:重点为ev_ 阅读全文
posted @ 2024-03-31 17:45 lethe1203 阅读(31) 评论(0) 推荐(0)
摘要:参考资料: 正点原子Linux设备驱动 韦东山第二期 图来源于100ask: 一个设备链表,一个handler链表,左边是设备层,右侧是handler处理层,用来处理各种事件。handler处理层内核已经做好了。驱动一个Input设备只需要构造一个input_dev,核心层来注册input_dev和 阅读全文
posted @ 2024-03-31 17:25 lethe1203 阅读(30) 评论(0) 推荐(0)
摘要:参考资料: 正点原子Linux设备驱动 韦东山第二期 触摸屏分为电阻屏和电容屏。电阻屏结构简单,以前很流行;电容屏支持多点触摸,现在手机基本都是使用电容屏 注:LCD和touch screen不是一个东西,制作触摸屏时特地把它的尺寸做得跟LCD大小一模一样,并不是将触摸屏覆盖在LCD上 电阻屏: 电 阅读全文
posted @ 2024-03-31 16:39 lethe1203 阅读(82) 评论(0) 推荐(0)