RK3399基于ubuntu文件系统的audio调试

本文介绍RK3399基于Ubuntu文件系统的音频调试。使用rk3399开发环境、alc5640 codec和自制Ubuntu系统,调试步骤包括移植驱动确认声卡设备创建、安装alsa lib和alsa utils、调试通路并播放测试文件,还提及打包镜像前添加alsa库和工具及编译报错解决办法。

RK3399基于ubuntu文件系统的audio调试

Kernel:4.4

背景:使用rk3399的开发环境,codec使用alc5640,Linux系统用自制的ubuntu。

步骤:
1.移植好驱动,确认声卡设备创建
2.ubuntu安装alsa lib和alsa utils
3.根据寄存器调试通路,播放测试文件

1.移植好驱动,确认声卡设备创建

# cat /proc/asound/cards 
 0 [rockchiprt5640c]: rockchip_rt5640 - rockchip,rt5640-codec
                      rockchip,rt5640-codec

#ls /dev/snd/
by-path  controlC0  pcmC0D0c  pcmC0D0p  seq  timer

查看寄存器
# cat /sys/kernel/debug/regmap/1-001c/registers 

播放时
# cat /proc/asound/card0/pcm0p/sub0/hw_params 

# cat /proc/asound/card0/pcm0p/sub0/sw_params

以上信息确认无误后到第二步

2.ubuntu安装alsa lib和alsa utils

到alsa官网http://www.alsa-project.org下载alsa-lib和alsa-utils
tar -xvf alsa-lib-XXXXXX.tar.bz2
cd alsa-lib-XXXXXX
创建install目录,后面安装utils工具要用
./configure --prefix=/home/vampire/alsa/install/
make
sudo make install

alsa-utils是alsa的一个工具包,里面包含有声卡测试和音频编辑的工具

tar -xvf alsa-utils-XXXXXX.tar.bz2
./configure --prefix=/home/vampire/alsa/install/ --with-alsa-inc-prefix=/home/vampire/alsa/install/include --with-alsa-prefix=/home/vampire/alsa/install/lib
make

3.调试通路,播放测试文件

默认音频是关闭的,需要打开通路
下面以耳机为例(系统需能正确识别到耳机插拔)
根据5640的规格书确认需要打开的寄存器
在这里插入图片描述
在这里插入图片描述

参考对应配置文件external\alsa-config\cards\rockchip_rt5640.conf

amixer cset numid=51,iface=MIXER,name=‘DAI select’ 1
amixer cset numid=5,iface=MIXER,name=‘HP Channel Switch’ on on
amixer cset numid=116,iface=MIXER,name=‘HPO MIX DAC2 Switch’ on
amixer cset numid=58,iface=MIXER,name=‘Mono DAC MIXL DAC L2 Switch’ on
amixer cset numid=61,iface=MIXER,name=‘Mono DAC MIXR DAC R2 Switch’ on
amixer cset numid=91,iface=MIXER,name=‘HP L Playback Switch’ on
amixer cset numid=92,iface=MIXER,name=‘HP R Playback Switch’ on

播放wav测试文件
aplay test1k.wav

喇叭Speaker通路配置
https://blog.youkuaiyun.com/vcsuanfadaima/article/details/112279334

在Ubuntu上安装sox:
$ sudo apt-get install sox libsox-fmt-all
libsox-fmt-all包含mp3的解码器和其它格式的解码器。
播放音乐:
$ play Crystals.mp3

使用alsamixer可以调节音量

后记

因为ubuntu系统镜像文件需要上传服务器,并且需要在制作好的镜像中包含alsa功能,所以需要在打包ubuntu的image之前就添加好alsa相关库和工具。

由于挂载制作时是root权限,导致编译配置utils出现错误如下
error:this packages requires a curses library
目前并未找到直接解决办法。怀疑是配置utils时未添加 --disable-alsamixer --disable-xmlto

make utils时报错可以这样解决,最后make install结束
touch alsaconf/po/t-ja.gmo
touch alsaconf/po/t-ru.gmo

### 3. 构建 Ubuntu文件系统RK3399 开发板上构建基于 Ubuntu 的根文件系统,通常需要使用 **Ubuntu Base**,这是官方提供的最小化 rootfs 镜像,适用于自定义嵌入式系统的构建。可以从 Ubuntu 官方网站获取适用于 ARM64 架构的 ubuntu-base 镜像文件,并将其作为基础进行扩展[^1]。 #### 3.1 下载 Ubuntu Base 镜像 访问 [Ubuntu Base 下载页面](https://cdimage.ubuntu.com/ubuntu-base/releases/),选择适合 ARM64 架构(即 `arm64`)的镜像版本,例如: ```bash wget https://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04.1-base-arm64.tar.gz ``` #### 3.2 创建目标根文件系统目录 创建一个用于解压和修改 rootfs 的目录,并将下载的 ubuntu-base 解压到该目录中: ```bash mkdir -p /path/to/rootfs tar -xpf ubuntu-base-22.04.1-base-arm64.tar.gz -C /path/to/rootfs ``` #### 3.3 安装必要的软件包 为了使系统具备基本的功能,如网络、SSH 和包管理工具,需要在 chroot 环境下安装必要的软件包。首先挂载必要的系统目录: ```bash sudo mount --bind /dev /path/to/rootfs/dev sudo mount --bind /dev/pts /path/to/rootfs/dev/pts sudo mount --bind /proc /path/to/rootfs/proc sudo mount --bind /sys /path/to/rootfs/sys sudo mount --bind /run /path/to/rootfs/run ``` 然后进入 chroot 环境并安装基础组件: ```bash sudo chroot /path/to/rootfs /bin/bash apt update apt install --no-install-recommends systemd-sysv openssh-server netbase iproute2 ifupdown iputils-ping exit ``` #### 3.4 挂载内核模块 如果已编译好适用于 RK3399 的 Linux 内核模块,可以将其复制到 rootfs 的 `/lib/modules` 目录中: ```bash cp -af ${KMODULES_OUTDIR}/lib/modules/* /path/to/rootfs/lib/modules/ ``` 其中 `${KMODULES_OUTDIR}` 是内核模块输出目录路径[^2]。 #### 3.5 制作 ext4 根文件系统镜像 创建一个空的 ext4 文件系统镜像,并将构建好的 rootfs 内容复制进去: ```bash dd if=/dev/zero of=ubuntu-rootfs.img bs=1M count=4000 mkfs.ext4 ubuntu-rootfs.img mkdir -p rootfs_mount sudo mount ubuntu-rootfs.img rootfs_mount/ sudo cp -a /path/to/rootfs/* rootfs_mount/ sudo umount rootfs_mount ``` 优化镜像空间占用以减少体积: ```bash e2fsck -p -f ubuntu-rootfs.img resize2fs -M ubuntu-rootfs.img ``` #### 3.6 烧录到 SD 卡或 eMMC 将制作好的 rootfs 镜像写入 SD 卡或 eMMC 设备中,确保设备路径正确(如 `/dev/sdX`): ```bash sudo dd if=ubuntu-rootfs.img of=/dev/sdX bs=4M status=progress sync ``` #### 3.7 启动配置与验证 将 SD 卡插入 RK3399 开发板,设置从 SD 卡启动,并通过串口终端查看系统启动日志。首次启动后,可能需要手动调整分区大小以充分利用存储空间: ```bash sudo resize2fs /dev/mmcblk0p2 ``` 确认系统能够正常引导并加载整的 Ubuntu 环境。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值