Linux驱动开发
文章平均质量分 54
Linux驱动开发中的点点滴滴
Sunnie_ge
目前从事Android驱动开发和android framework层部分.
汽车智能驾舱audio开发
展开
-
platform_device_register 分析
https://www.cnblogs.com/IrisZhou/archive/2013/05/24/3096795.html原创 2021-07-12 23:07:54 · 424 阅读 · 0 评论 -
linux中以devm开头的一些函数(设备资源管理)
linux4.6.3devm简介在驱动代码中我们经常会见到一些以devm开头的函数,这一类的函数都是和设备资源管理(Managed Device Resource)相关的,驱动中提供这些函数主要是为了方便对于申请的资源进行释放,比如:irq、regulator、gpio等等。在驱动进行初始化的时候如果失败,那么通常会goto到某个地方释放资源,这样的标签多了之后会让代码看起来不简洁,devm就是为来处理这种情况。devm相关的代码一般在各个目录的一个叫devres.c的文件中,devm核心的代码.转载 2021-07-11 20:17:01 · 996 阅读 · 0 评论 -
设备树 --驱动和设备树交互过程
设备树实例分析1原创 2016-10-29 19:51:11 · 11789 阅读 · 0 评论 -
字符设备 --- file_operations 、class、device
主要介绍字符设备设备号申请的方法。class 和device的创建。并给出一个实例原创 2016-07-29 15:37:55 · 532 阅读 · 0 评论 -
tiny4412 I2S
本章讨论一下 smdk4412的 I2S 接口1. I2S的硬件连接 在tiny4412 上搭载的codec 是wm8960 ,如下图在上图中,可以清楚的知道 I2S的 Xi2CDCLKO 、Xi2aSCLK0、Xi2sLRCLK0、Xi2sSDO0_0、Xi2sSDI0 连接到了codec 对应的引脚上。 这些label 对应的pin 脚是那些呢? 如下图所示,分别连接到...原创 2018-07-22 17:19:07 · 630 阅读 · 0 评论 -
dev_name
一份驱动代码,可以注册多个设备。 比如一个I2S的代码,可以注册2S0 、I2S1 、I2S2 几个设备。 那么在代码中,是如何做区分的呢? 这里使用id 来做区分。 这里暂时讨论使用在mach-xxx 中进行区分的情况 比如arch/arm/mach-smdk4x12.c struct platform_device exynos_device_i2s0 = { .name ...原创 2018-07-22 14:02:08 · 3288 阅读 · 0 评论 -
audio_route 分析
audio_route.c 是 android 提供的一个 audio route的so 库, 其位于 /system/media/audio_route 目录下。libaudioroute.so 这个动态库的主要功能有一下几点: 1.解析 /system/etc/mixer_paths.xml 配置文件2. 对audio 的ctl 访问方式进行封装,方便提供给hardware层的au...原创 2018-07-28 00:46:48 · 6274 阅读 · 0 评论 -
linux驱动开发 --miscdevice
前言在linux驱动中,需要提供主设备号和次设备号号,通常使用的主设备号是从 0到 255之间的数,仅仅使用主设备号,还是不叫紧张的,因此需要利用次设备号。linux中,提供了miscdevice这种杂项设备,指定主设备号为10,次设备号可以设置为 系统动态分配。在具体分析miscdevice之前,先给出miscdevice的核心设计思想。应用层,打开/dev/xxx 节点,会得到 文件描述符原创 2017-06-02 19:37:44 · 6640 阅读 · 0 评论 -
linux驱动开发之开篇
本文将会记录自己在学习linux驱动开发中的相关内容。没有沉淀就没有积累,厚积薄发。原创 2017-03-16 20:52:08 · 754 阅读 · 0 评论 -
linux驱动开发之字符设备--私有数据和container_of
前言驱动开发中通常为设备定义一个设备相关的设备结构体,其包含该设备的cdev 、私有数据、信号量、irq等这些信息。 驱动开发中通常将文件的私有数据private_data指向设备结构体,在read()、write()、ioctl()等函数通过 private_data 访问数据 设备结构体。container_of() 是一个比较常用的宏,其作用为通过结构体成员的指针找到对应结构体原创 2017-05-31 21:13:27 · 2766 阅读 · 1 评论 -
linux驱动开发之字符设备--自动创建设备节点
mdev在/dev下创建设备的方法有两种,一种是手动的使用 mknod 进行创建。另外一种是使用 mdev 进行自动的创建设备。 mdev集成在busybox中,mdev 会自动检测 /sys/class 和 /sys/block 的所有类设备目录;如果在目录中含有名为“dev”的文件,同时如果内容是设备号的话,mdev 就会利用这些信息,在/dev下创建这个设备节点。原创 2017-05-26 21:40:34 · 1430 阅读 · 0 评论 -
linux驱动开发之字符设备--内核和用户空间数据的交换(sysfs)
设备驱动程序中与用户层的接口,除了 read/write/ioctl 方式外,还有sysfs属性。 对于sysfs属性提供的接口,在应用层,可以直接使用 shell 进行交互,而不必进行 编写 C 代码的方式进行对底层的读写。原创 2017-05-25 20:38:52 · 1387 阅读 · 0 评论 -
linux驱动开发之字符设备--内核和用户空间数据的交换(ioctl)
在驱动中,除了需要具备读写能力外,还需要对硬件设备进行控制。ioctl就常用户底层的一些操作。原创 2017-05-23 20:00:51 · 1121 阅读 · 0 评论 -
linux驱动开发之字符设备--内核和用户空间数据的交换(read write)
前边给出了字符设备的框架,内核和用户空间进行交流的时候,离不来数据的交换;内核实现read、wriet 、ioctl是常用的交互手段。原创 2017-05-20 13:56:47 · 1592 阅读 · 0 评论 -
linux驱动开发之字符设备框架 -调用过程分析
前言在前边三节的基础上,粗略的分析一下,上层应用调用到驱动程序的过程,分为下面几个方面: 1.字符设备驱动本身 2.mknod的作用 3.open的调用过程原创 2017-05-18 20:02:52 · 1160 阅读 · 0 评论 -
linux驱动开发之字符设备框架 - 实例
前言前两小节中介绍了字符设备的cdev和函数操作集 file_operations。理论还需要和实践结合起来,这节主要是给出一个示例代码和测试代码。正文#include原创 2017-05-17 21:24:19 · 884 阅读 · 0 评论 -
linux驱动开发之字符设备框架 - file_operations
在上一节中介绍了字符设备的重要结构体 cdev,以及和 cdev 相关的一些操作函数,比如cdev_alloc()、 cdev_init() 等,但是和 cdev_init() 密切相关的一个参数 fops,并没有介绍。这节重点分析 file_operations 结构体。原创 2017-05-14 13:38:33 · 576 阅读 · 0 评论 -
linux驱动开发之设备驱动基础概念
前言上一节介绍了 linux 驱动开发中 module 的导出模块,在这一节中首先 linux 设备驱动开发中相关的概念,设备驱动的分类和学习过程中的重点和难点。正文计算机系统的硬件主要由 CPU 、存储器和外设组成,目前 CPU 内部往往集成了存储器和外设适配器,比如 ARM 芯片中继承的 UART 、I2C控制器、USB控制器、SDRAM 控制器以及片内的 RAM 和Flash。驱动针对的对象是原创 2017-03-25 21:54:37 · 965 阅读 · 0 评论 -
linux驱动开发之module导出符号
驱动开发中,module 是基本的组成,在一个模块中定义的函数,如果想在另一个模块中进行调用,这个时候,就需要进行导出,称为导出符号。原创 2017-03-23 19:39:52 · 797 阅读 · 0 评论 -
linux驱动开发module(2) 原理
前文中介绍了 module 的基本组成部分,现在在上一节的基础上,对 module 做一点点深入的理解。原创 2017-03-21 20:32:36 · 611 阅读 · 0 评论 -
linux驱动开发之module(1)
前言linux驱动开发的基础是开发一个module。module可以编译到内核中,也可以动态的使用insmod进行加载。将会使用动态加载的方式进行驱动开发。正文以一个简单的module最为开始,进行驱动的开发。#include原创 2017-03-16 20:54:23 · 1025 阅读 · 0 评论