reille

 


当前一个项目中需要用到音频,用到的音频芯片是CS4344,驱动是从linux内核自带的AT73C213音频IC驱动移植过来的。

在用自己写的应用程序播放音频文件的时候,发现随着播放不同的音频文件,内存的使用越来越多,甚至高达27或28M(总共内存是32M)。由于在这之前没有关注过linux的cache机制,判断内存是用top命令的used的值来判断的,因此将这个问题判断为内存问题。

由于音频驱动是alsa架构,而播放音频的应用程序是直接用系统函数write写的,即直接写音频文件到音频设备,开始判断为是应用程序导致的内存问题。于是移植了alsa-lib和alsa-utils,但用aplay测试的时候,总是不能设置参数,提示:Invalid argument,后面自己写的基于alsa-lib的测试程序也是出现这个问题,google了好多资料,也无济于事。

于是怀疑是不是音频驱动的问题,经查,原来移植驱动的时候,把采样频率的最大值最小值设定为同一个值,如下所示的14,15行:  阅读全文 »

 


最近对单独的进程进行编译时,提示下列编译错误:

这是因为程序中使用了数学函数sqrt和asin的缘故。 阅读全文 »

 


在使用ls命令时,每个文件在Linux下面都会记录3个主要的修改时间:

  •  modification time(mtime,修改时间):当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性。
  •  status time(ctime,状态时间):当该文件的”状态(status)”改变时,就会更新这个时间,举例来说,更改了权限与属性,就会更新这个时间。
  • •access time(atime,存取时间):当“取用文件内容”时,就会更新这个读取时间。举例来说,使用cat去读取 ~/.bashrc,就会更新atime了。

举例来说,我们来看一看/etc/man.config文件的时间。 阅读全文 »

 


为什么要在linux命令前加上 ./ ?

简述

执行unix或linux中除了path系统变量外的目录下的命令都要加./。

修改用户的 .bash_profile,在 PATH一行最后加上 “:.” (一个冒号,一个点) ,然后退出重新登陆用户就ok了! PATH中没有定义路径,加上就ok了。

./表示当前目录,这是因为linux的默认搜索目录里没有当前目录,所以如果你在当前目录需要执行程序就要加上路径./,用全路径代替也是可以的。

win/dos的默认搜索路径里有当前目录,所以不需要加。其实加上也是一样的效果。

什么时候才需要在命令前加上./ ?  阅读全文 »

 


用户程序有可能要花费很多时间,如果将它放在前台运行,将导致无法继续做其他事情,最好的方法就是将它放在后台运行,甚至可能希望在用户注销系统后,程序还可以继续运行。让我们来看看如何实现linux程序后台运行

1. &命令实现后台运行程序

将程序放到后台运行的最简单方法就是在命令最后加上“&”,示例如下:

[cc]reille@ubuntu:  updatedb & ← 在后台执行 locate 数据库更新命令[/cc]

2,前台运行程序的fg命令 

如果用户当前已有程序在后台运行,可以输入fg命令,将它从后台移到前台运行:
[cc]reille@ubuntu:   fg ← 放到前台执行的命令会显示出来[/cc]

3,在退出后让程序继续运行的nohup命令  阅读全文 »

 


毫秒延时函数:mdelay()
微妙延时函数:ndelay()

[cc]#ifndef mdelay
#define mdelay(n)    (/
(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : /
({unsigned long __ms=(n); while (__ms–) udelay(1000);}))
#endif

#ifndef ndelay
#define ndelay(x) udelay(((x)+999)/1000)
#endif[/cc]

使用这两个延时函数时,要有包含文件: #include  <linux/delay>

从上述代码可看到,在linux驱动中,毫秒和微秒延时都调用udelay()函数来实现延时的。udelay()函数实现微秒延时,因此,也可直接使用udelay()函数来实现延时。

 


今天想使用printf()函数在串口上每秒输出一个‘C’字符,实现在串口上显示如CCCCCC的提示信息,但直接使用printf(“C”);语句时,要么不输出,要么一下子输出很多CCCCC。

而使用printf(“C\n”);语句时则可正常输出显示,但这不是我要的输出格式。

事实上这个问题涉及到printf()输出缓冲的问题。

对于标准输出设备stdout,输出一般都有缓冲,当遇到刷新标志或缓冲满时才把缓冲的数据输出到标准输出设备中。

对于printf()函数,其使用的输出设备就是标准输出设备stdout,且采用行缓冲式的输出,当printf()遇到\n时,或者缓冲区满时,才会将缓冲区里的内容刷新到标准输出(stdout)。 阅读全文 »

 


由于最近用的linux虚拟机开发环境不能用了,因此下载了ubuntu9.10和VMware Workstation7.0.1来搭建新的开发环境。

一开始是在家里装的,用VMware Workstation7.0.1 + ubuntu-9.10-alternate-i386.iso,由于家里的是ADSL上网,因此装好系统后,就可以上网了,但没有装VMware Tools。参考网上一些关于ubuntu-9.10的VMware Tools装法,很容易就装上了,并没有出现网上说的一些错误。

列出方法如下:

  1. 在虚拟机ubuntu-9.10的CD/DVD(IDE)虚拟光盘上加载位于VMware Workstation7.0.1安装目录下的linux.iso文件;
  2. 点击VM菜单下Install VMware Tools…菜单,这里会在虚拟机ubuntu-9.10桌面上加载上光盘;
  3. 将里面的程序解压出来,然后打开终端,切换到管理员权限并进入你刚才解压的安装目录下,执行 ./install xxx.pl(完整文   件名不记得了)的安装脚本,一路回车;
  4.  装好后,重启ubuntu。 阅读全文 »
 


本文详细描述了window中eclipse SDK的安装与配置,使用它来开发C/C++程序。

1. 前言

之前使用微软的vs2003来开发嵌入式应用程序,因为工作需要,应用程序IDE开发环境从vs切换到了eclipse SDK中,为了尽快熟悉eclipse,在家中装了一个eclipse环境,同时,将记录一些eclipse SDK使用过程中的一些信息。

eclipse SDK是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。此外,它还是一个开放的可扩展的IDE。

1.1 eclipse 简介

Eclipse  是替代 IBM Visual Age for Java(以下简称 IVJ)的下一代 IDE 开发环境,但它未来的目标不仅仅是成为专门开发 阅读全文 »

 


ubuntu智能拼音输入法安装步骤

1. 终端输入命令:

[cc]sudo apt-get remove scim[/cc]

这一步是删除安装系统的时候装的那个scim,实际是个假的,我这里不可以用。

2. 终端输入命令:

[cc]sudo apt-get install scim[/cc]

这一步下载安装scim输入法。下载完了系统会自己装上,中间会有提示,直接按“y”键就行了。 阅读全文 »

© 2012 velep.com | reille blog | 管理| 粤ICP备12094833号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量