08 2023 档案
摘要:Linux 内核设备驱动程序通过 `devm_regmap_init_mmio()` 等函数获得 `struct regmap` 结构对象,该对象包含可用于访问设备寄存器的全部信息,包括定义访问操作如何执行的 bus,定义了各个设备寄存器的读写属性的 config,以及加速设备寄存器访问的 cach
阅读全文
摘要:## debugfs 文件系统 debugfs 可以为 Linux 内核各个模块的分析调试,提供许多信息,如音频子系统的 ASoC,以及 tracing 等。debugfs 文件系统可以通过命令行工具挂载,如下所示: ``` root@apollo:~# ls /sys/kernel/debug/
阅读全文
摘要:Linux 内核 ASoC 框架,在概念上将嵌入式音频系统拆分为多个可复用的组件驱动程序,包括 Codec 类驱动程序、平台类驱动程序和机器类驱动程序。在实现上,机器类驱动程序用 `struct snd_soc_card` 和 `struct snd_soc_dai_link` 结构描述,属于平台类
阅读全文
摘要:Linux 内核提供了一套可缓存的设备 IO 寄存器访问机制,即 **regmap**。**regmap** 机制支持以统一的接口,访问多种不同类型的设备 IO 寄存器,如内存映射的设备 IO 寄存器,需要通过 I2C、I3C、SPI、AC97 和 SLIMBUS 等总线访问的设备 IO 寄存器等。
阅读全文
摘要:来而不往非礼也。前面看到了用户空间应用程序和 DMA buffer 之间交换数据,并更新 `runtime->control->appl_ptr` 指针的过程,这里看一下硬件设备驱动程序在完成 DMA buffer 和硬件设备的数据交换之后,更新 `runtime->status->hw_ptr`
阅读全文
摘要:Linux 用户空间应用程序通过声卡驱动程序(一般牵涉到多个设备驱动程序)和 Linux 内核 ALSA 框架导出的 PCM 设备文件,如 `/dev/snd/pcmC0D0c` 和 `/dev/snd/pcmC0D0p` 等,与 Linux 内核音频设备驱动程序和音频硬件进行数据传递。PCM 设备
阅读全文
摘要:这种绑定依然处于开发中,并且基于 benh[1] 的一些实验性工作。 时钟信号源可以由设备树中的任何节点表示。这些节点被指定为时钟提供者。时钟消费者节点使用 `phandle` 和时钟指示符对将时钟提供者输出连接到时钟输入。与 gpio 指示符类似,时钟指示符是 0 个、1 个或多个标识设备上的时钟
阅读全文
摘要:Linux 内核 ALSA 框架通过向用户空间导出多个设备文件,以使用户空间程序可以与内核的音频子系统交互,可以访问音频硬件设备。 ## Linux 内核 ALSA 音频框架初始化 Linux 内核 ALSA 音频框架初始化时,注册字符设备驱动,并在 `/proc` 文件系统中,创建音频设备信息相关
阅读全文