自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 8219 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 3343 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 2358

原创 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 3731

原创 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 2516

原创 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 5604 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编码格式的音频数据。&nbsp

2021-02-09 19:02:13 25925 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 2940 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 --&gt

2021-02-04 17:22:25 1612

原创 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 2868 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 785

原创 嵌入式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 2403

原创 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 3246

原创 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 452

转载 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 1493

转载 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 169

转载 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 213

转载 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 403

原创 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 358

原创 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 457

原创 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 691 1

转载 Linux的 inode 的理解

转载原文:https://blog.csdn.net/xuz0917/article/details/79473562 一、inode是什么?理解inode,要从文件储存说起。文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八.

2020-12-21 16:07:24 188

原创 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 2134

原创 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 738

原创 Linux设备模型(一) 概览

参考原文:https://www.kancloud.cn/yueqian_scut/emlinux/106829对原文笔误地方做了修改、重新排版目录字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联一. 驱动设备二. 字符设备驱动三. 设备驱动模型四. sysfs文件系统五. 平台设备驱动字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联学习Linux设备驱动开发的过程中自然会遇到字符设备驱动、平台设备驱动、设备驱动模型和sysfs等相关概念和技术,横向比较关联各个驱动相

2020-12-12 16:43:43 557

转载 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联

参考原文:https://www.kancloud.cn/yueqian_scut/emlinux/106829对原文笔误地方做了修改、重新排版目录字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联一. 驱动设备二. 字符设备驱动三. 设备驱动模型四. sysfs文件系统五. 平台设备驱动字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联学习Linux设备驱动开发的过程中自然会遇到字符设备驱动、平台设备驱动、设备驱动模型和sysfs等相关概念和技术,横向比较关联各个驱动相

2020-12-03 15:21:54 1191

dev_fifo_v3.zip

Linux 设备驱动之字符设备(三) 优化代码,新增 ioctl 功能 1. dev_fifo 驱动程序; 2. 测试程序 app。

2020-12-31

dev_fifo_v1.zip

Linux 设备驱动之字符设备(一) 实例 dev_fifo 驱动程序源码

2020-12-30

dev_fifo_v2.zip

Linux 设备驱动之字符设备(二) 优化代码 1. dev_fifo 驱动程序; 2. 测试程序 app。

2020-12-30

c + + 编程语言参考手册

本参考说明了在 Microsoft c + + 编译器中实现的 c + + 编程语言。 自创建以来,C++ 即已成为世界上最常用的编程语言之一。 正确编写的 C++ 程序快速、高效。 相对于其他语言,该语言更加灵活:它可以在最高的抽象级别上运行,还可以在硅级低级别上运行。 C++ 提供高度优化的标准库。 它支持访问低级别硬件功能,从而最大限度地提高速度并最大程度地降低内存需求。 可以使用 C++ 创建各种应用。 游戏、设备驱动程序和高性能科学软件。 嵌入式程序。 Windows 客户端应用。 甚至用于其他编程语言的库和编译器也使用 C++ 编写。

2020-11-30

Managing Projects with GNU Make 3rd Version pdf

Managing Projects with GNU Make 3rd Version. GNU Make 项目管理英文原版(第三版). 中文版看不太懂的地方,可以结合英文原版,能够加深理解。

2019-02-20

The GNU Linker V2.19.51

此版本修正了 《Using ld》(The GNU Linker (ld version 2) v2.14版本)里的错误,同时新增了一些内容,更易于理解. The GNU Linker (ld) 官方说明文档 (Sourcery G++ Lite 2010q1-188) Version 2.19.51.

2019-02-20

Nucleus_PLUS_Reference_Manual

Nucleus PLUS Reference Manual, by Accelerated Technology, describes the operationand usage of the Nucleus PLUS kernel.

2016-01-24

Nucleus Plus for PowerPC

Nucleus Plus底层source code和处理器架构相关,本source code可移植于PowerPC架构处理器上。 Nucleus Plus 是为实时要求较高的嵌入式应用设计的实时、任务抢先式、多任务内核。大约95%的Nucleus PLUS 代码用ANSI C 编写。正因为如此,Nucleus Plus 非常轻便并且可以很容易的应用到大多数的微处理器家族。

2016-01-24

Nucleus Plus for ARM

Nucleus Plus底层source code和处理器架构相关,本source code可移植于ARM架构处理器上。 Nucleus Plus 是为实时要求较高的嵌入式应用设计的实时、任务抢先式、多任务内核。大约95%的Nucleus PLUS 代码用ANSI C 编写。正因为如此,Nucleus Plus 非常轻便并且可以很容易的应用到大多数的微处理器家族。

2016-01-24

全面了解红外遥控(中文版)

这是一篇专业的介绍红外遥控编码的文章,原文是英文版的,原作者为San Bergmans,译者xuexi51,某网友整理。文章中先介绍了红外编码和解码方法,后详细介绍了几大主流红外协议,如ITT Protocol、NEC等。短小精炼!

2013-03-05

利用connectify把笔记本设置为无线路由器

只要有带无线的笔记本,就可以把你的笔记本设置为无线路由器!笔记本用网线接入网络,其他只要有WLAN功能的设备都可以通过这个笔记本上网了!相当于热点!

2012-09-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除