- 博客(26)
- 资源 (11)
- 收藏
- 关注
原创 Linux 音频驱动(六) ALSA音频驱动之PCM Write数据传递过程
目录1. 前言2. PCM Data Flow3. 总结1. 前言本文,我们将以回放(Playback,播放音频)为例,讲解PCM Data是如何从用户空间到内核空间,最后传递到Codec。在Linux 音频驱动(一) ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图:对于Linux来说,由于分为 user space 和kernel space,而且两者之间不能随便互相访问。因此用户如果播放音频,则需要调用copy_from_user()将用户数据从user spa
2021-03-11 15:05:07
9586
4
原创 Linux 音频驱动(五) ALSA音频驱动之PCM逻辑设备
目录1. 前言2. PCM逻辑设备2.1. 创建 PCM逻辑设备:2.2. PCM逻辑设备文件操作函数集:snd_pcm_f_ops[]2.3. Open PCM逻辑设备2.4. Write/Read PCM逻辑设备2.5. Close PCM逻辑设备3. 结束语1. 前言前面几章分析了ASoC音频驱动中Codec、Platform、Machine驱动的组成部分及其注册过程,这三者都是物理设备相关的,大家应该对音频物理链路有了一定的认知。接着分析音频驱动的中间层,由于这些并不是真正的物理设备,故我们称之
2021-03-08 18:06:25
3850
2
原创 Linux 音频驱动(四) ASoC音频驱动之Machine驱动
目录1. 基本介绍2. 源码分析2.1. Machine数据结构 struct snd_soc_dai_link3. 声卡3.1. 数据结构struct snd_soc_card3.2. 注册声卡 snd_soc_register_card()3.3. soc_probe()函数1. 基本介绍Linux 音频驱动(二) ASoC音频驱动之Platform驱动和Linux 音频驱动(三) ASoC音频驱动之Codec驱动分别介绍了platform驱动、codec驱动,但仅有platform驱动、codec
2021-03-02 16:38:33
2704
原创 Linux 音频驱动(三) ASoC音频驱动之Codec驱动
目录1. 简介2. 源码分析2.1. Codec2.1.1. 数据结构struct snd_soc_codec_driver2.1.2. 注册Codec2.2. Codec DAI2.2.1. 数据结构struct snd_soc_dai_driver2.2.2. 注册Codec DAI:snd_soc_register_dais()3. 总结1. 简介在内核源码Documentation/sound/alsa/soc/overview.txt中,对Codec驱动有如下论述:Codec驱动程序独立于平
2021-03-01 17:30:30
4263
原创 Linux 音频驱动(二) ASoC音频驱动之Platform驱动
目录1. 简介2. 源码分析2.1. CPU DAI2.1.1. 数据结构struct snd_soc_dai_driver2.1.2. 注册CPU DAI:snd_soc_register_dai()2.2. PCM DMA2.2.1. 数据结构struct snd_soc_platform_driver2.2.2. 注册PCM DMA:snd_soc_register_platform()2.2.3. DMA Buffer Allocation1. 简介前面提到,ASoC音频驱动由三部分构成:pla
2021-02-26 17:08:58
2812
原创 Linux 音频驱动(一) ASoC音频框架简介
转载原文:https://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html 目录1. ALSA简介2. ASoC音频驱动构成3. PCM数据流4. 数据结构简介5. ASoC音频驱动注册流程1. ALSA简介Native ALSA Application:tinyplay/tinycap/tinymix,这些用户程序直接调用 alsa 用户库接口来实现放音、录音、控制。ALSA Library API:alsa 用户库接口,常见有
2021-02-25 11:38:38
6348
4
原创 数字音频接口 I2S、PCM、TDM 、PDM比较
目录1. 前言2. 数字音频接口2.1. I2S接口2.2. PCM/TDM接口2.2. PDM接口3. 附录3.1. PCM编码3.2. PDM编码1. 前言本文介绍的数字音频接口全部是硬件接口,是实实在在的物理连线方式,即同一个PCB板上IC芯片和IC芯片之间的通讯协议。本文内容不是音频数据的编码格式。编码格式是指模拟信号数字化的过程。常见的音频编码格式有PCM、PDM,和本文数字音频接口的名称相同,请注意区分。 I2S和PCM(TDM)接口传输的数据是PCM编码格式的音频数据。 
2021-02-09 19:02:13
28133
3
原创 makefile 中竖线 “|” 管道符的作用
目录1. makefile基本语法复习2. 命令前提目标 order-only prerequisites3. 例子在makefile中,有时会在依赖关系中看到竖线“|”管道符,它是作用是用来指示命令前提目标 order-only prerequisites。1. makefile基本语法复习这里,我们简单复习一下makefile基本语法。其中的[TAB]就是键盘上的Tab键,不可以用空格替代。target : prerequisites [TAB]command1 [TAB]command
2021-02-05 15:20:42
3276
3
原创 Android 系统 ramdisk.img 的生成和mkbootfs源码分析
目录1. ramdisk.img生成分析2. mkbootfs工具源码分析3. CPIO格式简介4. TARGET_ROOT_OUT目录由何而来?1. ramdisk.img生成分析ramdisk.img是组成boot.img的重要部分,ramdisk image是一个最基础的小型文件系统,它包括了初始化系统所需要的全部核心文件。将来Linux内核在启动时会调用init/initramfs.c中的函数unpack_to_rootfs对cpio格式进行解包[调用路径:start_kernel -->
2021-02-04 17:22:25
2117
原创 Android 系统 boot.img 的生成和结构
目录1. 生成 boot.img2. boot.img 结构2.1. boot.img 结构2.2. 文件头信息 boot_img_hdr2.3. mkbootimg 工具源码简介1. 生成 boot.img首先,在Android源码包里,./build/core/Makefile 中,可以找到如下语句。通过注释我们看出,简单来说boot image是其他image的集合体。# the boot image, which is a collection of other images.INTE
2021-02-02 16:55:11
3189
1
转载 Makefile中 = := ?= += 赋值运算符
转载原文:https://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html 目录1. 基本介绍2. "=" 和 ":=" 的区别2.1. “=”2.2. “:=”1. 基本介绍在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验。新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendi
2021-02-01 14:54:27
1041
原创 嵌入式Linux平台查询CPU温度
嵌入式Linux平台查询CPU温度一般查询CPU温度的方式如下:查找温度域;下图示例中,该设备有4个温度域:thermal_zone0,thermal_zone1, thermal_zone2, thermal_zone3。确定CPU温度域;一般可以通过type文件节点查看该温度域的类型。cat /sys/class/thermal/thermal_zone*/type下图示例中,该设备CPU温度域在 thermal_zone0。查询CPU当前温度;一般可以通过temp文件节点查
2021-01-11 16:59:26
2910
原创 Linux 如何占满CPU使用率
目录1. Ubuntu平台:cpuburn2. Linux嵌入式平台:一条指令3. 嵌入式Linux平台查询CPU温度1. Ubuntu平台:cpuburnCPU burn 官网 在介绍cpuburn时,提到cpuburn只能运行在x86结构CPU上。PS:因为我的设备是Android设备,没有去尝试cpuburn。有兴趣的同学可以自己尝试一下cpuburn是否可以运行在Android设备上。关于cpuburn的使用,可以参考:https://www.cnblogs.com/qa-freeroa
2021-01-11 16:58:37
3530
原创 Linux设备模型(七) uevent
转载原文:http://www.wowotech.net/linux_kenrel/uevent.html 目录1. Uevent基本功能2. Uevent在kernel中的位置3. Uevent的内部逻辑解析3.1. Source Code位置3.2. 数据结构描述3.3. 内部动作4. mdev/udev简介1. Uevent基本功能Uevent是Kobject的一部分,用于在Kobject状态发生改变时,例如增加、移除等,通知用户空间程序。用户空间程序收到这样的事件后,会做相应的处理。该机制
2021-01-07 21:12:16
504
转载 Linux内核模块管理:lsmod、insmod、rmmod、modinfo、modprobe、depmod命令详解
转载原文:https://www.cnblogs.com/hanxiaomeng/p/12728104.html 目录一、基本介绍二、命令介绍一、基本介绍1、这些命令安装在“kmod”包中,系统通常已经安装了,如果没有安装请安装:[root@localhost ]# rpm -ql kmod|grep sbin/usr/sbin/depmod/usr/sbin/insmod/usr/sbin/lsmod/usr/sbin/modinfo/usr/sbin/modprobe/usr/sb
2021-01-05 15:49:43
2089
转载 Linux 设备驱动之字符设备(三)
转载原文:http://blog.chinaunix.net/uid-26833883-id-4371047.html 目录1. 前言2. 实现xxx_ioctl接口2.1. 为什么要实现xxx_ioctl ?2.2. 如何实现xxx_ioctl函数接口?3. 驱动多个dev_fifo 设备4. 实例4.1. 实例源码5.3. 测试1. 前言通过Linux 设备驱动之字符设备(二)我们对字符驱动的完善,已经可以完成基本的功能了,但是仍然有以下不足,这一节我们继续完善它。没有实现xxx_ioctl
2020-12-31 19:17:34
201
转载 Linux 设备驱动之字符设备(二)
转载原文:http://blog.chinaunix.net/uid-26833883-id-4369117.html 目录1. 前言2. 动态注册设备号3. 自动创建设备节点4. 用户空间和内核空间数据相互拷贝5. 实例5.1. 实例源码5.2. 测试结果1. 前言通过上一篇文章,我们已经了解了应用程序是如何和驱动程序关联的,以及如何去写一个字符设备驱动。我们虽然实现了一个简单的字符设备驱动程序框架,但其并没有实际的功能。本文我们将继续完善我们的dev_fifo字符驱动。前面字符驱动不足:在注
2020-12-30 16:06:40
246
转载 Linux 设备驱动之字符设备(一)
转载原文:http://blog.chinaunix.net/uid-26833883-id-4369060.html 目录一. Linux设备分类二. 上层应用程序是如何访问到底层的驱动程序 ?三. 如何编写字符设备驱动四. 字符驱动相关函数分析五. 开始写字符设备驱动5.1. 实例源码5.2. makefile5.3. 测试一. Linux设备分类Linux系统将设备分成三种基本类型:字符设备:以字节为单位读写的设备。块设备:以块为单位(效率最高)读写的设备。网络设备:用于网络通讯的设备。
2020-12-29 11:41:39
457
原创 Linux设备模型(六) Class
参考文章:http://www.wowotech.net/linux_kenrel/class.html 目录1. 前言2. Class 数据结构2.1. struct class2.2. struct class_interface3. Class 内部执行逻辑分析3.1. Class的注册3.2. device注册时和class有关的动作4.Class 功能介绍5. 设备模型小结5.1. Linux设备模型示意图5.2. Linux设备模型的核心思想1. 前言在设备模型中,Bus、Device、D
2020-12-29 09:24:15
408
原创 Linux设备模型(五) Bus
参考文章:http://www.wowotech.net/linux_kenrel/bus.html 目录1. 前言2. Bus 基础知识2.1. struct bus_type 介绍2.2. struct subsys_private 介绍2.3. Bus 功能总结2.4. struct bus_type 和 Kobject 的关系3. 内部执行逻辑分析3.1. bus的注册3.2. device和device_driver的添加4. 设备驱动 probe 的时机4.1. 先 match 后 probe
2020-12-26 14:58:41
555
原创 Linux设备模型(四) device和device driver
参考文章:http://www.wowotech.net/linux_kenrel/device_and_driver.html 目录1. 前言2. struct device和struct device_driver2.1. struct device 介绍2.2. struct device_driver 介绍2.3. struct device和struct device_driver 与 Kobject 的关系3. 设备模型框架下驱动开发的基本步骤4. 设备驱动probe的时机5. 说明5.1.
2020-12-22 21:17:46
850
1
转载 Linux的 inode 的理解
转载原文:https://blog.youkuaiyun.com/xuz0917/article/details/79473562 一、inode是什么?理解inode,要从文件储存说起。文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八.
2020-12-21 16:07:24
249
原创 Linux设备模型(三) sysfs 与 attribute
参考文章:http://www.wowotech.net/linux_kenrel/dm_sysfs.html目录1. 前言2. attribute2.1. attribute基础知识2.2. attibute文件的创建2.3. attibute文件的read和write3. Kobject 相关数据结构源码分析3.1. Kobject 结构体4. Kobject 和 sysfs 的关系(Linux设备模型视图实例)6. 总结1. 前言sysfs是一个基于RAM的文件系统,它和kobject一起,可以
2020-12-19 11:15:04
2650
原创 Linux设备模型(二) 基本数据结构 Kobject
参考文章:http://www.wowotech.net/linux_kenrel/13.html目录1. 前言2. Kobject 相关基础知识3. Kobject 和 sysfs 的关系(Linux设备模型视图)3.1 Linux设备文件关系3.2. Kobject相关数据结构在sysfs中的作用4. Kobject 相关数据结构源码分析5. 小结6. 说明1. 前言为了降低设备多样性带来的Linux驱动开发的复杂度,以及设备热拔插处理、电源管理等,Linux内核提出了设备模型的概念。设备模型将硬
2020-12-16 11:15:24
838
原创 Linux设备模型(一) 概览
参考原文:https://www.kancloud.cn/yueqian_scut/emlinux/106829对原文笔误地方做了修改、重新排版目录字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联一. 驱动设备二. 字符设备驱动三. 设备驱动模型四. sysfs文件系统五. 平台设备驱动字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联学习Linux设备驱动开发的过程中自然会遇到字符设备驱动、平台设备驱动、设备驱动模型和sysfs等相关概念和技术,横向比较关联各个驱动相
2020-12-12 16:43:43
608
转载 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
参考原文:https://www.kancloud.cn/yueqian_scut/emlinux/106829对原文笔误地方做了修改、重新排版目录字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联一. 驱动设备二. 字符设备驱动三. 设备驱动模型四. sysfs文件系统五. 平台设备驱动字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联学习Linux设备驱动开发的过程中自然会遇到字符设备驱动、平台设备驱动、设备驱动模型和sysfs等相关概念和技术,横向比较关联各个驱动相
2020-12-03 15:21:54
1771
c + + 编程语言参考手册
2020-11-30
Managing Projects with GNU Make 3rd Version pdf
2019-02-20
The GNU Linker V2.19.51
2019-02-20
Nucleus Plus for PowerPC
2016-01-24
Nucleus Plus for ARM
2016-01-24
全面了解红外遥控(中文版)
2013-03-05
利用connectify把笔记本设置为无线路由器
2012-09-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人