![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入Linux内核
文章平均质量分 83
Van.Ghylivan
从事嵌入式驱动开发,并研究应用以及硬件.欢迎私信交流~
展开
-
【TTY子系统】printf与printk深入驱动解析
tty子系统是一个庞大且复杂,也是内核维护者所头大的子系统。乍一看,TTY 层似乎并没有那么具有挑战性。毕竟,它只是一个简单的字符设备,负责在两个明确定义的点之间传输面向字节的数据流。但问题比看起来更难。大部分 TTY 代码都源于实现 RS-232 标准的古老硬件,这是最宽松、变化最多的标准之一。TTY 驱动程序还必须监视数据流并从中提取信息;该职责可以包括Q 流量控制、奇偶校验和控制字符检测。控制字符可能会变成带外信息,必须传送到用户空间;原创 2023-08-21 20:00:04 · 324 阅读 · 0 评论 -
Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc
用于申请内核空间的内存;内存以字节为单位进行分配;所分配的内存虚拟地址上连续;kzalloc 是强制清零的 kmalloc 操作;(以下描述不区分 kmalloc 和 kzalloc)kmalloc 分配的内存大小有限制(128KB),而 vmalloc 没有限制;kmalloc 可以保证分配的内存物理地址是连续的,但是 vmalloc 不能保证;kmalloc 分配内存的过程可以是原子过程(使用 GFP_ATOMIC),而 vmalloc 分配内存时则可能产生阻塞;原创 2023-04-11 11:59:01 · 907 阅读 · 0 评论 -
【深入Linux内核驱动】CLK_OF_DECLARE使用及其内在机制
CLK_OF_DEVICE是在CLK子系统里所使用到的一个宏定义,它的主要功能是:声明兼容时钟并将其与初始化函数关联原创 2022-12-10 16:49:22 · 559 阅读 · 0 评论 -
【Linux设备树】设备树基础 DTS,DTSI,DTC及DTB之间的关系
设备树是一种描述硬件的数据结构,它起源于。在Linux 2.6中,ARM架构的板极硬件细节过多地被硬编码在和中,采用设备树后,许多硬件的细节可以直接通过它传递给Linux,而不再需要在内核中进行大量的冗余编码。设备树由一系列被命名的节点()和属性()组成,而节点本身可包含子节点。所谓属性,其实就是成对出现的名称和值。在设备树中,可描述的信息包括(原先这些信息大多被硬编码在内核中):它基本上就是画一棵电路板上CPU、总线、设备组成的树,会将这棵树传递给内核,然后内核可以识别这棵树,并根据它展开出Linux内核原创 2022-12-08 11:28:59 · 4057 阅读 · 0 评论 -
【深入Linux内核驱动】通用时钟框架驱动 Common Clk Framework(CCF)【转】
在一个 SoC 中,晶振、 PLL 、驱动和门等会形成一个时钟树形结构,在 Linux 2.6 中,也存有、、、等通用 API ,但是这些 API 由每个 SoC 单独实现,而且各个 SoC 供应商在实现方面的差异很大,于是内核增加了一个新的通用时钟框架以解决这个碎片化问题。转载 2022-12-01 11:50:51 · 848 阅读 · 0 评论 -
【DMA】DMA 引擎 API 指南
下面是设备驱动程序编写者如何使用 DMA 引擎的 Slave-DMA API 的指南。这仅适用于从 DMA 使用。转载 2022-11-22 15:35:56 · 927 阅读 · 0 评论 -
【并发与竞争】spin自旋锁
自旋锁不管是内核编程,还是应用层编程都会用到;自旋锁和互斥量类似,它不是通过休眠使进程阻塞,而是在获取锁之前一直处于忙等(也就叫自旋)状态。互斥锁和自旋锁,他们俩是最底层的锁,很多高级的锁都是基于他们去实现的。原创 2022-11-18 15:21:01 · 511 阅读 · 0 评论 -
【Linux设备驱动】platform设备驱动编写及编译
`platform总线`是区别于`USB`、`SPI`、`I2C`的虚拟总线,**所有直接通过内存寻址的设备都映射到这条虚拟总线上**来原创 2022-11-16 17:27:29 · 533 阅读 · 6 评论 -
【Linux设备驱动】使用class_create()和device_create()自动创建设备节点
之前[【Linux设备驱动】最简单的 字符设备驱动编写]一文已经对最简单的字符设备驱动编写做了一个简答的叙述,但手动创建设备节点,还是差那么点意思.Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在`/dev`目录下创建相应设备节点,并在卸载模块时删除该节点原创 2022-11-15 16:11:20 · 1399 阅读 · 1 评论 -
【DMA】DMA 控制器文档
这本书有助于 DMAengine 内部 API 和 DMAEngine 设备驱动程序编写者指南。有助于去理解DMA工作原理以及需求及其方式,该文章由内核官方手册翻译而来,其中有我在阅读时觉得必要重要的地方做的笔记原创 2022-11-13 13:50:33 · 698 阅读 · 2 评论 -
【深入Linux内核驱动】【Linux设备驱动】驱动编译进内核和编译成模块有什么区别
该文阐述了驱动编译进内核和编译成模块有什么区别,主要通过Makefile文件进行深入原创 2022-11-13 13:36:45 · 774 阅读 · 1 评论