全志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