wang 恒
吾日三省吾身,遵恒律谦温乎!
该补的我都会补回来,至死方休!
恐惧来源于无知
展开
-
debian9 rk3399内部看门狗调试记录
系统:Linux Debian 9内核:kernel 4.4.194平台:rockchip问题:使用内部看门狗时候,100Mhz的clk 发现应用层下设的喂狗超时时间和读取的喂狗超时时间对不上。即:如果设置的喂狗超时时间是7s,读出来的则是10s如下: printf("wdt set timeout %ds\n",timeout_s); ret = ioctl(wdt_fd,WDIOC_SETTIMEOUT,&timeout_s); //wdt get timeout 7s原创 2021-02-21 14:51:14 · 1474 阅读 · 0 评论 -
【PWM】内核子系统之PWM子系统分析
PWM(脉冲宽度调制),通常用于控制LED,风扇,或电机之类的模拟器件。它是利用CPU的数字输出来对模拟电路进行控制的一种有效的技术,实际上就是一种对模拟信号电平进行数字编码的方法。PWM子系统没有固定用途,是为了方便PWMdriver开发,PWM使用抽象出来的一套通用API,将它们连接到LED或者风扇取决于电路板设计人员和用户。...原创 2022-07-19 09:00:00 · 314 阅读 · 0 评论 -
【Devm】Linux驱动模型之Devres资源管理框架分析
作为一个长期在kernel中游走的人来讲,对于系列的接口函数是会相当眼熟的,同样的,对于写驱动甚至于读驱动的人来讲也会有这样的烦恼:如probe的时候那些设备资源(CLOCK,DMA,GPIO,IIO,IO region,IOMAP,IRQ等)全在驱动中管理,当probe顺序繁琐复杂的时候,各种资源的申请释放简直不会比应用层中对内存的管理要省心。为什么这么讲?可以简单分析下,当probe过程中,某一步出错了,按照常见方式来讲会goto到对应的出错处理地方,然后进行资源回滚释放,这样是非常烦心的。代码是不断进原创 2022-07-07 09:04:59 · 348 阅读 · 0 评论 -
【SOUND】Linux音频子系统ASoC的驱动框架总分析
ALSA系统在芯片(ASoC)层的总体项目目标是为嵌入式芯片处理器(例如PXA2XX,AU1X00,IMX等)和便携式音频编解码器提供更好的ALSA支持。在进入ASoC子系统之前,内核对SoC音频有一些支持,但是它有一些局限性:ASoC层旨在解决这些问题并提供以下内容特征 :为了实现这一切,ASoC基本上将嵌入式音频系统分为多个可重复使用的组件驱动程序:另外,这里提下OSS(Open Sound System)这个基本被弃用的音频框架。可以参考Linux OSS架构声卡驱动框架2.3 ASoC重要原创 2022-06-22 09:00:00 · 973 阅读 · 0 评论 -
【SOUND】Linux音频子系统ASoC的驱动框架之DAPM分析
动态音频电源管理 () 旨在让便携式 Linux 设备始终使用音频子系统内的最低电量。它独立于其他内核 PM,因此可以轻松地与其他 PM 系统共存。DAPM 对所有用户空间应用程序也是完全透明的,因为所有电源切换都在 ASoC 内核内完成。用户空间应用程序不需要更改代码或重新编译。 DAPM 根据设备内的任何音频流(capture/playback)活动和混音器设置做出电源切换决策。DAPM 横跨整台机器。它涵盖了整个音频子系统内的电源控制,其中包括内部编解码器电源模块和机器级电源系统。DAPM 中有 4原创 2022-06-21 09:00:00 · 363 阅读 · 0 评论 -
【SOUND】Linux音频子系统ASoC的驱动框架之Platform分析
ASoC平台驱动程序()类可以分为音频DMA驱动程序,SoC DAI驱动程序和DSP驱动程序。其中最最最主要的就是SoC DAI驱动程序了。平台驱动程序仅针对SoC CPU,并且必须没有主板的特定代码。ps:因此,在ASoC中Platform也可以叫做CPU/SoC。平台DMA驱动程序可选支持以下ALSA操作:平台驱动程序通过导出其DMA功能:有关音频DMA的详细信息,请参考ALSA驱动程序文档。ps:DMA驱动程序是SOC/PXA/PXA2XX-PCM.C。每个SoC DAI 驱动()必须提供以下功原创 2022-06-16 09:00:00 · 534 阅读 · 0 评论 -
【SOUND】Linux音频子系统ASoC的驱动框架之Machine分析
关于Machine,也叫这部分来说,分为两种通用的和特定的,对于部分特定的LINK,通用的不再适用,因此不能使用通用的驱动而要自己重新写对应的特定machine驱动。Simple Card 是 ASoC 通用的 machine driver,可支持大部分标准声卡的添加。ps:本文未涉及自定义machine相关,若感兴趣,自行阅读内核文档和查阅相关资料。ASoC机器驱动程序()是将所有组件驱动程序(例如codec,platform和DAIS)粘合在一起的代码。它还描述了每个组合之间的关系,包括音频路径,GPI原创 2022-06-12 06:00:00 · 408 阅读 · 0 评论 -
【SOUND】Linux音频子系统ASoC的驱动框架之Codec分析
关于codec这块,是整个框架驱动中最多变的,因为codec有太多种类,而它也是直接需要操作芯片的寄存器的,这样因为各个芯片的设计制作以及寄存器的不一样,导致了驱动无法统一共用,因此驱动人员在codec这块做得工作是最多的了。这里提供一个前面调试过的codec芯片的文章:【Codec ES8388/ES8323】基于rk3399的音频芯片调试笔记ASoC编解码器类驱动程序(ASoC Codec Class Driver)是通用和硬件独立的代码,可配置编解码器,FM,调制解调器,BT或外部DSP,以提供音频原创 2022-06-10 15:23:25 · 417 阅读 · 1 评论 -
Linux module_init 调用跟踪分析记录
platform:rk3399kernel:4.4.179kernel/include/linux/module.h/** * module_init() - driver initialization entry point * @x: function to be run at kernel boot time or module insertion * * module_init() will either be called during do_initcalls() (if * b原创 2021-06-30 11:35:04 · 209 阅读 · 0 评论 -
【Regmap】Linux regmap 子系统分析
文章目录1.regmap子系统前言1.1 何为regmap?1.2 regmap因何出世?2.regmap子系统分析2.1 框架模型2.2 代码文件结构2.3 重要数据结构2.5 regmap通用操作接口2.6 使用流程3.rk808 PMIC 驱动regmap-i2c重要部分示例3.1 regmap_config 结构填充3.2 注册strcut regmap对象示例3.3 regmap通用API操作设备3.4 释放regmap对象实例1.regmap子系统前言事物不断向前发展,Linux内核亦是如此原创 2022-05-01 18:42:22 · 459 阅读 · 0 评论 -
【Thermal】内核框架模型之thermal温控子系统Cooling块
文章目录本系列全链接1.前言2.分析2.1 重要数据结构2.1.1 cpu_cooling相关2.1.2 thermal 子系统相关2.2 重要函数接口2.2.1 cpufreq_get_max_state2.2.2 cpufreq_get_cur_state2.2.3 cpufreq_set_cur_state2.2.4 cpufreq_get_requested_power、cpufreq_state2power和cpufreq_power2state3.总结本系列全链接1.【Thermal】内核原创 2022-01-13 00:00:00 · 402 阅读 · 0 评论 -
【Thermal】内核框架模型之thermal温控子系统Gvernors块
文章目录本系列全链接1.前言2.分析2.1 五种温控策略简要分析2.1.1 fair_share2.1.2 gov_bang_bang2.1.3 step_wise2.1.4 user_space2.2 Power allocator2.2.1 当前温度低于trip的情况2.2.2 当前温度高于trip的情况3.总结本系列全链接1.【Thermal】内核框架模型之thermal温控子系统总框架分析2.【Thermal】内核框架模型之thermal温控子系统Core块3.【Thermal】内核框架模型原创 2022-01-10 20:00:00 · 510 阅读 · 0 评论 -
【Thermal】内核框架模型之thermal温控子系统Sensor块
文章目录本系列全链接1.前言2.分析2.1 tsadc dts配置2.2 重要数据结构2.2.1 tsadc 硬件平台相关2.2.2 thermal.h中相关数据结构2.3 接口及相关机制2.3.1 rockchip_thermal_register_sensor2.3.2 rockchip_thermal_alarm_irq_thread2.3.3 rockchip_thermal_panic_block3.总结本系列全链接1.【Thermal】内核框架模型之thermal温控子系统总框架分析2.【原创 2022-01-09 13:00:00 · 775 阅读 · 0 评论 -
【Thermal】内核框架模型之thermal温控子系统Core块
文章目录本系列全链接1.前言2.分析2.1 thermal.h 中相关数据结构类型2.2 thermal_core.h 中相关数据结构类型2.3 重要接口及工作机制2.3.1 thermal_zone_device_register2.3.1 thermal_set_governor 和 bind_tz2.3.2 thermal_zone_device_check2.3.3 thermal_zone_device_reset3.总结本系列全链接1.【Thermal】内核框架模型之thermal温控子系原创 2022-01-08 23:45:00 · 552 阅读 · 0 评论 -
【Thermal】内核框架模型之thermal温控子系统总框架分析
文章目录本系列全链接1.Thermal子系统介绍2.Thermal软件框架模型分析2.1 引入及相关概念2.2 Thermal Core2.2.1 重要数据结构:kernel/include/linux/thermal.h2.2.2 Core 重要的API2.2.3 core 初始化2.3 Thermal Sensor(thermal_zone_device和platform thermal drivers)2.4 Thermal Governors2.5 Thermal Cooling2.6 Therma原创 2022-01-07 14:05:46 · 640 阅读 · 0 评论