摘要: 学习资料: 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 阅读(22) 评论(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 阅读(134) 评论(0) 推荐(0) 编辑
摘要: dma engine 相关代码分析_dmaengine desc callback-CSDN博客 dmatest 代码分析-CSDN博客 阅读全文
posted @ 2024-04-01 10:31 lethe1203 阅读(13) 评论(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 阅读(90) 评论(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 阅读(97) 评论(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 阅读(15) 评论(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 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 学习资料来源于:韦东山第三期,侵联删 可以从request_irq函数一路分析,interrupt相关结构体如下: Linux中有一个中断数据,对于每一个硬件中断,都有一个数组项,这个数组就是irq_desc数组 当调用request_irq、request_threaded_irq注册中断处理函数 阅读全文
posted @ 2024-04-01 02:31 lethe1203 阅读(13) 评论(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 阅读(16) 评论(0) 推荐(0) 编辑
摘要: workqueue作为中断下半部的一种实现方式,和tasklet不同点在于: 1、workqueue中的工作项的执行是在内核线程的上下文中进行的,因此可以执行长时间运行的任务,不会阻塞其他进程的执行。tasklet 在中断上下文中执行,因此不能执行可能会阻塞的操作或者长时间运行的任务。它们的执行时间 阅读全文
posted @ 2024-04-01 01:49 lethe1203 阅读(8) 评论(0) 推荐(0) 编辑
摘要: Softirq: 内核用softirq_action结构管理软件中断的注册和激活等操作,它的定义如下: struct softirq_action { void (*action)(struct softirq_action *); }; 只有一个用于回调的函数指针action。软件中断的资源是有限 阅读全文
posted @ 2024-04-01 01:35 lethe1203 阅读(14) 评论(0) 推荐(0) 编辑