摘要:
参考资料:《正点原子Linux驱动开发指南》 volatile关键字可参考:https://www.cnblogs.com/lethe1203/p/18031883 原子操作是防止并发访问共享资源的方法之一 linux内核中对原子操作的定义: #include <linux/types.h> typ 阅读全文
摘要:
参考: 《Linux设备驱动开发》 http://www.wowotech.net/linux_kenrel/dma_engine_overview.html https://blog.csdn.net/yangguoyu8023/article/details/121852348 https:// 阅读全文
摘要:
DMA介绍可见:https://www.cnblogs.com/lethe1203/p/18092378 本节复习2440 DMA使用 参考资料:韦东山驱动第二期 DMA字符驱动代码: #include <linux/module.h> #include <linux/kernel.h> #incl 阅读全文
摘要:
内核睡眠机制: 进程通过睡眠机制释放处理器,使其能够处理其他线程。处理器睡眠的原因可能在于感知数据可用性,或等待资源释放 内核调度器管理要运行的任务列表,这被称为运行队列。睡眠进程不再被调度,因为已将它们从运行队列中移除了。除非改变状态(唤醒),否则睡眠进程将永远不会被执行。进程一旦进入等待状态,就 阅读全文
摘要:
基本概念: completion(完成)机制是一种同步原语,用于在线程间实现等待和通知的机制。它提供了一种方式,允许一个线程等待其他线程的完成,并在完成时通知等待线程。在 Linux 内核中,struct completion 表示 completion 对象。它包含一个计数器和一个等待队列,以及相 阅读全文
摘要:
在 clk_provider 中,常见的时钟类型包括以下几种: Fixed Clock(固定时钟):固定频率的时钟,不可更改。它通常用于提供固定频率的时钟信号,例如系统时钟或者外设的时钟。 Gate Clock(时钟门控):通过控制时钟门控信号来开关时钟。可以使用 clk_register_gate 阅读全文
摘要:
DMA映射可参考:https://www.cnblogs.com/lethe1203/p/18092749 reserved_memory方式 1、定义保留内存的节点,由设备节点使用 test_device_reserved: pmu_noc@0xe8000000 { compatible = "s 阅读全文
摘要:
参考资料: https://elinux.org/images/3/32/Pinchart--mastering_the_dma_and_iommu_apis.pdf 《宋宝华:Linux设备驱动开发详解》 VA和PA的相互转换: 系统启动时,MMU便会建立映射表,将DRAM物理地址和虚拟地址进行映 阅读全文
摘要:
本节内容参考《宋宝华:Linux设备驱动开发详解》 cache和DMA本身似乎是两个毫无关联的事物。cache被用作CPU针对内存的缓存,利用程序的空间局部性和时间局部性原理,达到较高的命中率,从而避免CPU每次都必须要与相对慢速的内存交互数据来提高数据的访问速率。DMA可以作为内存与外设之间传输数 阅读全文
摘要:
参考资料: https://blog.csdn.net/as480133937/article/details/104927922 【ARM AMBA AXI 入门 2 - AXI协议中的BURST】 AXI3/4协议_axi3协议-CSDN博客 【注】:关于dw_axi_dmac的理解是我个人理解 阅读全文