回答

收藏

[评测分享] 【RISC-V 全志-V821 PERF2B开发板评测试用试用体验】+ 声卡播放

#板卡评测 #板卡评测 706 人阅读 | 0 人回复 | 2025-06-18

本帖最后由 oxlm 于 2025-6-18 17:24 编辑

前言
  看全志的介绍,V821比较适合用于做目前比较火的AI眼镜的主控平台(据说V881号称更加适合,但貌似还没出),因此就想从开发的角度确认一下该平台是否真的如宣传那样,可以满足AI眼镜最基础的需求。拿到板卡后,第一时间查找资料,但在查找的过程中,发现全志针对该平台开源的代码并未提供,因此前期无法直接进行底层开发,只能在上层的基础上进行操作体验,看看是否可以进行应用层业务逻辑开发。
声卡播放
播放前准备
播放资料准备
  本来想推一个wav文件进去播放的,但是推送的时候,发现报错,提示v821内存不够,无法推送,因此尝试查找板卡自带的wav文件。这么一查找,还真找到了板卡有存测试用的wav文件,具体路径如下:
  1. root@(none):/mnt/extsd# ls -lah
  2. drwxrwxr-x    1 root     root           0 Jan  1 00:03 .
  3. drwxrwxr-x    1 root     root           0 Mar  1  2025 ..
  4. -rw-rw-r--    1 root     root           0 Mar  1  2025 .gitkeep
  5. -rw-------    1 root     root      160.0K Jan  1 00:03 coredump-mkfs.jffs2-342-11-188
  6. -rw-------    1 root     root      712.0K Jan  1 00:03 coredump-mkfs.jffs2-368-11-231
  7. -rw-r--r--    1 root     root      158.0K Jan  1 00:00 sample_ai_pcm.wav</div></article>
复制代码
  另外,此板卡硬件上有一个TF卡座,拿一个TF卡格式化后插入TF卡槽,会发现TF卡被挂载到mnt/extsd路径下,也能通过adb push将文件推送进去,但是使用tinyplay播放时,会提示无法打开声卡,由于缺少板卡对应的tinyplay源码,暂时无法确定原因,需等拿到代码后再详细确认原因。
声卡确认
  这点让我感觉比较懵,声卡里提示有I2S0声卡,但实际上硬件上并未接I2S0,感觉这个属于没有关干净的部分。
  1. root@(none):/# cat proc/asound/cards
  2. 0 [audiocodec     ]: audiocodec - audiocodec
  3.                       audiocodec
  4. 1 [sndi2s0        ]: sndi2s0 - sndi2s0
  5.                       sndi2s0</div></article>
复制代码
全志释放的资料
  目前看,官网上的信息应该还只是从PERF2板卡复制过来的,具体的内容,并未完全更新。至少音频部分的接口,官网资料写的是非常用的tinyplaytinymixtinycap这一套逻辑,而是arecordamixeraplay,实际上,板卡自带的程序并没有这套接口。
实际板卡适配的命令
tinymix
  查询和设置目前系统提供的音频相关的配置接口的工具。也可以发现,目前板卡提供的接口并不算复杂,学习成本不算高
  1. root@(none):/mnt/extsd# tinymix --help
  2. usage: tinymix [options] <command>
  3. options:
  4.         -h, --help        : prints this help message and exists
  5.         -v, --version     : prints this version of tinymix and exists
  6.         -D, --card NUMBER : specifies the card number of the mixer
  7. commands:
  8.         get NAME|ID       : prints the values of a control
  9.         set NAME|ID VALUE : sets the value of a control
  10.         controls          : lists controls of the mixer
  11.         contents          : lists controls of the mixer and their contents
  12. root@(none):/mnt/extsd# tinymix contents
  13. Number of controls: 19
  14. ctl     type    num     name                                    value
  15. 0       ENUM    1       tx hub mode                             , OffOn
  16. 1       ENUM    1       rx sync mode                            , OffOn
  17. 2       ENUM    1       DAC DRC Mode                            , OffOn
  18. 3       ENUM    1       DAC HPF Mode                            , OffOn
  19. 4       ENUM    1       ADC DRC0 Mode                           , OffOn
  20. 5       ENUM    1       ADC HPF0 Mode                           , OffOn
  21. 6       ENUM    1       ADC DRC1 Mode                           , OffOn
  22. 7       ENUM    1       ADC HPF1 Mode                           , OffOn
  23. 8       ENUM    1       LINEOUT Output Select                   DIFFER, SINGLE
  24. 9       ENUM    1       ADDA Loop Mode                          , OffDAC-to-ADC
  25. 10      INT     1       DAC Volume                              63 (range 0->63)
  26. 11      INT     1       DACL Volume                             180 (range 0->255)
  27. 12      INT     1       ADC Volume                              180 (range 0->255)
  28. 13      INT     1       LINEOUT Gain                            27 (range 0->31)
  29. 14      INT     1       MIC Gain                                31 (range 0->31)
  30. 15      BOOL    1       MIC Switch                              Off
  31. 16      BOOL    1       LINEOUT Switch                          On
  32. 17      BOOL    1       SPK Switch                              On
  33. 18      INT     1       Soft Volume Master                      130 (range 0->255)</div></article>
复制代码
tinypcminfo
  查询目前声卡的详细信息
  1. root@(none):/mnt/extsd# tinypcminfo
  2. Info for card 0, device 0:

  3. PCM out:
  4.       Access:   0x000009
  5.    Format[0]:   0x000444
  6.    Format[1]:   00000000
  7. Format Name:   S16_LE, S24_LE, S32_LE
  8.    Subformat:   0x000001
  9.         Rate:   min=0Hz max=4294967295Hz
  10.     Channels:   min=1           max=1
  11. Sample bits:   min=16          max=32
  12. Period size:   min=64          max=32768
  13. Period count:   min=1           max=8

  14. PCM in:
  15.       Access:   0x000009
  16.    Format[0]:   0x000444
  17.    Format[1]:   00000000
  18. Format Name:   S16_LE, S24_LE, S32_LE
  19.    Subformat:   0x000001
  20.         Rate:   min=0Hz max=4294967295Hz
  21.     Channels:   min=1           max=1
  22. Sample bits:   min=16          max=32
  23. Period size:   min=64          max=32768
  24. Period count:   min=1           max=8</div></article>
复制代码
tinycap
  基本上可以认为是直接录音的命令。系统默认文件系统无法写入,无法录音,只能在TF卡挂在目录下进行录音操作,录音前需将 MIC Switch 设置到on状态。
  1. root@(none):/mnt/extsd# tinycap
  2. Usage: tinycap {file.wav | --} [-D card] [-d device] [-c channels] [-r rate] [-b bits] [-p period_size] [-n n_periods] [-t time_in_seconds]

  3. Use -- for filename to send raw PCM to stdout
  4. root@(none):/mnt/extsd# tinymix set "MIC Switch" 1
  5. root@(none):/mnt/extsd# tinycap test.wav -D 0 -d 0 -c 1 -r 16000 -b 16 -t 20
  6. Capturing sample: 1 ch, 16000 hz, 16 bit
  7. Captured 323584 frames</div></article>
复制代码
  录音完成后,通过adb pull命令将录音文件导出,在使用audacity打开文件查看,发现已经录到音频文件。
tinyplay
  播放音频的工具。使用以下命令,板卡靠近mic的喇叭出声,另一个喇叭暂时无法出声(看原理图写的是默认使用靠近mic的喇叭,另一个喇叭LINEOUT串的电容未贴(CA25 CA10),因此无法出声,需要声,可以直接贴上两颗390nF的电容)
  1. root@(none):/mnt/extsd# tinyplay sample_ai_pcm.wav  -D 0 -d 0 -c 2
  2. playing 'sample_ai_pcm.wav': 2 ch, 48000 hz, 16 bit</div></article>
复制代码
tinyplay_hub
   暂时不清楚是什么功能,看帮助信息,其格式和tinyplay类似,但实际使用,并未出声什么的,而且命令运行后,没找到指令退出,只能进行系统断电才能终止运行。
  1. root@(none):/mnt/extsd# tinyplay_hub
  2. Usage: tinyplay_hub file.wav [-D card] [-d device] [-HD card_hub] [-Hd device_hub] [-p period_size] [-n n_periods]
  3. root@(none):/mnt/extsd# tinyplay_hub  sample_ai_pcm.wav  -D 0 -d 0 -c 2</div></article>
复制代码

总结
    1. 从目前的使用看,开源代码上,板卡支持的声卡逻辑,基本上alsa那套逻辑,可以在板卡上跑起来,但使用TF卡方式进行播放,tinyplay就挂掉了,这个需要等拿到源码针对性查看。
    2. 目前发现板载固件,插上tf卡开机,默认会跑到TF卡找系统,导致无法开机,暂时只能通过开机后插入TF卡的方式使用TF卡,也需等拿到代码后,更换uboot来解决。


分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

嵌入式软件
1966 积分
3 主题
+ 关注
热门推荐
关闭

站长推荐上一条 /3 下一条