- 博客(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
486
原创 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
1942
转载 ALSA声音编程介绍
这里了解一下各个参数的含义以及一些基本概念。样本长度(sample):样本是记录音频数据最基本的单位,常见的有8位和16位。通道数(channel):该参数为1表示单声道,2则是立体声。桢(frame):桢记录了一个声音单元,其长度为样本长度与通道数的乘积。采样率(rate):每秒钟采样次数,该次数是针对桢而言。周期(period):音频设备一次处理所需要的桢数,对于音频设备的
2014-10-24 11:00:15
695
转载 asla架构和alsa-lib音频库的移植
muqialsa 是在LINUX出现比较晚的音频处理库,主要是针对原有的OSS的库进行改进.性能更好,支持多个播放源等.但相应的,增加的编程的复杂性. 旧的oss是采用标准文件IO接口,设备打开采用open,声音播录是采用数据IO接口(read/write),设备的参数采用ioctl来控制.都是系统调用因此无需额外库和配置文件来操作设备.但alsa也是最终采用open/read/wr
2014-10-24 10:44:14
697
转载 ALSA音频驱动研究(二)
【转载】Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control接口的API来实现的。 ALSA已经为AC97定义了完整的控制接口模型,如果你的
2014-10-23 20:11:11
836
转载 ALSA音频驱动研究(三)
前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结
2014-10-23 20:08:29
929
转载 ALSA音频驱动研究(一)
ALSA中的链表结构 在ALSA中设计到很多的链表结构,理解这些链表能更好的理解ALSAa) card->devicescard->devices链表的建立方便了card相关设备的注册过程和设备的管理。通过这个链表,在注册设备的过程中,可以先将设备(包括设备编号,设备相应的操作指针等)添加进链表中,然后再遍历链表,各自的设备调用本身的注册函数将自身注
2014-10-23 20:08:03
856
原创 内核编译,驱动编译
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
703
转载 搭建起设备驱动的框架
理解了datasheet之后,先不要急着去编写代码,你首先应该做的就是给你将要写的驱动程序设计一个框架。那么这里的框架应该依据什么搭建呢?具体怎么搭建呢? 一般的,从USB驱动到I2C驱动,从SPI驱动到串口驱动,从PCI驱动到DMA驱动,等等,不管是什么类型的驱动,它总有一种或者几种基本固定的套路供你选择。如果你打算写一个touch驱动,而这个touch挂接在I2C上,那么
2014-09-25 18:51:00
669
转载 i2c设备驱动中要动手完成的内容
前面转载了很多关于i2c的文章,做完一个项目了,也该自己写点i2c心得了,我这个可是纯应用角度的,想看原理的,去看转载的文章,人家写的好多了! 对于一个i2c设备来说,其设备文件是最简单也是最复杂的,说它简单是因为很设备厂商会提供linux下的代码,这样就简单了;但是也有很多厂商它不提供或不完整提供linux下的代码,这样的话当然就复杂了。那么这个我现在这里就不说了,下面说说做了几个I2
2014-09-24 21:13:19
613
转载 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
1277
原创 指针数组 数组指针
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
452
原创 C中sizeof()
一般来说,sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的si
2014-08-15 17:47:23
607
原创 vs2005 C编译错误syntax error : missing ';' before 'type'
在软件vs2005中,代码如下:void function(int)
2014-08-07 10:26:12
1496
原创 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
663
转载 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
578
转载 信号量、互斥体和自旋锁(信号量/互斥体和自旋锁的区别)
信号量/互斥体允许进程睡眠属于睡眠锁,自旋锁则不允许调用者睡眠,而是让其循环等待,所以有以下区别应用 1)、信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因而自旋锁适合于保持时间非常短的情况 2)、自旋锁可以用于中断,不能用于进程上下文(会引起死锁)。而信号量不允许使用在中断中,而可以用于进程上下文 3)、自旋锁保持期间是抢占失效的,自旋锁被
2014-07-22 08:38:57
852
空空如也
mqtt open websockets port 9001
2021-03-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人