T113-S3 全志MCU音频播放调试记录

全志T113-S3是ArmA7 双核1.2G MCU,开发板使用的是SPI-NAND FLASH 128M,flash太小,第一步是调整分区,调整文件系统,要不然一个可执行程序都放不下。


几个问题逐一解决:

1、调整分区大小。

2、裁剪默认文件系统。

3、ssh/sftp支持及http配置支持。

4、播放程序适配。


1、调整分区大小。

这个问题折腾了几天。deepseek一直说是修改 sys_partition.fex,但并没说修改那个路径下的这个文件。最后是修改文件:/home/alientek/QUANZHI_T113/device/product/configs/evb1_auto_nand/longan/sys_partition.fex


[partition]

    name         = rootfs

    size         = 101920

    downloadfile = "rootfs-ubifs.fex"

    user_type    = 0x8000

分区大小调整的目的,是增加/分区的大小。


2、裁剪默认的文件系统大小。

编译脚本所在路径:alientek@ubuntu:~/QUANZHI_T113/platform/framework/auto$ 

修改build_small.sh,会拷贝默认的文件系统文件到out路径下。

默认的rootfs路径:/home/alientek/QUANZHI_T113/platform/framework/auto/rootfs

去处不需要的可执行文件和库文件。


3、ssh/sftp支持及http配置支持。

使用dropbear 确实省事不少,对比openssh而言,简单。

1
2
3
4
5
6
7
8
9
~/dropbear # ./configure --prefix=/usr/sbin/dropbear --with-zlib=/home/alientek/QUANZHI_T113/platform/framework/auto/sdk_lib/zlib-1.2.9/ CC=arm-linux-gnueabi-gcc --host=arm
     
~/dropbear # make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
~/dropbear # make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
 
~/etc # cd dropbear
~/etc/dropbear # dropbearkey -t rsa -f dropbear_rsa_host_key
~/etc/dropbear # dropbearkey -t dss -f dropbear_dss_host_key
生成的秘钥文件拷贝到/etc/dropbear路径下。



4、播放程序适配。

折腾了几天的问题,播放立体声的声音一直失败,使用alsa打开配置2通道的接口调用失败。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Playback device is sysdefault:CARD=audiocodec
set_params enter mmap_flag:0
HW Params of device "sysdefault:CARD=audiocodec":
--------------------
ACCESS:  MMAP_INTERLEAVED MMAP_NONINTERLEAVED MMAP_COMPLEX RW_INTERLEAVED RW_NONINTERLEAVED
FORMAT:  S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE MU_LAW A_LAW IMA_ADPCM S20_LE S20_BE U20_LE U20_BE S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE U18_3BE
SUBFORMAT:  STD
SAMPLE_BITS: [4 64]
FRAME_BITS: [4 640000]
CHANNELS: [1 10000]
RATE: [4000 4294967295]
PERIOD_TIME: (0 8192000]
PERIOD_SIZE: (0 4294967295]
PERIOD_BYTES: (0 4294967295]
PERIODS: (0 4294967295]
BUFFER_TIME: [1 4294967295]
BUFFER_SIZE: [1 4294967295]
BUFFER_BYTES: [1 4294967295]
TICK_TIME: ALL
--------------------
 mmap_flag:0, format:2,rate:44100, channels:2
 rate:44100, channels:2
 period_time:0, buffer_frames:0
 buffer_time:371520
 period_time:0, buffer_time:500000,period_frames:0
 period_time:125000--1---
 buffer_time:500000--3---
 period_frames:0, buffer_frames:0
ALSA lib pcm_hw.c:388:(snd_pcm_hw_hw_params) SNDRV_PCM_IOCTL_HW_PARAMS failed (-22): Invalid argumentUnable to install hw params:ACCESS:  RW_INTERLEAVED
FORMAT:  S16_LE
SUBFORMAT:  STD
SAMPLE_BITS: 16
FRAME_BITS: 32
CHANNELS: 2
RATE: 44100
PERIOD_TIME: 125000
PERIOD_SIZE: (5512 5513)
PERIOD_BYTES: (22048 22052)
PERIODS: (1 3)
BUFFER_TIME: 250000
BUFFER_SIZE: 11025
BUFFER_BYTES: 44100
TICK_TIME: 0
Setting of hwparams failed: Operation not permitted



但是使用aplay播放配置却又是成功的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# ./aplay -Dhw:0,0 /userdata/Test1.wav
open_mode:0,stream:0
playback_wave name:/userdata/Test1.wav count:2976924
Playing WAVE '/userdata/Test1.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
set_params enter mmap_flag:0
HW Params of device "hw:0,0":
--------------------
ACCESS:  MMAP_INTERLEAVED RW_INTERLEAVED
FORMAT:  S16_LE S24_LE
SUBFORMAT:  STD
SAMPLE_BITS: [16 32]
FRAME_BITS: [16 64]
CHANNELS: [1 2]
RATE: (0 4294967295]
PERIOD_TIME: (0 4294967295]
PERIOD_SIZE: [32 32768]
PERIOD_BYTES: [256 65536]
PERIODS: [1 8]
BUFFER_TIME: (0 4294967295]
BUFFER_SIZE: [32 65536]
BUFFER_BYTES: [256 131072]
TICK_TIME: ALL
--------------------
 mmap_flag:0, format:2
 rate:44100, channels:2
 period_time:0, buffer_frames:0
 buffer_time:743039
 period_time:0, buffer_time:500000,period_frames:0
 period_time:125000--1---
 buffer_time:500000--3---
 period_frames:0, buffer_frames:0
2 HW Params of device "hw:0,0":
-------3-------------
ACCESS:  RW_INTERLEAVED
FORMAT:  S16_LE
SUBFORMAT:  STD
SAMPLE_BITS: 16
FRAME_BITS: 32
CHANNELS: 2
RATE: 44100
PERIOD_TIME: (125011 125012)
PERIOD_SIZE: 5513
PERIOD_BYTES: 22052
PERIODS: 4
BUFFER_TIME: (500045 500046)
BUFFER_SIZE: 22052
BUFFER_BYTES: 88208
TICK_TIME: 0
--------3------------
 n:5513, avail_min:-1,chunk_size:5513
setup_chmap enter
playback_go count:0 chunk_bytes:2976924


还好有对比,问题其实出在设备名字上。

bas播放程序:                                               aplay的程序

 "sysdefault:CARD=audiocodec"                    "hw:0,0"

上面的名字是通过snd_device_name_get_hint 取得的声音设备名字,名字修改为aplay用过的声卡设备名字,问题就解决了。

呱牛笔记


-------------------广告线---------------
项目、合作,欢迎勾搭,邮箱:promall@qq.com


本文为呱牛笔记原创文章,转载无需和我联系,但请注明来自呱牛笔记 ,it3q.com

请先登录后发表评论
  • 最新评论
  • 总共0条评论