自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(49)
  • 收藏
  • 关注

原创 关于pulseaudio的一些总结

    今年上半年一直在开发一个Limo的sound server,在ALP中是叫做AUDIO MANAGER的,所以在Limo项目里面开发的这个sound server我们也叫做Audio Manager(AM)。在开发这个新的AM之前,我们所有的人对pulseaudio是陌生的。所以这半年的时间是开发也是学习。在当时的开发过程和学习过程中遇到了不少的问题,便随手记录到了公司的confluence(和blog类似,公司内部共享)上面。    当时就想把这部分学习pulseaudio的经历记录在自己的blo

2010-12-21 14:34:00 2798 2

原创 SDRAM的驱动和Mode配置

主要有2点:EMC的配置SDRAM芯片本身的配置 SDRAM芯片主要是MODE寄存器的配置,实际就是将模式字通过地址线传到芯片。但是得注意移位。如果用16bit单片子,bus32=0,否则是1. 列地址具体看片子,bank数决定bank bits,例如4bank,bits为2.

2011-07-15 10:11:19 1278 1

原创 调试SD卡的问题

用LPC3250片子,优龙的开发板,调试SD卡,发现在sram调试,可以通过。但是在sdram调试就是失败。 后来发现降低频率就可以。手册说明在 identification mode 最大频率400k,代码设置的是390k。没有找到在norm模式下 SD的工作频率,代码设置是5M。  降频到300k 和 3M,在SDRAM可以运行了,但是烧到nor flash又不行了 于

2011-06-09 14:22:00 370

原创 LPC3250的nor flash地址线接法

<br />以前接触过2410的片子,这个片子接SST39VF1601片子时候,A0是不用的,很容易理解,因为SST这个片子是16bit的,无需字节寻址,所以A0不用。<br />最近看到YL-LPC3250的板子在nor flash的接法上面有所不同,他们使用了同样型号的nor flash片子。但是他们却使用了A0地址,觉得很奇怪。查了手册,发现3250这个片子的EMC和三星2410的区别很大。<br /> <br />三星要求8bit,16bit,32bit存储器错位接线:<br /> <br /> <

2011-03-29 16:20:00 1038 2

原创 关于android模拟器运行FTK的问题

http://blog.csdn.net/absurd/archive/2010/07/09/5722778.aspx这里是李先静博客关于使用android emulator运行ftk的文章,试了一下,没有跑起来,问题的log如下:No filesystem could mount root, tried: vfat msdos yaffs yaffs2Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block

2011-01-13 19:33:00 743

原创 gst-launch播放视频文件

文件是quick time文件格式,视频h.264压缩的,音频是aac格式gst-launch-0.10 -v filesrc location=./girl.mp4 ! qtdemux name=demux demux.audio_00 ! queue ! decodebin ! pulsesink demux.video_00 ! queue ! decodebin ! xvimagesinkffmpeg有个超级解码器,名字特别长的那个,ffdemux_mov_mp4_m4a_3gp_3g2_mj2,也

2010-12-21 16:30:00 2654 1

原创 基于mainloop io_event 的signal机制

<br />在看paplay.c代码的时候,发现其处理信号的方式比较特殊<br />过年之前这个是写好的,但不知道怎么回事,按了个空格键,1个多小时的记录全部丢失了。。。。注意保存<br />paplay.c中385行<br />    mainloop_api = pa_mainloop_get_api(m);<br />    r = pa_signal_init(mainloop_api);<br />    assert(r == 0);<br />    pa_signal_new(SIG

2010-12-21 14:12:00 905

原创 关于memblock

<br />memblock使用了共享内存技术,pulseaudio使用memblock来传递大块数据,这种用在进程间数据传递的时候是非常高效率的。内存分配与使用<br />PA启动后先分一大块共享内存(mempool),如果没有启动参数指定的话, 这个mempool的总大小为64KB * 1024,因为采用共享内存技术,所以实际在运行的时候用多少内存就实际分配这么多,不会一下子需要64MB。对于mempool,系统调用下面的API分配释放。<br />pool = pa_mempool_new

2010-12-21 14:11:00 1705

原创 pulseaudio退出时的Aborting错误

<br />E: core.c: Assertion 'pa_hashmap_isempty(c->shared)' failed at pulsecore/core.c:199, function core_free(). Aborting.<br />最近编写audiomanager这个模块,发现一旦pulseaudio退出,系统就会出现上面的错误。<br />通过排除法发现问题出在 protocol extension 方面。由于protocol扩展这段代码的写法完全参照moblin的,所以没有太在意

2010-12-21 14:10:00 693

原创 pulseaudio调试信息输出控制机制

<br />pulseaudio的调试信息可以通过系统变量来控制。<br />PA中 trace信息分为:<br /> typedef enum pa_log_level {<br />    PA_LOG_ERROR  = 0,    /* Error messages */<br />    PA_LOG_WARN   = 1,    /* Warning messages */<br />    PA_LOG_NOTICE = 2,    /* Notice messages */<br

2010-12-21 14:08:00 1074

原创 client程序的编译问题

<br />一, 关于map_file<br />pulse/context.c  中的一个函数<br />pa_tagstruct *pa_tagstruct_command(pa_context *c, uint32_t command, uint32_t *tag) <br />在编译连接后,无法使用,readelf 查看,属性为local,所以修改上述文件,增加该函数的定义,然后 make install<br /><br /><br />二,关于结构体的定义和别名<br />以pa_simpl

2010-12-21 14:07:00 312

原创 pulseaudio编译 -- ALP X86模拟器环境

<br /> <br />环境:<br />alp-sim 1.1.0<br />rootstrap: Main_Monolith_x86_rel_prod_gcc423_Validation_Roms<br />pulseaudio 0.9.15<br /> <br />依赖关系<br />1. > Libtool 2.0.   From 0.9.15 onwards, libtool 2.x will be required. 我使用的2.2.6b<br />./configure --

2010-12-21 14:05:00 1109

原创 pulseaudio编译 -- ALP Monolith Device环境

<br /> 1. 代码的修改<br />除了之前模拟器环境编译的问题,还有个针对arm的<br /> src/pulsecore/svolume_arm.c<br />把这个文件的193行注释掉,不要优化soft volume 算法。因为优化所使用的arm 汇编在编译时有些问题。<br />补充:如果编译的时候有这样的错误<br /> modules/module-cli.c:108: error: 'O_CLOEXEC' undeclared (first use in this functio

2010-12-21 14:04:00 2548

原创 pulseaudio的 mainloop

<br />mainloop应该说是pulseaudio的控制核心,pulseaudio的任何工作是离不开mainloop的,看过wiki上的文档,知道pulseaudio提供给client使用的api分为简单方式和异步方式(相对的也叫复杂方式吧)。<br />但是,无论什么方式,都少不了mainloop,对于简单方式,或许从api上,无需关心mainloop, 但是,这些简单的api同样使用了mainloop, 可以参考simple.c, 可以发现在pa_simple_new的实现中,使用了pa_

2010-12-21 14:01:00 1429

原创 pacmd命令行和pulseaudio -nC命令行方式的区别

<br />pacmd是通过socket方式连接,需要加载一个模块:module-cli-protocol-unix<br /> module-cli-protocol-unix这个模块接收socket发送的数据,然后将一行字符串交给CLI处理,即交给cli.c的line_callback函数来处理。<br />而pulseaudio -nC方式的命令行,属于pulseaudio进程本身。少了socket过程,后面还是用CLI处理用户输入的行。注意在处理行(字符串)数据的callback是iol

2010-12-21 13:59:00 1497

原创 Native Protocol 命令扩展

<br />任何stream试图连接到PA的时候,socket的callback会调用这个函数<br />pa_native_protocol_connect (pa_native_protocol *p, pa_iochannel *io, pa_native_options *o)<br />改函数,将建立一个S端stream对应这个io,同时注册这个stream的callback,在命令扩展中,关注的是如下这个cb<br />static void pstream_packet_callback(pa

2010-12-21 13:58:00 777

原创 client和sink之间的数据传递与同步

<br />之前分析过代码,也能基本确定大概的数据传输与数据同步的过程。但是没有实践总是感觉虚的很,所以通过GDB验证了自己前段时间的分析。<br /> 通过在命令行模式下执行<br /> >>> play-file /alpcode/s11.wav 0<br />将数据播放到sink 0,就是alsa-sink。<br />以下是代码在唤醒rtpoll之前的一个backtrace。下面简单分析一下这个过程。<br />#5  0xb7ef39f1 in sink_input_pop_cb (i=0x852

2010-12-21 13:56:00 1587 1

原创 GStreamer应用开发文档的ogg播放器

以下代码来自应用开发文档。编译下gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) helloworld.c找不到ogg音乐文件唉,这样子用gst-launch转换一下。gst-launch-0.10 filesrc location=./qhc.mp3 ! mad ! audioconvert ! vorbisenc ! oggmux ! filesink location=./qhc.ogg./a.out ~/qhc.

2010-12-17 19:33:00 1218

原创 测试GStreamer应用开发环境

<br />下面是GStreamer Application Development Manual的一段代码<br /> <br />#include <stdio.h><br />#include <gst/gst.h><br />int<br />main (int   argc,<br />      char *argv[])<br />{<br />  const gchar *nano_str;<br />  guint major, minor, micro, na

2010-12-16 16:04:00 726

转载 unix环境高级编程编译方法 -apue最简单编译方法(第二版)

<br /> <br />unix环境高级编程编译方法 -apue最简单编译方法(第二版) 转载<br /><br />/*******************************************************************************<br />*第0种-最简单实用<br />*<br />***************************************************************************

2010-12-08 11:11:00 288

转载 gdb查看内存区命令

<br />转自<br />http://hi.baidu.com/myspace_mine/blog/item/b36fe623cae44347ad34de92.html/cmtid/56e8422ae91c15355243c162<br /> <br />用gdb查看内存<br />格式: x /nfu <addr><br />说明<br />x 是 examine 的缩写<br />n表示要显示的内存单元的个数<br />f表示显示方式, 可取如下值<br />x 按十六进制格式显示变量。

2010-12-01 13:07:00 1453

原创 core dump

<br />ulimit -a<br /> <br />ucuigang@cui:~/study$ ulimit -a<br />core file size          (blocks, -c) 0<br />......<br />查看有没有打开core dump<br />发现没有打开,用<br />ulimit -c unlimited打开,也可以指定core文件的大小为多少个blocks,一般一个block 512Bytes,这个可以用fdisk -l看看<br /> <br />g

2010-12-01 13:01:00 306

原创 建立设备文件

<br />sudo mknod -m 666 /dev/globalmem c 244 0

2010-11-15 14:32:00 142

转载 gedit中文乱码问题

Gedit中文乱码出自Ubuntu中文http://wiki.ubuntu.org.cn/Gedit%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81<br /> <br />缺省配置下,用 Ubuntu 的文本编辑器(gedit)打开 GB18030/GBK/GB2312 等类型的中文编码文本文件时,将会出现乱码。<br />出现这种情况的原因是,gedit 使用一个编码匹配列表,只有在这个列表中的编码才会进行匹配,不在这个列表中的编码将显示为乱码。您要做的就是将 GB18030

2010-11-08 14:52:00 220

原创 解决vim中文乱码

<br />let &termencoding=&encoding<br />set fileencodings=utf-8,gbk,ucs-bom,cp936

2010-11-08 14:47:00 119

原创 一个继承GridView的子类无法显示数据的问题

<br /> <br />定义了一个类<br /> <br />public class AppsDragDemo extends GridView<br /> <br />然后在一个layout xml使用这个类<br /> <br /><?xml version="1.0" encoding="utf-8"?><br /><br /><com.access.thumbhome.DragLayer<br />    xmlns:android="http://schemas.android.c

2010-11-04 17:48:00 872

原创 Android findViewById/findViewWithTag 返回null的问题

<br />要把 findView*** 的调用放到setContentView后面

2010-11-04 15:35:00 3076

原创 Linux模块编译的头文件

<br />编译模块时候使用某个版本的头文件,那么这个模块一般就只能加载到运行该版本内核的系统中,如果版本不匹配,会发生错误<br />cuigang@cui:~/study/driver$ sudo insmod ./hello.ko <br />[sudo] password for cuigang: <br />insmod: error inserting './hello.ko': -1 Invalid module format<br /> <br />在嵌入式系统中,一般自己编译的内核

2010-11-03 14:24:00 653

原创 vim + ctags

<br /> <br />:tag xxxxx #可能会找到多个目标<br /> <br />:tselect  #选择<br />或者用<br />:tn<br />:tp

2010-10-21 14:30:00 124

转载 Android线程和事件消息的使用

<br /> <br />下面的代码来自:<br />http://www.cnblogs.com/allin/archive/2010/05/19/1738800.html<br />因为缺少<br />super.onDestroy();<br />会导致程序退出时候的异常。<br />Activity重载的函数是要调用父类方法的。<br /> <br /> <br />package org.allin.android;<br /><br />import android.app.Activity

2010-10-14 19:54:00 585

原创 Bash 和 Dash

安装交叉编译器出问题了,./arm-2010q1-202-arm-none-linux-gnueabi.bin错误信息如下;Checking for required programs: awk grep sed bzip2 gunzip===============================================================Error: DASH shell not supported as system shell=====================

2010-10-12 17:14:00 702

原创 sed 学习

http://bbs.chinaunix.net/viewthread.php?tid=336126#删除空行,然后每行后面加一个空行cat test.txt | sed '/^$/d;G'#每革一行删除一行#sed 中命令n的解释为Read the next line of input into the pattern spacesed 'n;d' 例如:cat test.txt | sed '/^$/d;G' | sed 'n;d'又把增加的空行过滤了#在每个含有字符串regex的行下插入一行空白行

2010-10-09 10:31:00 266

原创 android的C库

<br /> <br />不同于 GUN LIBC, android的c库,是google基于BSD C 库移植过来的,支持Linux 内核的重要实现,包括 系统调用, 动态链接,线程等等。<br /> <br />这些代码位于:<br />./bionic<br /> <br />目录结构如下:<br />cuigang@cui:~/android/androidsrc/bionic$ tree -L 2<br />.<br />|-- Android.mk<br />|-- CleanSpe

2010-09-14 17:23:00 774

转载 framebuffer

来自:http://www.linuxgraphics.cn/graphics/fb_readscreeninfo.htmlgcc framebuffer.c -o framebuffer在ubuntu下面执行是要sudo的,否则打不开设备。#include #include #include #include #include int main () { int fbfd = 0; struct fb_var_screeninfo vinfo; struc

2010-09-13 18:28:00 276

原创 禁止自动横屏

<br /> <br />在AndroidManifest.xml里面配置一下就可以了。<br />加入这一行<br />android:screenOrientation="landscape"<br /><br />landscape是横向<br />portrait是纵向<br /> <br />上面的配置加到要控制的activity

2010-09-02 17:38:00 354

转载 解决 Failure [INSTALL_FAILED_OLDER_SDK]

<br />转自:<br />http://www.eoeandroid.com/thread-13527-1-1.html<br /> <br />/build/core/version_defaults.mk文件中这一段<br /><br />ifeq "" "$(DEFAULT_APP_TARGET_SDK)"<br />  # This is the default minSdkVersion and targetSdkVersion to use for<br />  # all .a

2010-09-02 14:01:00 6164

原创 批量修改文件名称

ls *.txtNOTICE.txt  src_com_android_ll.txt  src_com_android_l.txt想把文件名的前缀 src_com_android_ 去掉使用命令rename s/src_com_android_//g *ls *.txtll.txt  l.txt  NOTICE.txt

2010-08-26 17:27:00 241

原创 find和sed配合批量替换文件内容

<br />把当前目录下所有文件中的<br />com.android.launcher<br />替换成<br />com.mycomp.myLauncher<br /> <br />find ./ -exec sed -i 's/com.android.launcher/com.mycomp.myLauncher/g' {} /;

2010-08-26 17:19:00 405

原创 android手势识别总结

onGestureListener得和onTouchListener配合使用,因为只有onTouchListener才是实际的监听到用户的触摸,他把他所有监听到的用户触摸通知"手势识别"类对象,手势识别类对象处理后触发对应的函数,例如onFling, onLongPress等等。这里总结我这两天遇到的问题和这些问题的解决方法

2010-07-15 17:03:00 16152 1

原创 Android命令行工具小结

**.  创建模拟器用的SD CARD ./mksdcard -l cui-sd 512M vsdcard**.  建立avd./android create avd --target 7 --name Android-2.2 --skin HVGA

2010-06-30 17:36:00 6328

空空如也

空空如也

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

TA关注的人

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