随笔分类 -  Linux

摘要:------------- Auto Configuration --------------------PCI provides two separate 32-bit or 64-bit address spaces corresponding to the memory and I/O port address spaces of the x86 processor family. Addresses in these address spaces are assigned by software. A third address space, called the PCI Config 阅读全文
posted @ 2011-01-03 11:15 super119 阅读(636) 评论(0) 推荐(0) 编辑
摘要:这次调试rtspgoogle这个RTSP extension的时候,发现问题:在gst-inspect的时候,能看到这个element。但是在rtspsrc初始化extension列表的时候,这个element没有被找出来。导致youtube上的视频播放不了(因为rtspgoogle这个extension没有发挥作用)原因是这样的:rtspsrc在class_init里面调用了gst_rtsp_ext_list_init。而每个element的class_init是在gst_init的时候调用的,所以,如果rtspsrc的class_init在执行的时候,rtspgoogle的class_in 阅读全文
posted @ 2011-01-03 11:14 super119 阅读(853) 评论(0) 推荐(0) 编辑
摘要:If you have a new kernel config file, e.g, named dot_config. You wanna use this config file while building kernel. So you copied this file into kernel src dir/arch/arm/configs, and:make dot_configKernel will complain: No rule for target "dot_config" found.Why? Just simple -- all predefined kernel 阅读全文
posted @ 2011-01-03 11:14 super119 阅读(565) 评论(0) 推荐(0) 编辑
摘要:比如把代码里面所有的close调用,替换成alpclose。于是写了一个脚本,有了一些收获。脚本如下:[代码]1. 使用grep -E来打开grep的扩展正则表达式的功能。所谓扩展,就是像+, ()这样的元字符才能使用。sed使用-r来打开扩展正则表达式。打开了扩展之后,如果要表示一个常量的+, (),就需要用\来转义了。2. grep -e可以用来表示多个匹配pattern3. 最后一句sed的时候,使用了正则表达式中的分组功能,也就是将[ =({;?:\t]+这个部分定义成一个组,然后在后面就可以用\1来引用(注意\0已经被默认分配成整个pattern)。如果定义了第二个组,那么就用\2来 阅读全文
posted @ 2011-01-03 11:13 super119 阅读(941) 评论(0) 推荐(0) 编辑
摘要:打开gstreamer debug一般方法是:export GST_DEBUG=filesrc:5这样的做法,然后运行程序。但是通过看gstreamer的代码,这个环境变量是在gst_init的时候被读取并设置的,具体是在init_pre这个函数里面。如果程序已经在运行了,gst_init已经做过了,这个时候要打开debug怎么办呢?(Media server就有这样的需求)。通过看init_pre中的代码,发现很简单,直接调用gst_debug_set_threshold_for_name或gst_debug_set_default_threshold就可以。下面是测试代码:[代码] 阅读全文
posted @ 2011-01-03 11:11 super119 阅读(3283) 评论(0) 推荐(0) 编辑
摘要:Q: Bus message和Event有什么不同?和signal又有什么不同?A:bus message是用于gstreamer和application之间交互用的,比如EOS,如果是bus message则是gstreamer告诉app -- End of Stream。而Event是用于gstreamer内部的,比如src element发出EOS Event,然后该event顺着pipeline一路传递到downstream elements,这些elements可以得到通知,从而做一些cleanup的工作,然后继续将event传递下去。这应该就是bus message和event不同 阅读全文
posted @ 2011-01-03 11:09 super119 阅读(2057) 评论(0) 推荐(0) 编辑
摘要:H.264与MPEG4区别MPEG系列的标准归属于ISO/IEC,但另一方面以制订国际通讯标准为主的机构:ITU-T,在完成H.263(针对视频会议之用的串流视频标准)后展开了更先进的H.264制订,且新制订是与ISO/IEC机构连手合作,由两机构共同成立一个名为JVT(Joint Video Team)的联合工作小组,以MPEG-4技术为基础进行更适于视频会议(Video Conference)运用的衍生发展,也因为是联合制订,因此在ITU-T方面称为H.264,在ISO/IEC的MPEG方面就称为MPEG-4 Part 10(第10部分,也叫ISO/IEC 14496-10),MPEG-4 阅读全文
posted @ 2011-01-03 11:09 super119 阅读(7290) 评论(1) 推荐(1) 编辑
摘要:1. 每个element/bin都有current,next,pending三个成员变量表示状态。current和next很好理解,pending一般就是我们给该element设置的最终的状态,比如调用gst_element_set_state函数设置PLAYING state,则这个pending一般就是PLAYING。代码中还看到有一个宏GST_STATE_TARGET,这个TARGET一般也和pending一样,表示最终要设置的state(final state)2. gst_element_set_state_func函数(gst_element_set_state的缺省实现)会调用g 阅读全文
posted @ 2011-01-03 11:08 super119 阅读(1855) 评论(0) 推荐(0) 编辑
摘要:在写gstreamer element的时候,不能使用全局变量。因为element可能在一个进程中被创建多个,比如一个pipeline中就可能有多个queue。要把这些变量全部放到该element的class中去,作为成员变量即可。因为一个进程如果使用了多个该element的话,会创建多个GObject,所以,成员变量也会有多份。如果写成全局变量,那就所有的object共享一个了,会出问题。(其实就把GObject看成一个structure好了,多个GObject在内存中就是多个structure,所以,成员变量不会冲突。而全局变量始终只有一份的)。之前还写代码研究过动态库中的全局变量的问题。 阅读全文
posted @ 2011-01-03 11:07 super119 阅读(755) 评论(0) 推荐(1) 编辑
摘要:OProfile的原理比较简单:现在的很多CPU都提供一个所谓性能计数器的东西(performance counter),大致的原理就是程序可以注册告诉CPU对什么event感兴趣(比如CPU_CYCLE,CPU经历了一次时钟周期),然后CPU在执行了相应的操作后,就会在性能计数器上加1,这样程序就可以取出。所以,使用OProfile来定位CPU使用率的问题,就变成了让oprofile收集程序运行过程中哪个可执行程序(或是so)中的哪个function,消耗的CPU CYCLE最多。OProfile不是每次有了event都会记录下来的,OProfile有一个sample(采样)的概念,其实就是 阅读全文
posted @ 2011-01-03 11:05 super119 阅读(5429) 评论(0) 推荐(0) 编辑
摘要:其实build kernel很简单,首先参考kernel源代码目录下的README文件,基本上是这么几步:1. make mrproper -- 注意这一步走过之后,.config会被恢复成默认设置2. make menuconfig -- 在这里面check配置项,决定哪个打开,哪个关闭。哪些driver编译成module,哪些直接编译进内核3. make -- 首先会编译内核,完成后会自动编译modules几个Tips:1. 如果要做交叉编译,只需要定义CROSS_COMPILE环境变量就可以,比如:export CROSS_COMPILE=arm-none-linux-gnueabi-L 阅读全文
posted @ 2011-01-03 11:04 super119 阅读(1118) 评论(0) 推荐(0) 编辑
摘要:我用的命令:sudo tcpdump -i eth1 src portrange 10580-10581 # 看本机eth1上有没有收到对方10580-10581端口发过来的数据sudo tcpdump -i eth1 dst portrange 10580-10581 # 看本机通过eth1向任何主机的10580-10581上有没有发过数据BTW: Wireshark(原来的Ethereal)是个不错的网络监控分析工具,有图形界面,命令语法也和tcpdump差不多,可以使用。超级详细Tcpdump 的用法阅读提示:第一种是关于类型的关键字,主要包括host,net,port, 例如 host 阅读全文
posted @ 2010-12-29 11:02 super119 阅读(833) 评论(1) 推荐(0) 编辑
摘要:Memory-mapped I/O(don't confused with memory-mapped file I/O) and I/O Port-------------- Overview --------------------------Memory-mapped I/O (MMIO) and port I/O (also called port-mapped I/O or PMIO) are two complementary methods of performing input/output between the CPU and peripheral devices in a 阅读全文
posted @ 2010-12-25 11:45 super119 阅读(2020) 评论(0) 推荐(0) 编辑
摘要:FLTK是目前最流行的跨平台的GUI界面开发包,最大的特点就是编程简单且运行速度极快在Windows系统下,只需使用VC打开fltk.dsw文件,然后设定好include路径,编译即可得到所有的exe、dll、lib在IRIX系统下(Linux也类似),安装FLTK可以采用以下一些步骤:1、tar xvf fltk...2、env CC=“/usr/bin/cc -n32" CXX=“/usr/bin/cc -n32”(这步工作其实不做也可以)3、./configure --prefix=/usr/local/fltk --enable-shared --enable-gl4、make5、ma 阅读全文
posted @ 2010-12-25 11:41 super119 阅读(256) 评论(0) 推荐(0) 编辑
摘要:GHashTable的key和value都是gpointer,也就是说,如果想用一个string来做key的话,key的类型就只能是char *,即便如此,用string做key也是不行的。因为key是指针,我们没法保证两个char *的值是一样的。就算我们重载了GHashTable key的compare函数,也无法达到这一目的。所以,可以考虑使用data list来代替。GLib中的data list,key只能是string或者GQuark,value就是gpointer。使用data list,两个key的指针可以不同,因为在设置key的时候,data list会将字符串复制到它内部的 阅读全文
posted @ 2010-12-20 16:48 super119 阅读(402) 评论(0) 推荐(0) 编辑
摘要:特简单。1. 在mplayer的设置中,Subtitle & OSD中Encode选择:Simplified Chinese(cp936),并勾上"Unicode Subtitle"复选框2. 在Font标签页中Encode选择"Unicode"3. cd ~/.mplayerln -s /usr/share/fonts/wenquanyi/wqy-zenhei/wqy-zenhei.ttf .mv wqy-zenhei.ttf subfont.ttf搞定。字幕字体大小可以在Font标签页的Text Scale调整。 阅读全文
posted @ 2010-12-18 23:03 super119 阅读(694) 评论(0) 推荐(0) 编辑
摘要:apt-cache search # ------(package 搜索包)apt-cache show #------(package 获取包的相关信息,如说明、大小、版本等)apt-get install # ------(package 安装包)apt-get install # -----(package --reinstall 重新安装包)apt-get -f install # -----(强制安装, "-f = --fix-missing"当是修复安装吧...)apt-get remove #-----(package 删除包)apt-get remove --purge # - 阅读全文
posted @ 2010-12-18 23:02 super119 阅读(989) 评论(0) 推荐(0) 编辑
摘要:1. ArchLinux的wiki是个非常不错的资源。我的安装就是照着Beginer's Guide做的,从中也学会了很多之前不知道的一些东西,比如HAL是做什么用的,alsamixer可以用来调音量,普通用户需要加入到optical, storage, video等几个组中,从而获得一些特别的权限。所以,有问题或是初装,一定要按照Beginer's Guide来做,文档非常不错。本篇文章其实有很多重要的内容都没有描述,不描述是因为wiki写的很好,我就是按照wiki做的,没有任何问题,所以不再赘述了。比如安装acpid, cpufreq, laptop-mode, pm-utils这些,这些 阅读全文
posted @ 2010-12-18 22:59 super119 阅读(1725) 评论(0) 推荐(0) 编辑
摘要:一般来说,登录Linux系统,我们会使用telnet,ssh,rlogin,甚至可以使用webmin通过web来管理但这都需要网络的支持,一旦网络出现问题,以上的方法都将失效这里介绍如何使用串口登录到Linux主机(就好比配置Cisco的路由器一样)首先确认Linux系统中有/sbin/agetty,然后编辑/etc/inittab,添加:“7:2345:respawn:/sbin/agetty/dev/ttyS0 9600”这一行,9600代表9600bps(连接cisco路由器也是这个速率),也可以设成19200、38400、57600、115200再修改/etc/securetty,添加 阅读全文
posted @ 2010-12-18 22:56 super119 阅读(3371) 评论(0) 推荐(0) 编辑
摘要:请教:1、何为实地址方式?2、何为保护方式?3、二者的区别是什么?(能否详细)4、什么是虚拟地址?5、什么是映射?6、何为浮点数?回答:如果你想详细地搞清以上问题,建议你去阅读有关386、486或Pentium汇编的书(8086/8088的汇编的书一般没有保护方式、虚拟地址、浮点数等概念),一般都会有专门的部分来讨论这些问题,因为要想准确地知道这些问题,还真需要花一些工夫。这里简单地解释一下,8086/8088的微机只有一种工作模式(即实模式)只能处理1M以下的地址(16位),这种地址被城为实地址。后来Intel为了突破1M的内存的限制,推出了386等芯片,增加了保护模式,在32位保护模式下, 阅读全文
posted @ 2010-12-18 22:55 super119 阅读(391) 评论(0) 推荐(0) 编辑