自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 问答 (2)
  • 收藏
  • 关注

转载 nodejs return

function (err, doc) { if (err) return console.log(err); workWith(doc);}比function (err, doc) { if (err) console.log(err); else workWith(doc);}看起来结构性好

2020-03-05 15:53:27 442

原创 Android中framework层的cpp文件中调用native层c函数的方法

1.在framework层中cpp文件所在的目录下的Android.mk中,加入:1)LOCAL_SHARED_LIBRARIES:=  XX.so(加入c所在文件编译生成动态链接库.so文件)2)LOCAL_C_INCLUDE  := $(TOP)/xx/xx2.在cpp文件中直接包含头文件。#include "xx.h"3.直接调用.h中的函数。

2016-04-21 22:51:01 1871 1

原创 Fedora下ALSA的编译与安装

如果运行aplay -

2014-10-26 15:19:55 1634

原创 Fedora下音乐播放器Songbird安装

今天想试试

2014-10-24 12:19:29 736

转载 ALSA声音编程介绍

这里了解一下各个参数的含义以及一些基本概念。样本长度(sample):样本是记录音频数据最基本的单位,常见的有8位和16位。通道数(channel):该参数为1表示单声道,2则是立体声。桢(frame):桢记录了一个声音单元,其长度为样本长度与通道数的乘积。采样率(rate):每秒钟采样次数,该次数是针对桢而言。周期(period):音频设备一次处理所需要的桢数,对于音频设备的

2014-10-24 11:00:15 646

转载 asla架构和alsa-lib音频库的移植

muqialsa 是在LINUX出现比较晚的音频处理库,主要是针对原有的OSS的库进行改进.性能更好,支持多个播放源等.但相应的,增加的编程的复杂性.  旧的oss是采用标准文件IO接口,设备打开采用open,声音播录是采用数据IO接口(read/write),设备的参数采用ioctl来控制.都是系统调用因此无需额外库和配置文件来操作设备.但alsa也是最终采用open/read/wr

2014-10-24 10:44:14 664

转载 ALSA音频驱动研究(二)

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

2014-10-23 20:11:11 734

转载 ALSA音频驱动研究(三)

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

2014-10-23 20:08:29 812

转载 ALSA音频驱动研究(一)

ALSA中的链表结构       在ALSA中设计到很多的链表结构,理解这些链表能更好的理解ALSAa)       card->devicescard->devices链表的建立方便了card相关设备的注册过程和设备的管理。通过这个链表,在注册设备的过程中,可以先将设备(包括设备编号,设备相应的操作指针等)添加进链表中,然后再遍历链表,各自的设备调用本身的注册函数将自身注

2014-10-23 20:08:03 752

原创 内核编译,驱动编译

version magic '2.6.38 mod_unload modversion armv5' should be '2.6.38-FriendlyARM mod_unload ARMv6 'insmod: cannot insert 'hello.ko': invalid module format'

2014-10-21 21:28:40 662

原创 ioctl与unlocked_ioctl的区别

我知道Linux2.6.38中驱动使用unlocked_ioctl,于是我就将file_op

2014-10-21 17:28:25 2184

原创 构建Linux内核源码树注意事项

注意事项:1、内核源代码

2014-10-21 16:26:28 769

原创 内核源码树构建成功,编译驱动出错

几经周折,把内核源码树

2014-10-21 16:14:28 822

原创 Fedora 14下构建Linux内核源码树

真的是一个非常

2014-10-21 11:43:52 1123

原创 get_user,put_user与copy_from_user,copy_to_user

首先,这四个函数都有相同的作用:

2014-10-14 21:00:53 2064

原创 Fedora 14下的arm-linux-gcc交叉编译器的安装

虽然以前安装过好几次,但现在又需要重新

2014-09-29 21:21:27 2183

原创 Fedora 14下的samba

Fedora 14缺省安装了samba相关的

2014-09-29 21:21:22 660

原创 虚拟机的eth1改为eth0

/etc/udev/rules.d/70-persistent-net.rules

2014-09-28 21:54:51 751

转载 搭建起设备驱动的框架

理解了datasheet之后,先不要急着去编写代码,你首先应该做的就是给你将要写的驱动程序设计一个框架。那么这里的框架应该依据什么搭建呢?具体怎么搭建呢?    一般的,从USB驱动到I2C驱动,从SPI驱动到串口驱动,从PCI驱动到DMA驱动,等等,不管是什么类型的驱动,它总有一种或者几种基本固定的套路供你选择。如果你打算写一个touch驱动,而这个touch挂接在I2C上,那么

2014-09-25 18:51:00 628

转载 i2c设备驱动中要动手完成的内容

前面转载了很多关于i2c的文章,做完一个项目了,也该自己写点i2c心得了,我这个可是纯应用角度的,想看原理的,去看转载的文章,人家写的好多了!    对于一个i2c设备来说,其设备文件是最简单也是最复杂的,说它简单是因为很设备厂商会提供linux下的代码,这样就简单了;但是也有很多厂商它不提供或不完整提供linux下的代码,这样的话当然就复杂了。那么这个我现在这里就不说了,下面说说做了几个I2

2014-09-24 21:13:19 575

转载 i2c 驱动编程接口 i2c_master_send 和 i2c_master_recv, i2c_transfer

1、通信接口i2c发送或者接收一次数据都以数据包 struct i2c_msg 封装[cpp] struct i2c_msg {     __u16 addr;     // 从机地址     __u16 flags;    // 标志 #define I2C_M_TEN   0x0010  // 十位地址标志 #define I2C_M_RD    0x0001  /

2014-09-24 19:49:14 1169

原创 2015校招 面试(软件研发)

2014年9月1日,离开

2014-09-22 11:54:49 656

原创 指针数组 数组指针

int arr1[3]; int arr2[3]; int arr3[3]; int * ptr; // ptr1是一个指向 int [3] 的指针,即ptr的类型和&arr1的类型是一样的,注意:arr1指向的内存区域定长 int ptr1[3][3]={{1,2,3},{1,2,3},{1,2,3}}; // ptr2是一个指向 in

2014-08-28 16:14:52 422

原创 C中strstr()

strstr函数include在

2014-08-20 17:22:13 671 1

原创 C中sizeof()

一般来说,sizeof()功能:计算数据空间的字节数1.与strlen()比较      strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。      而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作      指针均可看为变量类型的一种。所有指针变量的si

2014-08-15 17:47:23 565 1

原创 C中字节对齐问题

好多笔试中,会

2014-08-14 15:33:02 615

原创 函数指针数组

首先说指针数组,就是说数组的成员都是指针。那函数指针数组呢,就是数组的成员都是指向函数的指针。比如:有两个函数:

2014-08-08 09:55:24 435

原创 地址与常数的加减

地址与常数的加减不是简单的加减,

2014-08-08 09:36:07 1147

原创 vs2005 C编译错误syntax error : missing ';' before 'type'

在软件vs2005中,代码如下:void function(int)

2014-08-07 10:26:12 1443

原创 关于*((volatile int*)0x0000xxxx)

比如向地址0x56000000写入

2014-08-01 16:25:41 1490

原创 realloc的全面解析

realloc也是在堆中开辟空间,但与普通的开辟空间不同。它是

2014-07-29 17:48:35 1146

原创 C中实参与形参的“值传递”只能“单向传送”(透彻的理解)

今天又彻底地把

2014-07-25 17:54:25 16817 10

原创 sprintf比strcpy略胜一筹

今天看内核链表的代码,其中有句:for(i=0;i<5;i++){ sprintf(pstudent[i].name,"student%d",i+1) .........}刚开始没仔细看,以为就是普通的打印,但后面的代码发现,需要给pstudent[i].name赋值,才知这句的含义。sprintf与printf都是打印,的区别是:sprintf是打印到字符串中,pri

2014-07-24 17:43:51 606

原创 malloc、alloc与calloc

alloc是向栈申请内存,因此无需释放。

2014-07-22 09:59:32 1075 2

转载 malloc和new的区别

1.1 new 返回指定类型的指针,并且可以自动计算所需要大小。比如:   1) int *p;   p = new int; //返回类型为int* 类型(整数型指针),分配大小为 sizeof(int);   或:   int* parr;   parr = new int [100]; //返回类型为 int* 类型(整数型指针),分配大小为 sizeof(int

2014-07-22 09:12:07 546

转载 信号量、互斥体和自旋锁(信号量/互斥体和自旋锁的区别)

信号量/互斥体允许进程睡眠属于睡眠锁,自旋锁则不允许调用者睡眠,而是让其循环等待,所以有以下区别应用     1)、信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因而自旋锁适合于保持时间非常短的情况    2)、自旋锁可以用于中断,不能用于进程上下文(会引起死锁)。而信号量不允许使用在中断中,而可以用于进程上下文    3)、自旋锁保持期间是抢占失效的,自旋锁被

2014-07-22 08:38:57 806

原创 C语言中的#pragma pack()

这几天生病了,还没痊愈,估计要等到下周才能完全复工。

2014-07-17 11:54:07 1100

原创 Linux中的各种initcall总结

今天看Linux源码中的dma.c

2014-07-09 11:22:32 2828

原创 Linux IIC驱动框架理解

看了一周的Linux IIC驱动框架,

2014-07-09 09:51:23 902

原创 platform模型什么时候用

上周刚开始接触platform模型的时候,知道了platform是一种虚拟总线,platform_driver是

2014-07-08 20:13:28 601

空空如也

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

TA关注的人

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