自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wangpengqi的专栏

希望我的博客可以给你带来财富

  • 博客(42)
  • 资源 (3)
  • 收藏
  • 关注

转载 Linux ALSA声卡驱动之八:ASoC架构中的Platform

1.  Platform驱动在ASoC中的作用前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_pl

2013-02-28 15:21:41 601

转载 Linux ALSA声卡驱动之七:ASoC架构中的Codec

1.  Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理

2013-02-28 15:06:04 564

转载 Linux ALSA声卡驱动之六:ASoC架构中的Machine

前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结

2013-02-28 11:26:45 515

转载 Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)

1.  ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性:   Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Lin

2013-02-28 08:34:45 492

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

Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control接口的API来实现的。 ALSA已经为AC97定义了完整的控制接口模型,如果你的Codec芯片只

2013-02-27 15:36:26 508

转载 Linux ALSA声卡驱动之三:PCM设备的创建

1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲,把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续地输出、传输、处

2013-02-27 14:53:15 570

转载 Device Drivers, Part 5: Character Device Files — Creation & Operations

Device Drivers, Part 5: Character Device Files — Creation & OperationsBy Anil Kumar Pugalia on April 1, 2011 in Coding, Developers · 25 Comments and 0 ReactionsThis article is

2013-02-27 14:19:02 1141

转载 Class create, device create, device create file

Class create, device create, device create file开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点。内核中定义了struct class结

2013-02-27 14:12:11 1178

转载 sysfs操作

一:前言在设备模型中,sysfs文件系统用来表示设备的结构.将设备的层次结构形象的反应到用户空间中.用户空间可以修改sysfs中的文件属性来修改设备的属性值,今天我们就来详细分析一下,sysfs的实现.二:sysfs的初始化和挂载Sysfs文件系统的初始化是在sysfs_init()中完成的,代码如下:int __init sysfs_init(void)

2013-02-27 14:07:55 1343

转载 Linux ALSA声卡驱动之二:声卡的创建

1. struct snd_card 1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_card结构体。正因为如此,本节中,我们也从 struct cnd_card开始吧。

2013-02-27 11:27:32 513

转载 Linux ALSA声卡驱动之一:ALSA架构简介

一.  概述    ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。    在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-

2013-02-27 10:26:14 627

转载 一个使用 seq_file 接口的 proc_fs 例子

#include #include #include #include static struct proc_dir_entry *pfile;static char *myfruits[5] = {"apple", "orange", "banana", "watermelon", "pear"};static void *my_seq_start(struc

2013-02-26 10:44:40 581

转载 proc_fs文件的操作

创建一个 proc 文件根据对 proc 文件的不同使用,内核提供了多种包装函数来创建一个 proc 文件。方法一:struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent)这是最直接,包装最少的创建方法。参数 name 是要创建

2013-02-26 08:37:12 988

转载 proc数据结构

上节主要说明了proc下的内容,从本节开始解析proc的实现。与普通文件系统一样,proc当然需要虚拟文件系统的支持,所以它必须具备文件系统的几个主要的数据结构。1.proc_dir_entry 在proc文件系统中,每个entry的实例是由proc_dir_entry来描述的,其结构如下:struct proc_dir_entry { unsigned int

2013-02-25 16:36:34 867

转载 Linux内核的Nand驱动流程分析

最近在做Linux内核移植,总体的感觉是这样的,想要彻底的阅读Linux内核代码几乎是不可能的,至少这还不是嵌入式学期初期的重要任务。内核代码解压后有250M左右,据统计,有400多万行,而且涉及到了软件和硬件两方面的诸多知识,凭一人之力在短时间内阅读Linux内核代码是根本不可能的,强行阅读可能会打消我们嵌入式学习的积极性,最后甚至可能放弃嵌入式学习,如果真的想阅读内核代码来提高自己水平的话可以

2013-02-24 22:15:43 521

转载 编写内核模块遍历进程的PID

#include #include #include #include #include static __init int print_pid(void){ struct task_struct *task,*p; struct list_head *pos; int count=0; printk("Hello,let begin\n");

2013-02-24 21:36:10 3275

转载 Cortex-M3学习笔记(一)

Cortex-M3学习笔记(一)首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。整理如下:AMBA:先进单片机总线架构   ADK:AMBA设计套件AHB:先进高性能总线    AHB-AP:AHB访问端口APB:先进外设总线    ARM ARM:ARM架构参考手册ASIC:行业领域专用集成电路    ATB :先进跟踪总线BE8:字节不

2013-02-20 15:45:38 1095

转载 TVP5158的多路复用技术

TVP5158的多路复用技术

2013-02-20 14:09:09 1157

转载 从程序员到项目经理(12):如何管理自己的时间(上)

对很多项目经理而言,是没有什么所谓的“我的时间”的,因为他们不是在管项目,而是被工作的潮水带着跑而已,他们的时间被工作主宰了。项目经理必须要主动的管理自己的时间,合理安排自己的工作,才能真正“翻身”做自己时间主人。1.谁动了我的时间时间对于每个人而言,都是最稀缺的资源,对于一个管理者更是如此,时间不够用成为几乎所有管理者共同的问题。如果要对项目经理常说的话做一个调查的话,想信“我很

2013-02-20 11:17:32 535

转载 Ubuntu下构建gstreamer开发环境

1,Ubuntu已经安装了gstreamer库,因此只需要再安装几个开发库即可,是libstreamer0.10-0libstreamer0.10-devlibstreamer0.10-0-dbg在新立得里选中应用即可2,测试gstreamer开发库#include gst/gst.h>int main (int   argc,char *arg

2013-02-20 11:10:40 520

转载 从程序员到项目经理(11):每个人都是管理者

从程序员转为项目经理,这是一个巨大的跨越。一个新任的项目经理,对项目管理找不到感觉,一般也被认为是一件正常的事情。这是否意味着,一定要等到当上了项目经理才能学习项目管理吗?一定要做砸一个项目才能成长为合格的项目经理吗?其实未必,项目管理所需要素质和技能并不是什么独门秘籍,而是在生活中时时用到、处处可以锻炼的。只要有心,程序员一样可以学习和实践项目管理知识。从某种程度来说,我们每个人都是管理者。

2013-02-19 18:55:55 443

转载 从程序员到项目经理(十):程序员加油站 --要执着但不要固执

程序员的成长之路,没有捷径可走,只有坚持不懈的执着追求,才能成为一名优秀的程序员。执着诚然可贵,但如果不能经常自省,则有可能会陷入固执的境地。1.程序员需要一点执着精神  《士兵突击》中许三多有一句名言:“不抛弃、不放弃”,这是一种可贵的执着精神。正是靠着这种不抛弃、不放弃的执着追求,许三多从一个普通的小兵,成长为团部的精英。在现实生活中也是这样,可以说大凡取得一定成就的人,在工作

2013-02-19 18:55:26 575

转载 从程序员到项目经理(九):程序员加油站 -- 再牛也要合群

“丛林法则”从未离我们远去,“适者生存”仍然是支配社会运行的一般法则。对于一群社会性动物而言,所谓“适者”,不只是体格的强壮,更重要的是能参与群体的公共生活。即使是最强大的狮子,只要离群,也只有死路一条!1.好汉也要三个帮  我喜欢看动物世界,感受那些发生在非洲大草原上的那些美丽或者哀伤的故事。那里生活着成群的狮子和鬣狗、还有数以百万计的野牛和角马。无论是凶猛的狮子,还是温驯的角马

2013-02-19 18:54:53 502

转载 从程序员到项目经理(七):程序员加油站 -- 完美主义也是一种错

追求完美是一种可贵的精神,完美主义也历来被认为是一种优秀的品格。可是在项目中,完美主义也是一种错,虽然是一种“美丽的错误”。项目讲求平衡,要的是合格,而不是优秀;要的是70分,而不是100分!1.两极分化的程序员相信在很多人眼里,程序员都是工作一丝不苟、对代码精雕细琢、精益求精的人。瞧,他们在电脑前面一坐就是大半天,如果不是追求完美之人,谁能这样坐得住板凳?可是依我所见,在

2013-02-19 18:53:48 446

转载 从程序员到项目经理(六):程序员加油站 -- 懂电脑更要懂人脑

说起程序员三个字,我觉得既骄傲又可悲。骄傲的是,我们曾经是时代骄子,是一群真正改变世界的人;可悲的是,我们很多致力于改变世界的程序员,却生活在自己的世界里,无法自拔,成为了继“书呆子”之后的“电脑呆子”。电脑本来只是一个工具,我们竟然被其所限制、甚至同化,悲夫!一、警惕成为“电脑呆子”(1)程序员眼中的自己程序员是怎样看待自己的呢?看看园子里的发言,码农、码畜、IT民工、苦逼、程序猿…

2013-02-19 18:53:16 402

转载 从程序员到项目经理(五):程序员加油站 -- 不是人人都懂的学习要点

学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 一.学习也是一种能力看到这个标题,有人会说:“学习,谁不会?”的确,学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生的时候,什么也不知道,是一张真正的白纸,我们靠学习的本能,学会了走路、说话、穿衣服…后来,我们上学了,老师把书本上的知识一点一点

2013-02-19 18:52:39 437

转载 从程序员到项目经理(四):外行可以领导内行吗

一.从几个招聘要求说起在上一篇中,我举出了一个招聘需求,引起一些朋友的争论。既然招聘的是项目经理,为什么需要那么多专业技能呢?在百度上招聘频道搜索“软件项目经理招聘”,可以查到8500多条类似的招聘信息。我们看看国内软件行业老大东软集团的招聘条件:工作职责:带领团队完成需求分析,开发计划制定与跟踪,项目组关键技术问题解决,负责项目QCD。岗位要求:1、3

2013-02-19 18:51:48 649

转载 程序员:伤不起的三十岁

程序员干到30岁,好不容易从码奴混到了白领,却再也干不动了,还时时面临失业的危险。30岁,是一个程序员伤不起的年龄。明天,何去何从?一.30岁现象在官场上,曾经有一个59岁现象,就是官员们会在59岁时,会使劲捞上一把。很明显嘛,权力过期作废,再不捞就要退休了,没有机会了。在程序员的圈子里,也有一个30岁现象。当然,如果你有铁饭碗,比如在国企或政府机关,那你是无法理解底层劳动

2013-02-19 18:50:12 478

转载 从程序员到项目经理(一)

“从程序员到项目经理”,这个标题让我想起了很久以前一本书的名字《从Javascript到Java》。然而,从Javascript到Java充其量只是工具的更新,而从程序员到项目经理,却是一个脱胎换骨的过程。从Javascript到Java,是一个取巧的方法;而从程序员到项目经理,却并无捷径可走,必须从内而外的改变和提升。一.为什么要当项目经理1. 问题本质如果我对一个老程序

2013-02-19 18:47:25 454

转载 从程序员到项目经理(二)

一.升职之辨1. 为什么是我不是每个人都能当项目经理,程序员中只有一小部分能成为项目经理,大部分人会随着岁月的流逝,成为了“资深程序员”。那为什么领导要选择我呢?一般人对自己所拥有的东西都会很快习以为常,认为这是自己应得的。一点也没错,这就是你应得的,原因也很简单,那是因为你比别人优秀一点。其实领导挑选人才的标准很简单,那就是你比别人优秀,而且只需一点点。你不需要“

2013-02-19 18:46:26 363

转载 从程序员到项目经理(三)

在希腊德尔斐的阿波罗神庙上,刻得着一句神秘的箴言:“认识你自己”。从某种程度上来说,我们都是自己的“最熟悉的陌生人”。认识自己的位置,是每个人获得成长的第一堂课。一个人的位置,对其言行的影响是至关重要的,俗话说:“屁股决定脑袋”,虽然听着粗俗,却饱含人生哲理。既然我们屁股在项目经理的位置上,就应该像项目经理一样去思考问题,做事情。一.项目经理的处境经过数年的打拼,怀着美好的向往,我

2013-02-19 18:45:48 481

转载 Px_ipc_name()函数

/* include px_ipc_name */#include "unpipc.h"char *px_ipc_name(const char *name){ char *dir, *dst, *slash; //分配的空间在哪里释放的哦!@deprecated if ( (dst = malloc(PATH_MAX

2013-02-19 15:57:49 2083

转载 《UNIX网络编程 卷2》读书笔记(一)

1,获取Posix IPC的名字#include "unpipc.h"char* px_ipc_name(const char* name){ char* dir,*dst,*slash; if((dst = malloc(PATH_MAX))==NULL) return NULL;//分配失败 if((dir=getenv("PX_IPC_NAME

2013-02-19 15:54:33 834

转载 进程控制块(PCB)的结构

进程控制块(PCB)的结构进程控制块 PCB (Process Control Block):       存放进程的管理和控制信息的数据结构称为进程控制块。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。在不同的操作系统中对进程的控制和管理机制不同,PCB中的信息多少也不一样,通常PC

2013-02-19 10:32:52 7598

转载 模拟进程调度

#include #include #include #include /*进程控制块数据结构*/typedef struct node { char name[10];/*进程名*/ int prio; /*进程优先级*/ int round; /*进程分配的时间片*/ int cputime; /*进程消耗的CUP时间*/ int needtime;

2013-02-19 10:06:26 970

转载 模拟进程调度

#include#include#include /* 所用头文件 */#define PACE 5 /* 每次时间片长度 */ typedef struct running{ int num; int priority; int time;}Run; /* 处于运行状态的进程 */ typed

2013-02-19 09:52:55 1179

转载 GStreamer 编写一个简单的MP3播放器

本文介绍如何使用GStreamer 编写一个简单的MP3播放器。1,需要使用mad解码插件,因此需要先安装gstreamer0.10-plugins-ugly2,编写mp3播放器下面来看看如何利用GStreamer框架提供的组件,来实现一个简单的MP3播放器。数据源元件负责从磁盘上读取数据,过滤器元件负责对数据进行解码,而接受器元件则负责将解码后的数据写入声卡。如果想要在程序中应用

2013-02-19 09:05:34 844

转载 八皇后问题的非递归解法

用C++实现了八皇后问题的非递归算法。原理很简单,看代码就是了,无须多说#include #include #include #include using namespace std;const int MAX = 8;vector board(MAX);void show_result(){ for(size_t i = 0; i < b

2013-02-19 09:04:06 1563 1

转载 #if defined(__cplusplus)

由于C++编译器需要支持函数的重载,会改变函数的名称,因此dll的导出函数通常是标准C定义的。这就使得C和C++的互相调用变得很常见。但是有时可能又会直接用C来调用,不想重新写代码,让标准C编写的dll函数定义在C和C++编译器下都能编译通过,通常会使用以下的格式:(这个格式在很多成熟的代码中很常见)#if defined(__cplusplus)extern "C" {#endif

2013-02-18 15:21:24 1289

转载 C++中extern “C”含义深层探索

C++中extern “C”含义深层探索1.引言  C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设

2013-02-18 15:16:54 377

ICMP ping 实现

ping 实现 ICMP

2015-06-01

candence16.6安装破解文件

自己安装candence16.6过程中使用的破解文件,希望可以给大家有帮助。哈哈

2013-04-06

candence16.6安装破解记录

个人安装candence16.6记录,已经破解成功,希望给大家做参考

2013-04-06

空空如也

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

TA关注的人

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