- 博客(88)
- 收藏
- 关注
转载 混音器原理及Mixer API函数介绍
为了理解Mixer API是如何工作的,首先我们得弄清楚一个典型声卡的硬件组成。因此非常有必要去建立一个声卡模型,此声卡应拥有多个典型的组件并且这些组件都是相关联的。让我们看一个典型的、最基本的声卡。首先,如果声卡能够进行数字化录音,那么典型情况下它就有一个MicrophoneInput(麦克风传声器,下同)(附有某种前置放大器),同时它还有一个ADC(模数转换器,下同)将麦克风输入的模拟信号
2011-03-28 13:10:00
1263
原创 字符编码 ascii unicode utf-8 gb2312
一、1. 最早,只有ascii码,美国使用。1个字节8位,只用了后7位(0-127),表示了英语中一般的字符以及数字、字母;2.计算机普及,中国对ascii码进行扩展GB2312,两个字节表示一个汉字(原ascii码的英文继续由1个字节表示);注意:如果说汉字的ascii码,其实指的是gb23123.越来越多的国家都使用计算机,提出一套支持地球上所有文化、字母、字符的编码Unicode:2个字节表示一个字符(原ascii码的英文也需要两个字节,高位全为0);识别unicode的方法就是在ultraedi
2011-01-13 10:03:00
813
转载 objcopy 参数 简介
objcopy用于将object的部分获全部内容拷贝到另一个object,从而可以实现格式的变换。objcopy可用用于将文件转换成S-record格式或者raw二进制格式。例如, xxxx-elf-objcopy –O srec test.o test.s19则将test.o转换成s-record文件中。通常涉及到text段。 xxxx-elf-objcopy –O binary test.o test.bin则将test.o转换成rawbinary文件格式。
2010-12-17 13:42:00
716
转载 zImage内核镜像解压过程详解
作者:刘洪涛,华清远见嵌入式学院讲师。在华清远见教学过程中,发现很多学员对内核镜像解压过程比较感兴趣,但网上相关的文章往往不能把关键问题讲清楚,所以写了这篇文章。本文以linux-2.6.14内核在S3C2410平台上运行为例,讲解内核的解压过程。内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zImage是如何解压的过程,就不是那么好理解了。本文将结合部分关键代码,讲解zImag
2010-12-16 09:29:00
352
转载 Linux 音频系统简析
我之所以钻研linux内核,只想是知道为什么我的系统还是没有声音……linux音频系统架构问题由来已久……远远比你想像的复杂。如果你想理清从读取音频文件到最终从你的扬声器中播放出来这一过程中所用到的技术之间的关系的话,纸上的结构图足以像炸酱面一样混乱,而你根本找不到任何头绪。这是因为,音频系统本身就比其他架构更加复杂。OSI模型每一层都有自己的作用域和功能,每一层几乎不会有任何交集,所以你绝对不会碰到任何混乱情况。但是,在linux音频系统上,却上演着这样的事情:没有明确的底层,各种音频技术各自为政。lin
2010-12-03 10:10:00
1312
转载 Linux man 添加函数帮助及其汉化
<br />Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。<br />Linux的man手册共有以下几个章节:<br /><br />1、Standard commands (标准命令)<br />2、System calls (系统调用)<br />3、Library functions (库函数)<br />4、Special devices (设备说明)<br />5、File formats (文件格式)<br />6、Games and toys
2010-10-22 18:12:00
465
原创 volatile 与内存屏障
<br />volatile<br /> <br />c语言中 volatile 关键字用于告诉编译器,严禁将此处的汇编语句与其它的语句重组合优化。volatile只能保证编译器不会做乱序执行优化.<br /> <br /> 1. 不对*p操作生成乱序指令(通常如此,具体请看后面的解释) <br />(比如条件判断)<br /> <br /> 2. 每次从*p取数据的时候,一定会进行一次访存操作,哪怕前面不久才取过*p的值放在寄存器里。<br />比如对于硬件寄存器的访问,内存中的数据和
2010-09-23 17:07:00
1473
转载 Bash History 命令使用技巧
Bash的使用GUN readline库来处理用户输入,所以BASH也有emacs/vi 两种模式(主要是快捷键不同)(4DOS没有)一般来说BASH缺省是emacs模式,如果想变成vi模式(如果你是vi用户)就可以了,然后你就可以用和vi一样的快捷键来编辑命令行了.(4DOS没有)set -o vi不好意思有点远了,接下来还是history命令方面Emacs and Vi history 编辑快捷键:Emacs 模式:CTRL-p 历史列表上一个.CTRL-n 历史列表下一个.CTRL-r 向上搜索历史列
2010-06-21 14:19:00
478
转载 Linux下时间机制
<br /> <br />一)ANSI clock函数 <br /><br />1)概述:<br />clock 函数的返回值类型是clock_t,它除以CLOCKS_PER_SEC来得出时间,一般用两次clock函数来计算进程自身运行的时间.<br />ANSI clock有三个问题:<br />1)如果超过一个小时,将要导致溢出.<br />2)函数clock没有考虑CPU被子进程使用的情况.<br />3)也不能区分用户空间和内核空间.<br />所以clock函数在linux系统上变得没有意义.<b
2010-06-08 11:21:00
1070
原创 Debian/ubuntu下安装tftp服务
1.创建并编辑文件 /etc/inetd.conf tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot 2. 安装 tftpapt-get install tftp
2010-04-21 17:56:00
273
原创 Linux下配置NFS服务
1.安装包 # apt-get install nfs-kernel-server 2.编辑配置文件 # vim /etc/exports 输入 /home/myhome/work/ *(rw,sync) 3.重启nfs服务 # /etc/init.d/nfs-kernel-ser
2010-04-18 21:19:00
278
原创 在vim中的使用cscope
Cscope是一个很方便的工具,但是如果使用它不需要离开你喜欢的编辑器(比如Vim)会更好。幸运的是,对Cscope的支持已经被加入到Vim中。这份指南将向你介绍Vim内建的Cscope支持,以及一套可以是搜索更加方便的映射。假定你知道使用vi风格编辑器的基础知识,但是你不必了解任何关于Vim的特殊知识(如果要用到Vim特有的特性——比如多窗口,我会简单介绍一些关于该特性的有用的知识)。你
2010-03-19 11:01:00
1808
转载 Linux文件查找命令find,xargs详述
来自:http://www.linuxsir.org/main/?q=node/137#1.2摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解;本文是zhyfly兄贴在论坛中;我对本文进行了再次整理,为方便大家阅读;目录版权声明前言:关于find命令一、find 命令格式1、find命令的一般形式为;2、find命令
2010-02-22 16:28:00
358
转载 writing an alsa driver 中文
writing-an-alsa-driver(编写一个ALSA驱动)翻译稿 第一章编写一个ALSA驱动(by Takashi Iwai)0.3.6版本翻译:creator sz111@126.com翻译这篇文章主要是为了学习ALSA驱动,因为感觉ALSA是Linux音频发展方向,所以下决心仔细看看,但是中文资料太少,就想翻译一份奉献给广大初学并且英文不好的朋友。不过自己的英文
2010-01-26 17:55:00
4301
1
转载 Linux中的延时函数及获取系统时间函数
应用层: #include 1、unsigned int sleep(unsigned int seconds); 秒级 2、int usleep(useconds_t usec); 微秒级:1/10^-6 #define _POSIX_C_SOURCE 199309 #include struct timespec {
2010-01-05 15:43:00
3519
原创 framebuffer 驱动笔记
1.一般显示设备有以下三种同步信号 1. 帧同步信号 2. 行同步信号 3.像素时钟 2.Linux 帧缓冲设备主设备号为29 对应 /dev/fb%d设备文件 3.一般通过将 FrameBuffer 设备映射到进程地址空间的方式使用 4.Framebuffer对应的源文件在linux/drivers/video/目录下
2009-12-24 14:06:00
1057
转载 framebuffer驱动全篇
在后续的几篇里面会详细介绍如何编写一个显卡的驱动程序。framebuffer device在内核里面作为显卡驱动模型,许多函数和数据结构都是特定,正是这些特定的东西为我们的编程提供了方便。要开发frame buffer device驱动,你应该阅读Source/Source/Documentation/fb下面的说明文件,三个重要文件00-INDEX,framebuffer.txt,inter
2009-12-11 17:53:00
878
转载 Linux设备驱动模型之platform总线
转自:http://blog.chinaunix.net/u2/72003/showart_1963302.html1 平台设备和驱动初识platform是一个虚拟的地址总线,相比pci,usb,它主要用于描述SOC上的片上资源,比如s3c2410上集成的控制器(lcd,watchdog,rtc等),platform所描述的资源有一个共同点,就是在cpu的总线上直接取址。平台设备会分到一个名称
2009-12-08 10:20:00
1476
4
转载 linux内核的一些预定义
原文:http://article.phpfans.net/?do=Show&id=Mjc3NTkx 作者: crazytyt 时间: 2009-08-27 13:29:00所有的内核代码,基本都包含了linux/compile.h这个文件,所以它是基础,打算先分析这个文件里的代码看看,有空再分析分析其它的代码。首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个变量实际是
2009-11-27 15:15:00
623
转载 minicom中文手册
NAMEminicom - 友好易用的串口通信程序 总览 SYNOPSISminicom [-somMlwz8] [-c on|off] [-S script] [-d entry] [-a on|off] [-t term] [-p pty] [-C capturefile] [configuration] 描述minicom 是个通信程序,有点象共享软件 T
2009-11-11 15:35:00
217
转载 系统工作期间调整/home分区
原文链接:http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip05/在这个新的技巧集中,Daniel Robbins 说明了如何在正在运行的系统上更改分区布局。同时他还介绍了几个诀窍,从而使您可将停机时间缩到最短,并可避免犯严重错误。在这篇技巧中,他将说明如何将 /home 移动到另一个分区上。/home 分区是最常移
2009-11-08 14:33:00
368
转载 Linux内核:slab/slob/slub
原文链接:http://www.linuxdiyf.com/bbs/viewthread.php?tid=92084 很久很久以前:一个叫做Mark Hemment的哥儿们写了Slab。在接下来的一些年里,其他人对Slab进行了完善。一年半以前,SLOB问世了。SLOB的目标是针对嵌入式系统的,主要是适用于那些内存非常有限的系统,比如32MB以下的内存,它不太注重large smp系统,
2009-11-06 16:39:00
1379
转载 mount 命令的使用方法
挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。 命令格式: mount [-t vfstype] [-o options] device dir 其中: 1
2009-11-03 15:54:00
344
原创 大小端模式的整理
1.对于16位32位或64位的总线,在总线上传输的是数据的值而不是内存数据。因此总线两 端看到的数据的值是相等的,而字节顺序不一定是一样的。比如32位PCI总线,主机是le ,设备是be的情况下,有一个数据值是 0x12345678;数据在主机内存分布如下: 数据在le机器内存中的分布: |7 0|15 8|23 16|31 24|
2009-10-28 09:04:00
302
原创 Debian 下编译KGDB调试内核
1.需要安装 zlib1g-dev 包 ---压缩工具库,因为内核在执行时候是自解压的2.需要安装 ncurses 包 ---带颜色的终端支持3.需要安装 fakeroot 包 ---普通用户执行root权限的操作 ,如安装内核3.KGDB要加入的内核选项 CONFIG_KGDB=y CONFIG_KGDB_SERIAL_CONSOLE=y CONFIG_MAGIC_
2009-10-28 09:02:00
1601
转载 documention/kbuild/makefiles.txt 中文翻译
=== 目录 === 1 概述 === 2 用户与作用 === 3 Kbuild文件 --- 3.1 目标定义 --- 3.2 编译进内核 - obj-y --- 3.3 编译可装载模块 - obj-m --- 3.4 输出的符号
2009-10-22 21:00:00
595
转载 Linux Kernel kbuild 系统
原文链接:http://blog.chinaunix.net/u3/94283 从以上例子中可以看到,内核的编译系统kbuild是个很庞大的系统。但是,它所使用的make和我们平时用的make是一模一样的。kbuild只是通过预定义一些变量(obj-m,obj-y等等)和目标(bzImage,menuconfig等等),使内核的编译和扩展变得十分方便。我
2009-10-21 21:10:00
289
原创 c 语言可变参数函数例子
#include#include#includevoid demo(char *msg,...){ va_list argp; int arg_number=0; char *para = msg; va_start(argp,msg); while(1){ if ( strcmp( para, "/0") != 0 ) { arg_numbe
2009-10-21 09:47:00
131
原创 linux模块机制实现
在 include/linux/init.h /* initcalls are now grouped by functionality into separate * subsections. Ordering inside the subsections is determined * by link order. * For backwards
2009-10-21 09:14:00
245
转载 C语言宏的高级应用
关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏: #define WARN_IF(EXP) / do{ if (EXP) / fprintf(stderr, "Warning: " #EXP "/n"); } wh
2009-10-19 15:48:00
229
原创 我的vimrc文件
" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime" you can find below. If you wish to change any of
2009-10-19 13:57:00
389
转载 C函数返回结构体在汇编下的实现
原文链接:http://blog.youkuaiyun.com/sytstarac/archive/2009/08/05/4411519.aspx 编译器:vc++6.0(因为此种实现依赖编译器处理)此处只简要叙述一下机制。并附部分关键指令序列。准备:1,关于EBP:称做栈基址指针。为什么这样说呢?我们先来看看函数调用的过程:参数从右到左压栈。call指令执行,该指令将导致EIP压
2009-09-23 10:46:00
620
转载 GNU LD脚本解
原文地址 http://www.cublog.cn/u/13991/showart_177822.html 目录 1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PHDRS命令10. VERSION命令11. 脚本内的表达式12. 暗含的连接脚本1. 概论 每一个链接过程都由链接脚本(link
2009-09-19 22:56:00
384
原创 三.编写Linux网络驱动程序中需要注意的问题
3.1 中断共享 Linux系统运行几个设备共享同一个中断。需要共享的话,在申请的时候指明共享方式。系统提供的request_irq()调用的定义: int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, struct pt_regs *regs),
2009-08-21 10:11:00
107
原创 二.Linux系统网络设备驱动程序
2.1 网络驱动程序的结构 所有的Linux网络驱动程序遵循通用的接口。设计时采用的是面向对象的方法。一个设备就是一个对象(device 结构),它内部有自己的数据和方法。每一个设备的方法被调用时的第一个参数都是这个设备对象本身。这样这个方法就可以存取自身的数据(类似面向对象程序设计时的this引用)。一个网络设备最基本的方法有初始化、发送和接收。 ------------
2009-08-21 10:08:00
140
原创 一.Linux系统设备驱动程序概述
1.1 Linux设备驱动程序分类 Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。在2.0.xx到2.2.xx的变动里,驱动程序的编写做了一些改变,但是从2.0.xx的驱动到2.2.xx的移植只需做少量的工作。 Linux系统的设备分为字符设备
2009-08-21 10:07:00
163
转载 分析kernel的initcall函数
先来看看这些initcall函数的声明:/* include/linux/init.h *//* initcalls are now grouped by functionality into separate * subsections. Ordering inside the subsections is determined* by link order. * For backwards c
2009-08-20 16:17:00
260
原创 Gcc编译时指定动态库搜索路径
1.调用gcc是可以指定连接选项(也就是说gcc调用ld时候的选): -Wl 。每个子选项都需要用逗号隔开具体用法是 $ gcc -gccoption1 -Wl,-ldoption1,-ldoption1 -gccoption32.ld 连接器可以在连接阶段制定最终二进制代码的动态库搜索路径,具体做法是在可执行文件的.dyna
2009-02-23 11:12:00
2097
转载 ubuntu设置虚拟内存使用率
1.查看你的系统里面的swappiness $ cat /proc/sys/vm/swappiness 不出意外的话,你应该看到是 60 2.修改swappiness值为10 $ sudo sysctl vm.swappiness=10 但是这只是临时性的修改,在你重启系统后会恢复默认的60,所以,还要做一步: $ gks
2009-02-08 13:59:00
1304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人