- 博客(146)
- 资源 (4)
- 收藏
- 关注
转载 Opensource License
开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别以下是上述协议的简单介绍:BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,
2016-08-01 17:03:27
1135
转载 alsa调用
ALSA打开数据流程 soc_pcm_open => cpu_dai->driver->ops->startup => platform->driver->ops->open => codec_dai->driver->ops->startup \ => rtd->dai_link->ops->startup ALSA的HW_param流程 s
2016-05-02 13:58:25
2058
转载 堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节
2016-04-11 16:08:50
429
转载 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)
ST树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: BST树的搜索,从根结点开始,如果查询的关键字
2016-04-11 11:13:56
498
转载 linux awk命令详解
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfred Aho
2016-04-06 15:43:38
485
转载 Linux ALSA框架之八:ASoC架构中的Platform
1. Platform驱动在ASoC中的作用前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号.在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_platf
2016-04-05 12:02:38
832
转载 Linux ALSA框架之七:ASoC架构中的Codec
1. Codec简介在移动设备中,Codec的作用可以归结为4种,分别是: 对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理,例如音量控
2016-04-05 12:02:10
1142
转载 Linux ALSA框架之六:ASoC架构中的Machine
前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结
2016-04-05 12:01:47
478
转载 Linux ALSA框架之五:移动设备中的ALSA(ASoC)
1. ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系.在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性:Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Linux中有分别针对
2016-04-05 12:01:22
727
转载 Linux ALSA框架之四:Control设备的创建
Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等.对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control接口的API来实现的.ALSA已经为AC97定义了完整的控制接口模型,如果你的Codec芯片只支持AC97接口,你可
2016-04-05 12:01:01
540
转载 Linux ALSA框架之三:PCM设备的创建
1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制.我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲,把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续地输出、传输、处理或
2016-04-05 12:00:32
628
转载 Linux ALSA框架之二:声卡的创建
1. struct snd_card1.1 snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_card结构体.正因为如此,本节中,我们也从 struct cnd_card开始吧.1.2 snd_card的定义
2016-04-05 11:59:55
621
转载 Linux ALSA框架之一:ALSA架构简介
. 概述ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/.在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-lib,应用程序只要调用a
2016-04-05 11:58:38
1739
转载 LOG_NDEBUG作用
log.h文件:/* * Normally we strip ALOGV (VERBOSE messages) from release builds. * You can modify this (for example with "#define LOG_NDEBUG 0" * at the top of your source file) to change that beh
2016-02-02 12:06:48
10785
转载 Linux IDR机制
IDR机制在Linux内核中指的是整数ID管理机制。实质上来讲,这就是一种将一个整数ID号和一个指针关联在一起的机制。这个机制最早在03年2月加入内核,当时作为POSIX定时器的一个补丁。现在,内核中很多地方都可以找到它的身影。 IDR机制原理:IDR机制适用在那些需要把某个整数和特定指针关联在一起的地方。例如,在IIC总线中,每个设备都有自己的地址,要想在总线上找到特定的设备
2015-11-04 17:05:45
800
转载 linux内核部件分析(三)——记录生命周期的kref
kref是一个引用计数器,它被嵌套进其它的结构中,记录所嵌套结构的引用计数,并在计数清零时调用相应的清理函数。kref的原理和实现都非常简单,但要想用好却不容易,或者说kref被创建就是为了跟踪复杂情况下地结构引用销毁情况。所以这里先介绍kref的实现,再介绍其使用规则。 kref的头文件在include/linux/kref.h,实现在lib/kref.c。闲话少说,上代码。
2015-11-04 15:28:05
452
原创 Printk打印优先级设定
# cat /proc/sys/kernel/printk7 4 1 7上面显示的4个数据分别对应:控制台日志级别:优先级高于该值的消息将被打印至控制台,数值越小,优先级越高。优先级定义见后。默认的消息日志级别:将用该优先级来打印没有优先级的消息,直接调用printk,未显示标注优先级的打印,如printk("xxxxxxxx");最低的控制台
2015-09-27 10:16:51
1497
转载 Android.mk基础知识
一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。每个模块属下列类型之一: 1)APK程序,一般的Android程序,编译打包生成apk文件 2)JAVA库,java类库,编译打包生成
2015-09-27 09:32:16
428
转载 JTAG调试原理
JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access P
2015-09-17 20:00:22
2955
转载 cscope使用
Source Insight是Windows下最方便浏览代码的工具。但是Source Insight是没有Linux版本的。为了方便在Linux下浏览代码并进行学习,可以利用Vim配合Cscope来打造Linux下的Source Insight。 Cscope是Vim适用的工具和插件,通过Cscope可以方便地获知某个函数的定义以及被哪些函数调用。 Cscope安装 可以在ht
2015-08-25 14:48:46
1809
转载 如何制作LINUX的patch文件及如何打patch
对某个版本的Linux内核做了修改以后,如果希望发布出去给别人用,那么就需要制作针对此版本的patch文件。patch文件也叫补丁,就是一个文本文档,这个文档包含了在两个不同版本的源代码树之间的变化。补丁是通过diff应用程序来创建的。为了正确地打上一个补丁,你需要知道这个补丁是从哪个基础版本产生出来的以及这个补丁将要把目前的源代码树变化到什么新的版本。这些信息或者会出现在补丁文件
2015-08-24 15:12:32
539
转载 Vim Nerdtree快捷键
目录[-]下载和配置快捷方式下载和配置NERDTree插件的官方地址如下,可以从这里获取最新的版本 https://github.com/scrooloose/nerdtree 下载zip安装包 或者使用下面官网源文件安装方法我的实验环境是centos6.6,其他版本可能有些不同。 安装方法很简单,先把压缩文件下载下来,解压后将plugin目录下的N
2015-08-20 18:04:08
1543
转载 获取hw_device_t
1 什么是HALHAL的全称是Hardware Abstraction Layer,即硬件抽象层.其架构图如下:Android的HAL是为了保护一些硬件提供商的知识产权而提出的,是为了避开linux的GPL束缚。思路是把控制硬件的动作都放到了Android HAL中,而linux driver仅仅完成一些简单的数据交互作用,甚至把硬件寄存器空间直接映射到user space。而Andr
2015-08-20 16:43:15
1713
原创 Solarized配色方案
大家都在推荐Solarized配色方案,将步骤整理了一下:在ubuntu vim使用配色需要注意,vim下编辑打开文件的颜色实际上是由terminal + vim本身的配色叠加而成. 所有有时vim下的配色与别人推荐的不一样,那是由于terminal配色不正确导致.所以这里谈Solazied, 要将terminal 和 vim 的配色都调整为Solorized配色方案.1 先配
2015-08-16 11:39:52
12196
原创 github ssh连接
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置。github的SSH配置如下:1 、设置Git的user name和email:$ git config --global user.name "xxxxx"$ git config --global user.email "xxxxxx@gmail.com"2、生成SSH
2015-08-16 09:57:06
676
转载 Android Ion用户空间和内核空间
目录[-]ION filesION architectureION APIsUserland APIKernel APIHeap APIION debugION is the memory manager of Android, it could be used by graphic and multimedia stacks to allocate buffers.I
2015-08-14 16:58:49
1935
转载 ION基本概念介绍和原理分析
ION将内核态形形色色的内存分配纳入统一的管理接口之中,更重要的设计意图是为内存在不同用户态进程之间传递和访问提供了支持。每个ion_buffer与一个struct file关联,其handle纳入进程file desc空间而不是/dev/ion设备内单独的handle空间,方便之处如下:每个buffer一个handle,便于更灵活地细粒度地控制每个buffer的使用周期;向用户进程输
2015-08-12 20:35:09
808
转载 Linux之debugfs介绍
Linux之debugfs介绍Debugfs是一种用于内核调试的虚拟文件系统,在内核源码中经常可以看到它的使用,今天我来大概介绍一下它的使用。如果你对debugfs不熟悉,那么也许你会对sysfs比较熟悉,对于调试方面,其实两个文件系统还是挺类似的,但是sysfs的引入内核主要是用于驱动模型的。所以我们在平时调试的时候应该尽量避免使用sysfs,而使用debugfs。好了,下面我们来介
2015-08-12 15:44:05
2316
转载 vim——打开多个文件、同时显示多个文件、在文件之间切换,位置切换
打开多个文件: 1.vim还没有启动的时候: 在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件 2.vim已经启动 输入 :open file 可以再打开一个文件,并且此时vim里会显示出file文件的内容。:e ../myFile.pl 1. vim 文档名 普通方式打开文档 2. vim +n
2015-08-12 15:21:05
6004
1
转载 vim 替换字符串
vi/vim 中可以使用 :s 命令来替换字符串。该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询。 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行
2015-08-11 15:51:54
651
转载 类模板
类模板与函数模板的定义和使用类似,我们已经进行了介绍,如果您对函数模板也感兴趣,请查看:C++函数模板。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int{public : Compare(int a,int b) { x=a; y=b; } int max( ) {
2015-08-11 10:39:51
495
转载 Java的package和import机制
一些人用了一阵子的Java,可是对于 Java 的 package 跟 import 还是不太了解。很多人以为原始码 .java 文件中的 import 会让编译器把所 import 的程序通通写到编译好的 .class 档案中,或是认为 import 跟 C/C++ 的 #include 相似,实际上,这是错误的观念。 让我们先了解一下,Java 的 package 到底有何用处。
2015-08-10 20:07:10
276
转载 GOF设计模式趣解(23种设计模式)
创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消
2015-08-10 19:50:13
518
转载 Android的MediaPlayer架构介绍
第一部分 MediaPlayer概述 Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。 MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进
2015-08-10 19:40:30
443
转载 C++的namespace
namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都可能使用相同的名字来实现不同的库,于是程序员在合并程序的时候就会可能出现名字的冲突。namespace引入了复杂性,解决了这个问题。namespace允许像类,对象,函数聚集在一个名字下。本质上讲namespace
2015-08-10 18:46:59
392
转载 UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
继承、实现、依赖、关联、聚合、组合的联系与区别分别介绍这几种关系:继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;实现指的是一个class类实现interface接口(可以是多个)的功能
2015-08-10 18:17:58
564
转载 adb logcat 查看日志
使用logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是:[adb] logcat [option>] ... [filter-spec>] ... 下文介绍过滤器和命令选项,详细内容可参见Listing of logcat Command Options。 可以在开发机中通过远程shell的方式使用logcat命令查
2015-08-10 18:10:45
774
原创 MiniBufExplore快捷键
下载地址 [http://www.vim.org/scripts/script.php?script_id=159]版本 6.3.2安装 将下载的 minibufexpl.vim文件丢到 \~/.vim/plugin 文件夹中即可用途 MiniBufExplore可以将打开过的文件都记录,这样通过快速的打开一些历史文件。使用方法:重新启动vim, 当你只
2015-07-27 10:12:55
1432
原创 Android Ion
Back in December 2011, LWN reviewed the list of Android kernel patches in the linux-next staging directory. The merging of these drivers, one of which is a memory allocator called PMEM, holds the pr
2015-07-24 18:45:24
2333
s3c2410的cs8900网卡驱动 基于linux 2.6.18
2009-05-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人