随笔分类 -  Linux驱动相关

Linux内核、驱动、系统调试汇总
摘要:1.给驱动模块的打印加tag #define pr_fmt(fmt) "my_module: " fmt //在所有include头文件之前加 pr_info("xxxx"); 2.根据函数指针打印函数名 Symbols/Function Pointers: %pF versatile_init+0 阅读全文

posted @ 2020-05-08 14:33 Hello-World3 阅读(803) 评论(0) 推荐(0) 编辑

用户空间控制驱动与设备的绑定与解绑
摘要:1.用户空间可以控制设备与驱动的绑定和解绑 /* include/linux/device.h */ struct device_driver { ...... bool suppress_bind_attrs; /* disables bind/unbind via sysfs */ ...... 阅读全文

posted @ 2020-03-22 22:37 Hello-World3 阅读(954) 评论(0) 推荐(0) 编辑

DRM(device resource management)介绍
摘要:一、DRM简介 1. 在DRM出现之前,在probe函数中要顺序申请多种资源(IRQ、Clock、memory、regions、ioremap、dma、等等),只要任意一种资源申请失败,就要回滚释放之前申请的所有资源。于是函数的最后,一定会出现很多的goto标签。最终Linux设备模型借助devic 阅读全文

posted @ 2020-03-22 20:54 Hello-World3 阅读(2285) 评论(0) 推荐(1) 编辑

pinctrl(1)——pinctrl子系统的使用
摘要:一、pinctrl子系统设备树配置 有了pinctrl子系统以后,驱动就可以操作pinctrl子系统的接口函数完成I/O操作了,而不需要自己去配置了。一般pinctrl子系统驱动是由芯片原厂的BSP工程师实现好的。驱动工程师通过配置设备树去使用pinctrl子系统。有些I/O口具有不同的状态(sta 阅读全文

posted @ 2020-03-16 01:35 Hello-World3 阅读(9473) 评论(0) 推荐(0) 编辑

GPIO使用总结
摘要:一、GPIO重要概念 要想操作GPIO引脚,需要先把所用引脚配置成GPIO功能,这个通过pinctrl子系统来实现。然后可以根据设置的引脚的方向来读取引脚的值和设置输出值。GPIO子系统存在之前,我们驱动需要在代码中配置寄存器来使用GPIO引脚。再BSP工程师实现好GPIO子系统后,我们就可以在设备 阅读全文

posted @ 2020-03-15 22:20 Hello-World3 阅读(8172) 评论(0) 推荐(1) 编辑

GPIO驱动概述
摘要:一、在kernel代码中操作gpio 在代码中有两种方式操作gpio:一种是一次申请单个gpio,通过设备树,成功后操纵该gpio。另一种是使用pinctrl子系统,通过设备树设置,一次操作多个gpio。 1.直接操作GPIO 因为GPIO一般都是平台设备驱动,所以一般设备树挂载的节点都在&soc下 阅读全文

posted @ 2020-02-21 00:23 Hello-World3 阅读(2077) 评论(0) 推荐(0) 编辑

/sys/power/pm_async 文件解读
摘要:参考: 1.system suspend/resume过程中的异步操作pm_async:https://blog.csdn.net/dachai/article/details/103805313 这个博文中描述的device_suspend()中在4.14内核中还没有dpm_async_fn,这个 阅读全文

posted @ 2020-02-17 00:00 Hello-World3 阅读(462) 评论(0) 推荐(0) 编辑

Linux 内核编码规范
摘要:1. 内核注释Documentation/kernel-doc-nano-HOWTO.txt 和 脚本 scripts/kernel-doc 2. 内核编码规范scripts/checkpatch.pl 用来检查驱动编码规范 ./scripts/checkpatch.pl xxx.patch 3. 阅读全文

posted @ 2019-07-03 16:22 Hello-World3 阅读(1033) 评论(0) 推荐(0) 编辑

Linux内核通知链(notifier chain)
摘要:1. notifier chain概述 Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,有时需要使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制(notification chain)。 通知链只能用在各个子系统之 阅读全文

posted @ 2019-06-23 15:38 Hello-World3 阅读(1057) 评论(0) 推荐(0) 编辑

SPI(1)——Documentation/spi/spi_summary.txt翻译
摘要:Linux内核SPI支持概述 02 - 2012 1.什么是SPI? "Serial Peripheral Interface" (SPI) 是同步四线串行接口,用于将微控制器连接到传感器,存储器和外围设备的链路。这是一个简单的“事实上的”标准,并不足以获得标准化机构。 SPI使用主/从配置。 三条 阅读全文

posted @ 2019-06-14 00:27 Hello-World3 阅读(477) 评论(0) 推荐(0) 编辑

Linux设备树(2)——设备树格式和使用
摘要:一、设备树dts文件的语法规范 1. DTS文件布局(layout) /dts-v1/; [memory reservations] // 格式为: /memreserve/ <address> <length>; / { [property definitions] [child nodes] } 阅读全文

posted @ 2019-06-09 11:19 Hello-World3 阅读(9526) 评论(1) 推荐(0) 编辑

complete完成量——实例分析
摘要:一、完成量的使用步骤 1. 完成量的基本使用流程 /* 1.定义一个completion结构并初始化 */ struct completion done; init_completion(&create.done); /* 2.一个进程进行等待 */ wait_for_completion(&kth 阅读全文

posted @ 2019-06-05 22:36 Hello-World3 阅读(1123) 评论(0) 推荐(0) 编辑

worker线程的创建与使用
摘要:一、worker线程的创建 1. 创建流程 __kthread_create_worker(): kthread_worker_fn 循环监听是否有工作需要处理: 二、worker的使用 未完待续。。。。。 阅读全文

posted @ 2019-06-05 22:03 Hello-World3 阅读(3286) 评论(0) 推荐(0) 编辑

Linux中V4L2分析
摘要:一、vivi.c分析 1、vivi.c是Linux中虚拟的v4l2驱动,使用它来学习v4l2驱动架构 1.vivi驱动涉及文件: vivi.c 驱动的具体实现 v4l2-common.c V4L2-dev.c video_register_device(struct video_device *vd 阅读全文

posted @ 2019-06-04 11:20 Hello-World3 阅读(1889) 评论(0) 推荐(0) 编辑

高通Sensor驱动学习笔记
摘要:高通ADSP Sensor框架: 高通sensor架构实例分析之一 linux驱动由浅入深系列:高通sensor架构实例分析之二(驱动代码结构) linux驱动由浅入深系列:高通sensor架构实例分析之三(adsp上报数据详解、校准流程详解) 高通SEE Sensor框架: 高通SDM845平台S 阅读全文

posted @ 2019-06-03 10:44 Hello-World3 阅读(14121) 评论(0) 推荐(1) 编辑

RTC测试程序
摘要:TODO: 翻译rtc.txt内核文档 来自内核: linux4.14.39/tools/testing/selftests/timers/rtctest.c 阅读全文

posted @ 2019-06-01 10:09 Hello-World3 阅读(1941) 评论(0) 推荐(0) 编辑

Android音频(2)——ALSA声卡驱动——ASoC
摘要:一、ASoC简介 ASoC(Alsa System on Chaip),也称为移动设备中的ALSA。是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。ASoC不能单独存在,他只是建立在标准ALSA驱动上的一个它必须和标准的ALSA驱动框架相结合才能工 阅读全文

posted @ 2019-05-24 16:15 Hello-World3 阅读(2170) 评论(0) 推荐(0) 编辑

Android音频(1)——ALSA声卡驱动
摘要:一、ALSA基础知识 1. ALSA(Advanced Linux Sound Architecture)目前已经成为了linux的主流音频体系结构,ALSA开源项目网址:http://www.alsa-project.org/。另一个音频驱动框架是OSS(open sound system),收费 阅读全文

posted @ 2019-05-24 13:03 Hello-World3 阅读(4663) 评论(0) 推荐(1) 编辑

switch_class
摘要:1. switch_class简介 实现:drivers/switch/switch_class.c 典型应用:drivers/switch/switch_gpio.c switch_class用于在/sys/class/switch提供name和state两个属性文件,在state改变时通过uev 阅读全文

posted @ 2019-05-21 12:02 Hello-World3 阅读(581) 评论(0) 推荐(0) 编辑

导航