自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

转载 IEC60958和IEC61937

BMC编码IEC 60958在传输数据时使用双相符号编码(Biphase Mark Code),简称BMC,属于一种相位调制(phase modulation)的编码方法,是将时钟讯号和数据讯号混合在一起传输的编码方法。下图是BMC的示意图:在BMC编码中,时钟信号的频率是数据传输bitrate的两倍。当数据信号是高电平1时,BMC跳变。当数据信号是低电平0时,BMC不跳变。然后两个数据信号间是会有一次跳变的。在音频信号在硬件间传递时,是传递的BMC信号,接收端对BMC解码,解析出时钟信号与数据信

2021-04-08 13:55:19 1449

转载 __VA_ARGS__ 與 ## 小檔案

转自:http://www.cash.idv.tw/wordpress/?p=1531我大致整理出要點, 供急功近利的新手參考.1. __VA_ARGS__ 顧名思義, 就是一個可變的參數.例如: #define ABC(format,…) printf(format, __VA_ARGS__);注意最後這個分號.2. 假如實際參數是 0 的話, 會發生下面的問題AB...

2019-05-21 16:51:29 160

转载 利用backtrace和backtrace_symbols打印函数的调用关系

转自:http://blog.csdn.net/wind19/article/details/6105617 源程序如下#include #include #include typedef uint32_t UINT32;void fun3(void){  void* array[10] = {0};  UINT32 size = 0;char

2016-02-23 15:03:37 545

转载 Asoc dapm(一) - kcontrol

转自:http://blog.csdn.net/luckywang1103/article/details/49095655 目录(?)[-]struct snd_kcontrol_new一些构造snd_kcontrol_new结构体的宏SOC_SINGLESOC_SINGLE_TLVSOC_ENUMSOC_ENUM_EXTSOC_VALUE_ENUMSOC_DOUBLES

2016-02-14 11:30:57 644

转载 ALSA声卡驱动中的DAPM详解之一:kcontrol

目录(?)[+]snd_kcontrol_new结构简单型的控件Mixer控件Mux控件其它控件DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc co

2016-02-14 10:53:03 440

转载 Linux ALSA声卡驱动之四:Control设备的创建

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control接口

2016-02-14 10:51:43 353

转载 How to use softvol to control the master volume

转自:http://alsa.opensrc.org/How_to_use_softvol_to_control_the_master_volumeFrom the ALSA wikiJump to: navigation, searchThis howto describes a workaround if your master volume doesn't work. T

2016-01-04 16:42:38 1090

转载 $()和${}和$(())和(())

转自:http://www.2cto.com/os/201308/239136.html $()和${}和$(())和(())$()和${}的用法:在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(command substitution)的。而 $( ) 并不见的每一种 shell 都能使用,若你用 bash2 的话,肯定没问题...

2015-11-17 14:56:50 330

转载 二维数组和指针(C语言)

转自:http://blog.sina.com.cn/s/blog_5fb4e7540100ctns.html 二维数组和指针二维数组和指针1、二维数组和数组元素的地址若有以下定义:int *p, a[3][4];1)二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。如以上定义的a数组,则可视a

2015-11-17 14:01:13 483

原创 C++ 创建、读写文件操作 fstream

#include #include #include #include // stringstreamusing namespace std; int main() { string filePath1 = "D:/Test/mm11111.mp3"; //string filePath1 = "filePath.mp3"; string filePath2 ;

2015-08-13 19:50:21 679

转载 Linux编程之ioremap函数的实例解析

转自:http://www.it165.net/os/html/201208/3124.html void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)入口: phys_addr:要映射的起始的IO地址;size:要映射的空间的大小;flags:要映射的IO空间的和权限

2015-06-30 10:04:57 2719

转载 Linux下逻辑地址-线性地址-物理地址图解

转自:http://blog.csdn.net/wxzking/article/details/5905214 一、逻辑地址转线性地址    机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。我们写个最简单的hello world程序,用gccs编译,再反编译后会看到以下指令:mov    0x8

2015-06-29 20:51:47 411

转载 tasklet

转自:http://blog.chinaunix.net/uid-25885064-id-3215391.html 中断服务程序一般都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化。但是,中断是一个随机事件,它随时会到来,如果关中断的时间太长,CPU就不能及时响应其他的中断请求,从而造成中断的丢失。因此,内核的目标就是尽可能快的处理完中断请求,尽其所能把更多的处理向后推迟。例

2015-06-19 17:59:29 339

转载 linux中断延迟之tasklet

转自:http://blog.csdn.net/bullbat/article/details/7101140 tasklet是I/O驱动程序中实现可延迟函数的首选方法。从下面的内核代码的分析中我们会看到,tasklet建立在两个叫做HI_SOFTIRQ和TASKLET_SOFTIRQ的软中断之上。几个tasklet可以与同一个软中断相关联,每个tasklet执行自己的函数。tasklet

2015-06-19 17:53:04 367

转载 关于tasklet的一点小小的解释

转自:http://blog.chinaunix.net/uid-23769728-id-3195496.html 大概有一些同学对tasklet的串行化还有点困惑,其实在单处理器上最好理解,所以本帖主要讨论多处理器上tasklet如何实现串行化:同一个tasklet对象同一时刻只能在一个处理器上运行。在驱动程序中,tasklet是作为一种softirq形式出现的,所以对taskl

2015-06-19 17:51:31 377

转载 中断下半部-tasklet

转自:http://edsionte.com/techblog/archives/1547本文包含那些内容?tasklet机制概述;tasklet机制的使用方法;一个阐述tasklet机制调用关系的举例。本文适合那些人阅读?想了解linuxer;学习驱动开发的beginner;学习内核模块编程beginner;其他super linux NBer;参考书籍:Linux内核设

2015-06-19 17:31:05 409

转载 虚拟内存管理

转自:http://www.cnblogs.com/felixfang/p/3420462.html 内存管理笔记(分页,分段,逻辑地址,物理地址与地址转换方式)本文内容参考自如下博客与书籍:http://blog.csdn.net/windowseight/article/details/8279863http://bbs.chinaunix.net/thread-2

2015-06-16 20:33:43 493

转载 虚拟内存管理 --嵌入式Linux系统工程师系列之ARM920T的MMU与Cache

转自:http://www.akaedu.org/pages/news_detail.php?id=374&page=2 虚拟内存管理     现代操作系统充分利用MMU提供的VA到PA的映射机制来做内存管理,以下称为虚拟内存管理(Virtual Memory Management)。首先看下面的例子:$ psPID TTY TIME CMD9612 pts/2 00:

2015-06-16 18:31:33 1106

转载 虚拟地址和物理地址的概念

转自:http://www.akaedu.org/pages/news_detail.php?id=374&page=1 虚拟地址和物理地址的概念    CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分,如果CPU没有MMU(Memory Management Unit,内存管理单元),或者有MMU但没有启用,CPU核在取指令或访问内存时发出的地址将直接传到CPU芯片

2015-06-16 18:25:32 713

转载 虚拟内存和物理内存

转自:http://blog.chinaunix.net/uid-26983585-id-3364091.html首先我从最基本的概念说起,什么是物理内存的概念,虚拟内存的概念?物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了。而在CPU中的概念,物理内存就是CPU的地址线可以直接进行寻址的内存空间大小。比如8086只有20根地址线,那么它的寻址空间就是1

2015-06-08 20:45:03 753

转载 linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间

转自:http://blog.csdn.net/bingqingsuimeng/article/details/7924756 linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们。  Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G.Linux内核将这

2015-05-26 19:57:50 478

转载 大端模式和小端模式

转自:http://blog.csdn.net/hackbuteer1/article/details/7722667 在 各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机 通信领 域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正 确的编/译码从而导致通信失败。目前在各种

2015-05-18 15:15:42 332

转载 轻松记住大端小端的含义(附对大端和小端的解释)

转自:http://www.cnblogs.com/wuyuegb2312/archive/2013/06/08/3126510.html 或许你曾经仔细了解过什么是大端小端,也动手编写了测试手头上的机器上是大端还是小端的程序,甚至还编写了大端小端转换程序;但过了一段时间之后,当你再看到大端和小端这两个字眼,你的脑中很快浮起了自己曾经做过的工作,却总是想不起究竟哪种是大端、哪种是小端,然后

2015-05-18 14:24:54 482

转载 使用ioctl和内核交换数据

1. 前言 使用ioctl系统调用是用户空间向内核交换数据的常用方法之一,从ioctl这个名称上看,本意是针对I/O设备进行的控制操作,但实际并不限制是真正的I/O设备,能是所有一个内核设备即可。2. 基本过程在内核空间中ioctl是非常多内核操作结构的一个成员函数,如文件操作结构struct file_operations(include/linux/fs.h)、协议操作结构stru

2015-04-08 15:22:46 754

转载 系统调用和驱动程序中相应函数的参数对应关系

转自:http://blog.sina.com.cn/s/blog_6405313801012p9r.html 应用程序执行open、ioctl等系统调用,它们的参数和驱动程序中相应函数的参数不是一一对应的,其中经过了内核文件系统层的转换。 系统调用函数原型如下:intopen(constchar*pathname,intflags)intioctl

2015-04-08 14:55:07 682 1

转载 在Linux系统如何让程序开机时自动启动

核心提示:系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统“开始”-->“所有程序”-->“启动”里面放个快捷方式就行,那Linux系统下呢?...系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统“开始”-->“所有程序”-->“启动”里面放个快捷

2015-04-08 14:10:21 459

转载 Linux如何实现开机启动程序详解

我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤。加载内核LILO启动之后,如果你选择了Linux作为准备引导的操作系统,第一个被加载的东西就是内核。请记住此时的计算机内存中还不存在任何操作系统,PC(因为它们天然的设计缺陷)也还没有办法存取机器上全部的内存。因此

2015-04-08 14:09:55 320

转载 Linux 的启动流程

半年前,我写了《计算机是如何启动的?》,探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程。这个部分比较有意思。因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分与程序员的关系更密切

2015-04-08 13:35:45 390

转载 信号量的操作——semop函数

转自:http://blog.sina.com.cn/s/blog_803527e70100vd4f.html 信号量的值与相应资源的使用情况有关,当它的值大于 0 时,表示当前可用的资源数的数量;当它的值小于 0 时,其绝对值表示等待使用该资源的进程个数。信号量的值仅能由 PV 操作来改变。  在 Linux 下,PV 操作通过调用semop函数来实现。该函数定义在头文件

2015-03-26 10:23:12 1258

转载 linux驱动的入口函数module_init的加载和释放

转自:http://blog.csdn.net/zhandoushi1982/article/details/4927579就像你写C程序需要包含C库的头文件那样,Linux内核编程也需要包含Kernel头文件,大多的Linux驱动程序需要包含下面三个头文件:#include #include #include 其中,init.h 定义了驱动的初始化和退出相关的函数,kerne

2015-03-20 17:57:58 531

转载 Linux驱动probe函数调用

转自:http://blog.csdn.net/wbcuc/article/details/8618363 参考:http://blog.chinaunix.net/space.php?uid=15887868&do=blog&id=2758294http://www.cnblogs.com/hoys/archive/2011/04/01/2002299.html1,dri

2015-03-20 17:56:16 781

转载 Linux设备驱动程序之读书笔记

转自:http://blog.csdn.net/itismine/article/details/5610938Linux设备驱动程序之读书笔记(一)                   ——第三章字符设备驱动程序○、说明笔记适用于Linux的2.6.10以后的内核。笔记以Linux Device Driver3提供的scull程序(scull目录中的main.c和scul

2015-03-17 18:49:28 591

转载 如何编写Linux设备驱动程序

转自:http://blog.csdn.net/myarrow/article/details/8183516一、Linux device driver 的概念          系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬

2015-03-17 17:08:34 370

转载 linux简单的字符设备驱动程序(写的很清晰)

转自:http://blog.csdn.net/CreazyApple/article/details/7290680要求:掌握添加设备驱动程序的方法内容:采用模块方法,添加一个新的设备驱动程序。要求添加字符设备的驱动。编写一个应用程序,测试添加的驱动程序。linxu系统中,在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操

2015-03-17 14:40:41 1537

转载 Linux设备驱动

Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别.在linux中,驱动程序都是模块化的。module 翻译成中文就是模块,它可以被动态载到 kernel 里成为 kernel的一部分。载到 kernel 里的 module 它具有跟 kernel 一样的权力。可以 access

2015-03-17 14:30:04 692

转载 Linux驱动程序框架

Linux将所有外部设备看成是一类特殊文件,称之为“设备文件”,如果说系统调用是Linux内核和应用程序之间的接口,那么设备驱动程序则可以看成是Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备。 1.字符设备和块设备Linux抽象了对硬件的处理,所有的硬件设备都可以像普通文件一样来看待:

2015-03-17 11:14:23 370

转载 数字音频概览

相信您一定拥有一大摞的音频格式,但是您有了解过它的存储原理吗?如果您是这方面的专家,那我只能用“班门弄斧”来形容我现在的所做所为了。我写这篇文章是为了对这方面不太了解的朋友,当然不是每一个好的程序员都是Mr. Know-all,因此在我和一些网友在音频这方面的交流时常会造成一些误会,这也是我写这篇文章的初衷。当然,我不敢妄称专家,错漏之处在所难免,如有发现,敬请指教,在下洗耳恭听!众所周知,声

2015-03-10 13:36:36 471

转载 数字音频基础

转自:http://blog.csdn.net/xl890727/article/details/7036188 1.     音频技术基础声音的产生是物理现象,人对声音的感觉是生理、心理活动。一般,人耳对声音的听觉特性的要素是:响度、音调、音色。响度是人耳对声音强弱的感觉,首先决定于声音的振幅、其次是频率。音调是人耳对声音高低的感觉,其变化主要取决于声音频率的对数值。音色

2015-03-10 11:12:15 763

转载 数字音频技术基础

一、声音的基本概念    声音是通过一定介质传播的连续的波。 图1 声波重要指标:振幅:音量的大小周期:重复出现的时间间隔频率:指信号每秒钟变化的次数声音按频率分类: 图2 声音的频率(语音信号频率范围:300Hz-3kHz)声音的传播携带了信息,它是人类传播信息的一种主要媒体。 声音的三种类型:波形声音:包含了所

2015-03-10 10:15:53 1397

转载 pthread_join函数、pthread_create函数及linux线程

转自http://blog.csdn.net/jxxfqyy/article/details/4084193pthread_join函数及linux线程pthread_join使一个线程等待另一个线程结束。代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等

2015-03-09 13:06:30 456

空空如也

空空如也

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

TA关注的人

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