• 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-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 plaincopyprint?
    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.   
    8. amixer cset numid=86  
    9. amixer cset numid=87  
    Tips:amixer的两句命令,是将amixer的默认设置'Left Capture Source'和'Right Capture Source'的值改为'Line‘,否则会出现alsa录音没有声音的问题

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

    [plain]view plaincopyprint?
    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

  • 相关阅读:
    C# winform 使用FastReport.Net自动打印一维码条码和二维码的解决方法
    C# winform 使用rdlc打印小票其中包含动态显示多条形码的解决方法
    我学习的LIS系统业务
    C# DataTable DataSet DataRow 转实体类集合,实体类和实体类集合转成DataTable 扩展方法分享
    我的自动化设备上位机软件开发设计(一)
    打开操作系统数据执行保护,关闭操作系统数据执行保护
    visualstudio2019 的报表技术rdlc在windows10上出现乱码的问题解决方法
    我带旅游ERP管理系统开发的经历
    C# web程序,winform程序,控制台程序配置log4net,使用log4net
    freemodbus modbus TCP 学习笔记
  • 原文地址:https://www.cnblogs.com/songfeixiang/p/3733779.html
Copyright © 2020-2023  润新知