准备工作

alsa-lib版本:alsa-lib-1.0.23.tar.bz2

alsa-util版本:alsa-utils-1.0.23.tar.bz2

其他版本的alsa-lib和alsa-util不能保证正常工作

arm板子:s3c2416

板子上linux内核:2.6.xx

pc虚拟机:arm-linux-gcc:4.4.6

首先在Ubuntu上交叉、编译alsa-lib和alsa-util

1.解压alsa-lib-1.0.23.tar.bz2,进入解压所得目录

2.使用命令

./configure --host=arm-jyxtec-linux-gnueabi
--prefix=/usr/share/arm-alsa

Tips:--host参数指定了交叉编译器为“arm-jyxtec-linux-gnueabi(根据自己板子上的工具链稳准)",因此必须确保交叉编译器已成功配置(也就是已经导出为全局环境变量,切记!切记!我就在这浪费了很多时间,我的习惯是添加据对路径),且可以在shell里直接调用;--prefix参数指定了alsa-lib的目标安装目录,之后的alsa-util配置也一样

3.使用命令

make

sudo make install

Tips:make install必须加上sudo,因为在install过程中会创建某些目录

4.解压alsa-utils-1.0.23.tar.bz2,进入解压所得目录

5.使用命令

./configure --host=arm-jyxtec-linux-gnueabi
--prefix=/usr/share/arm-alsa
--with-alsa-inc-prefix=/usr/share/arm-alsa/include
--with-alsa-prefix=/usr/share/arm-alsa/lib --disable-alsamixer
--disable-xmlto

Tips:--with-alsa-inc-prefix和--with-alsa-prefix分别指定了交叉编译util应用所需要的alsa-lib的头文件和库文件;--disable-alsamixer表示不编译生成alsamixer这个应用程序,因为该程序依赖于ncurses这个图形界面库,目前我们对于该库还不能交叉编译,故放弃

6.使用命令

touch alsaconf/po/t-ja.gmo

注意:根据自己的错误提示来输入命令

如果提示是t-ru.gmo的话,就用命令:touch
alsaconf/po/t-ru.gmo

如果提示是t-ja.gmo的话,就用命令:touch
alsaconf/po/t-ja.gmo

值得注意的地方是:如果还是报错,那就make clean一下

避免之后make报错

7.使用命令

make

sudo make install

至此Ubuntu上的工作全部结束

8.到此还不能保证自己移植的是否成功能用,先看一下我们生成的utils是否是交叉环境上的,也就是能在arm上运行的,如何测试呢?很简单,跳到我们生成工具目录下(cd
/usr/share/arm-alsa/sbin/)

# cd /usr/share/arm-alsa/bin/

# file aplay

显示 aplay: ELF 32-bit LSB executable, ARM, version
1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux
2.6.21, not stripped

注意:这就是我们能在arm上运行的小工具格式,最重要的是看arm那里,那里显示arm说明我们的运行环境是在arm上,这正是我们移植的目的,但是如果显示是
Intel 80386,说明我们没有移植成功,问题就是出在我们交叉工具链设置上。

接着要在2416上部署已交叉编译好的alsa-lib和alsa-util

为便于理解,设2416的根目录为$rootfs

1.将Ubuntu中/usr/share/arm-alsa/下的lib、bin、sbin下的文件cp至2416根文件系统的目录下,使用命令

sudo cp -rfa /usr/share/arm-alsa/lib/*
 $rootfs/lib/

sudo cp -rfa /usr/share/arm-alsa/bin/*
 $rootfs/sbin/

sudo cp -rfa /usr/share/arm-alsa/sbin/*
 $rootfs/sbin/

2.把生成的配置文件copy到文件系统中,要保证绝对路径一致(自己动手建文件夹):

sudo cp -rfa /usr/share/arm-alsa/share/alsa/* 
$rootfs/lusr/share/arm-alsa/share/alsa/

4.编辑$rootfs/etc/init.d/rcS,添加如下几行


[plain]view
plain
copyprint?

  1. #alsa_init
  2. mkdir /dev/snd
  3. ln /dev/controlC0 /dev/snd/controlC0
  4. ln /dev/pcmC0D0c /dev/snd/pcmC0D0c
  5. ln /dev/pcmC0D0p /dev/snd/pcmC0D0p
  6. ln /dev/timer /dev/snd/timer
  7. amixer cset numid=86 2
  8. amixer cset numid=87 2

Tips:amixer的两句命令,是将amixer的默认设置'Left
Capture Source'和'Right Capture
Source'的值改为'Line‘,否则会出现alsa录音没有声音的问题

5.编辑$rootfs/etc/profile,添加如下两行


[plain]view
plain
copyprint?

  1. #alsa_init
  2. export ALSA_CONFIG_PATH=/usr/share/arm-alsa/share/alsa/alsa.conf

6、如果开机运行后,你输入

# amixer

ALSA lib conf.c:3601:(snd_config_update_r) Cannot access file
/usr/local/alsa/share/alsa/alsa.conf

ALSA lib control.c:902:(snd_ctl_open_noupdate) Invalid CTL
default

amixer: Mixer attach default error: No such file or
directory

或者和上面的信息类似,那说明我们copy的配置信息据对路径不对,根据提示信息建相应的文件夹,把我们生成相应配置信息cp进去,逐步尝试,(会有好几次错误提示,和上面的作法一样)

知道最后可以成功运行,打工造成,移植成功!~

下篇文章我会根据我的情况总结一下这些小工具的具体使用方法!!

amixer小工具具体使用方法:http://blog.sina.com.cn/s/blog_7d7e9d0f0101ltg5.html

alsa-lib及alsa-utils成功移植(原…的更多相关文章

  1. ALSA lib编译

    http://blog.sina.com.cn/s/blog_7d7e9d0f0101lqlp.html alsa  lib: #!bin/sh rm -rf ./output/* mkdir -p ...

  2. ALSA lib基本概念

    1.channel 通道,即我们熟知的声道数.左/右声道,5.1channel等等 2.sample A sample is a single value that describes the amp ...

  3. alsa-lib及alsa-utils成功移植(转载)

    准备工作 alsa-lib版本:alsa-lib-1.0.23.tar.bz2 alsa-util版本:alsa-utils-1.0.23.tar.bz2 其他版本的alsa-lib和alsa-uti ...

  4. 开源物联网通讯框架ServerSuperIO,成功移植到Windows10 IOT,在物联网和集成系统建设中降低成本。附:“物联网”交流大纲

    [开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 一.概述 经过一个多月晚上的时间,终于把开源物联网通讯框架ServerSuperIO成功移植到Windows10 IOT上, ...

  5. 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上

    在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...

  6. ALSA lib调用实例

    1. Display Some PCM Types and Formats 2. Opening PCM Device and Setting Parameters /* This example o ...

  7. 成功移植SQLite3到ARM Linux开发板

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 ...

  8. qt5.5.0成功移植到IMX6中

    前阵子移植qt4.8.5到板子上成功后,总想着qt4有点旧,于是就想着玩qt5,之前都是在Windows7上写qt,写了个游戏,感觉还不错,但毕竟不能只能在PC机上跑,现在由于项目需要,要将qt搞到I ...

  9. vs2012中添加lib,.h文件方法(原)

    项目.属性.C/C++.附加包含目录:填写附加头文件(*.h)所在目录 分号间隔多项项目.属性.链接器.附加库目录:填写附加依赖库(*.lib)所在目录 分号间隔多项项目.属性.链接器(点前面的+展开 ...

随机推荐

  1. 背景色与WM_ERASEBKGND

    1.背景模式 SetBkMode(TRANSPARENT/OPACITY) 用来反应文字,图形与窗口背景交互混合模式.透明则表示文字背景与窗口背景之间透明,互不干扰. 2.背景颜色 SetBkColo ...

  2. Hive——巧用transform处理复杂的字符串问题

    相比于Map-Reduce,Hive对数据的处理相对简单,但是Hive本身提供的函数,对于处理复杂的字符串问题,就显得不是很方便,此时,可以借助transform,引入外界的Python程序对字符串进 ...

  3. Java一般要学多久?

    其实学java一般要多久?因人而异,有些人资质好,头脑聪明几个月就能学会,有些人天生愚钝,理解能力差,不过勤能补拙,只是时间相对长点 要坚持住.不过java相对于C,C++java而言,java无疑简 ...

  4. NOI 2018 你的名字

    因为机房里的小伙伴都在看<你的名字.>而我不想看 所以来写了这道题... 给一个 $S$ 串,$q$ 次询问,每次一个 $T$ 串,问 $T$ 有多少没在 $S[l,r]$ 中以子串形式出 ...

  5. Scrapy框架及组件描述

    Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...

  6. 互联网公司面试必问的mysql题目(上)

    又到了招聘的旺季,被要求准备些社招.校招的题库.(如果你是应届生,尤其是东北的某大学,绝对福利哦) 介绍:MySQL是一个关系型数据库管理系统,目前属于 Oracle 旗下产品.虽然单机性能比不上or ...

  7. 《DSP using MATLAB》示例Example7.23

    代码: wp = 0.2*pi; ws = 0.3*pi; Rp = 0.25; As = 50; [delta1, delta2] = db2delta(Rp, As); [N, f, m, wei ...

  8. HTML标签01

    html标签:table 表格 (里面加的属性指整个表格的)tr 行td 单元格 (可以换成th,只有在单元格里面才能输入文字)th 表头 默认让文字居中 文字还会显示加粗状态 font 文字标签 属 ...

  9. 转载pll工作模式解析

    PLL共有四种工作模式,只有理解了这四种工作模式的特点,才能在设计中选用恰当的模式,完成自己设计的预期功能.这四种工作模式分别是普通模式(Normal Mode).零延迟缓冲模式(Zero Delay ...

  10. fn project Function files 说明

    主要是文件 func.yaml func.json 详细说明如下: An example of a function file: name: fnproject/hello version: 0.0. ...