This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TAS2563:麦克风的器件树配置

Guru**** 1782690 points
Other Parts Discussed in Thread: TAS2563, TAS2562, TAS2781, AM623
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1408060/tas2563-device-tree-configuration-for-microphone

器件型号:TAS2563
主题中讨论的其他器件: TAS2562TAS2781AM623

工具与软件:

您好!  

我将 TAS2563 编解码器用于音频、我将使用 TAS2562驱动器。  我已经添加了器件树配置、以便将编解码器用于扬声器、并可以利用"aplay"。 但是、我正在尝试配置编解码器以用于麦克风、但无法确定如何设置麦克风的 route 属性、无法在 tas2562驱动程序中看到值。

您能否指导我如何更新设备树以启用麦克风支持。

下面是我使用的器件树配置。

       sound {
                compatible = "simple-audio-card";
                simple-audio-card,name = "AM62x-SKEVM";
                simple-audio-card,widgets =
                        "Speaker",      "Internal Speaker",
                simple-audio-card,routing =
                        "Internal Speaker",     "OUT",
                simple-audio-card,format = "i2s";
                simple-audio-card,bitclock-master = <&sound_master>;
                simple-audio-card,frame-master = <&sound_master>;
                simple-audio-card,mclk-fs = <256>;
                simple-audio-card,bitclock-inversion;

                sound_master: simple-audio-card,cpu {
                        sound-dai = <&mcasp2>;
                        dai-tdm-slot-num = <2>;
                        dai-tdm-slot-width = <32>;
                };

                simple-audio-card,codec {
                        sound-dai = <&tas2563>;
                };
        };
        tas2563: tas2563@4c{
                status = "okay";
                reg = <0x4c>;
                compatible = "ti,tas2563";
                #sound-dai-cells = <0>;
                ti,imon-slot-no = <0>;
                ti,vmon-slot-no = <0>;
                ti,asi-format = <0>;
        };

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sakshi:

    对于 TAS2563、我认为您必须使用此驱动程序而不是 TAS2562: lpaa-android-drivers/tasdevice-linux-driver - Unnamed repository;编辑此文件"destination "以命名存储库。

    我将复制这里的软件专家以便听取进一步的意见。

    此致、
    伊万·萨拉扎尔
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请告诉我您使用的内核版本是什么?  

    请使用 git Pull tas2781驱动程序从最新的内核主线。 该代码支持 tas2563。  tas2781-i2c.c«codecs«soc«sound- kernel/git/torvalds/linux.git - linux 内核源树

    或者

    您还可以使用  CGit @ Texas Instruments - Open Source Git Repositories - git.TI.com/cgit、该代码还支持工厂校准。 我们很快会将工厂代码上游传输到 kernel.org。 在本分支中是指导原则,它教您如何注册声卡。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我使用的是 内核版本6.6

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果需要、我们会尽快答复您。

    此致、
    伊万·萨拉扎尔
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、我曾尝试将 tas2781-i2c.c«codecs«soc«sound- kernel/git/Torvalds/linux.git - Linux 内核源代码树驱动程序集成到我们的内核以支持 tas2563、但我在编译驱动程序时遇到了很多错误。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为什么不在此处分享编译错误日志? 还有一点、您会这么亲切并详细描述如何编译驱动程序吗? 我认为您的编译方法有问题。 此驱动程序代码已 由许多 Linux 开发人员编译。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我发现我尚未更新某些头文件、因此无法编译驱动程序。 现在能够编译和加载它。 尝试使用 tas2563进一步测试。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、大家好

    请详细描述您的问题。 您无法更新哪些头文件? 并请描述您如何编译内核。 您的编译器是什么?您的内核将在哪个平台上运行? 到目前为止、我还没有得到它们。 以下是有关如何编译 BBB 和 respberry paltforms 的驱动程序和内核的指南。 希望这对您有所帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉耽误你的时间。 我错过了更新 tas2781-i2c 驱动程序中包含的头文件(tas2781.h 和 tas2781-tlv.h)、我更新了这些文件、并因此能够正确编译它。 我使用的是 gcc ARM 编译器。 我使用 AM623平台和内核版本6.6.15。

    我可以加载该驱动程序、但其中显示加载 tas2563RCA1固件时出错、我如何添加 tas2563RCA1、我在 Linux 固件上找不到它。 我可以从哪里获得它?

    $ sudo dmesg | grep tasdev
    [    7.303297] tasdev-codec 3-004c: Looking up irq-gpio property failed -22
    [    7.333458] tasdev-codec 3-004c: firmware: failed to load tas2563RCA1.bin (-2)
    [    7.341315] tasdev-codec 3-004c: firmware: failed to load tas2563RCA1.bin (-2)
    [    7.348965] tasdev-codec 3-004c: Direct firmware load for tas2563RCA1.bin failed with error -2
    [    7.349004] tasdev-codec 3-004c: Failed to read tas2563RCA1.bin
    

    播放声音时:

    $ sudo aplay sample.wav
    [  368.949242] tasdev-codec 3-004c: ASoC: error at snd_soc_dai_startup on tas2781_codec: -22
    aplay: main:831: audio open error: Invalid argument
    
    
    $ sudo aplay -L
    null
        Discard all samples (playback) or generate zero samples (capture)
    hw:CARD=AM623GTC650C,DEV=0
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Direct hardware device without any conversions
    plughw:CARD=AM623GTC650C,DEV=0
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Hardware device with all software conversions
    default:CARD=AM623GTC650C
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Default Audio Device
    sysdefault:CARD=AM623GTC650C
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Default Audio Device
    dmix:CARD=AM623GTC650C,DEV=0
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Direct sample mixing device
    
    $ sudo arecord -L
    null
        Discard all samples (playback) or generate zero samples (capture)
    hw:CARD=AM623GTC650C,DEV=0
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Direct hardware device without any conversions
    plughw:CARD=AM623GTC650C,DEV=0
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Hardware device with all software conversions
    default:CARD=AM623GTC650C
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Default Audio Device
    sysdefault:CARD=AM623GTC650C
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Default Audio Device
    dsnoop:CARD=AM623GTC650C,DEV=0
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Direct sample snooping device
    
    $ sudo lsmod | grep snd
    snd_soc_simple_card    20480  0
    snd_soc_simple_card_utils    24576  1 snd_soc_simple_card
    snd_soc_tas2781_i2c    24576  1
    snd_soc_davinci_mcasp    40960  2
    snd_soc_ti_udma        12288  1 snd_soc_davinci_mcasp
    snd_soc_ti_edma        12288  1 snd_soc_davinci_mcasp
    snd_soc_tas2781_fmwlib    32768  1 snd_soc_tas2781_i2c
    snd_soc_ti_sdma        12288  1 snd_soc_davinci_mcasp
    snd_soc_tas2781_comlib    16384  2 snd_soc_tas2781_i2c,snd_soc_tas2781_fmwlib
    snd_soc_core          221184  7 snd_soc_tas2781_i2c,snd_soc_davinci_mcasp,snd_soc_ti_sdma,snd_soc_ti_edma,snd_soc_ti_udma,snd_soc_simple_card_utils,snd_soc_simple_card
    snd_pcm_dmaengine      12288  1 snd_soc_core
    snd_pcm               118784  5 snd_soc_tas2781_i2c,snd_soc_davinci_mcasp,snd_soc_simple_card_utils,snd_soc_core,snd_pcm_dmaengine
    snd_timer              40960  1 snd_pcm
    snd                    90112  4 snd_soc_tas2781_i2c,snd_timer,snd_soc_core,snd_pcm
    soundcore              12288  1 snd
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sakshi:

    我们在上海的团队目前正在度假,我们将在度假后尽快与您联系。

    此致、
    伊万·萨拉扎尔
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请下载 tas2563-1amp-reg.json、jsn« regbin - tas2781-linux-drivers/tas2781-linux-driver - Unnamed repository;编辑此文件'escription"以命名存储库。 并使用 regbin 工具(git.ti.com/.../Non_Integrated_Bin_Tool_ 1.3.7.zip) 将其转换为 tas2563RCA1.bin 。 regbin 指南位于 https://git.ti.com/cgit/tas2781-linux-drivers/tas2781-linux-driver/plain/regbin/toolset/Regbin%20Tool%20User%20Guideline.pdf 中

    至于如何将 regbin 编译到映像中、请翻到  Integrated SmartAMP Linux 指南 driver.pdf (适用于 Integrated SmartAMP Linux driver.pdf 的 git.ti.com/.../Guideline)中的第28页。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我从  指南中提到的 regbin 工具 tas2563-1amp-reg.json usinf 生成了 tas2563RCA1.bin。

    它现在加载。 它进一步检查 tas2563_coef.bin ,但我认为它不应该引起任何问题.

    $ sudo dmesg | grep tasdev
    [7.334910]   tasdev-codec 3-004C:查找 IRQ-GPIO 属性失败-22.
    [7.371598]   tasdev-codec 3-004C:固件:直接加载固件 tas2563RCA1.bin
    [7.372429]   tasdev-codec 3-004C:固件:加载 tas2563_coef.bin 失败(-2)
    [7.381370]   tasdev-codec 3-004C:固件:加载 tas2563_coef.bin 失败(-2)
    [7.389178]   tasdev-codec 3-004C:tas2563_coef.bin 的直接固件加载失败、错误-2
    [7.389230]   tasdev-codec 3-004C:tasdevice_dsp_parser:load tas2563_coef.bin error
    [7.397334]   tasdev-codec 3-004C:dspfw load tas2563_coef.bin error

    但当我尝试播放或录制任何声音时,它显示内核恐慌。

    user@prometheus:~$ sudo amixer
    Simple mixer control 'Speaker Digital',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 255
      Mono: 243 [95%] [0.00dB]
    Simple mixer control 'Speaker Force Firmware Load',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Speaker Profile Id',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 7
      Mono: 0 [0%]
    
    user@prometheus:~$ sudo aplay -L
    null
        Discard all samples (playback) or generate zero samples (capture)
    hw:CARD=AM623GTC650C,DEV=0
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Direct hardware device without any conversions
    plughw:CARD=AM623GTC650C,DEV=0
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Hardware device with all software conversions
    default:CARD=AM623GTC650C
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Default Audio Device
    sysdefault:CARD=AM623GTC650C
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Default Audio Device
    dmix:CARD=AM623GTC650C,DEV=0
        AM623-GTC650C, 2b20000.audio-controller-tas2781_codec tas2781_codec-0
        Direct sample mixing device
    
    user@prometheus:~$ sudo aplay sample.wav
    Playing WAVE 'sample.wav' : Signed 16 bit Little Endian, Rate 44[  120.130578] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000014
    100 Hz, Stereo
    [  120.141461] Mem abort info:
    [  120.145414]   ESR = 0x0000000096000004
    [  120.149367]   EC = 0x25: DABT (current EL), IL = 32 bits
    [  120.154838]   SET = 0, FnV = 0
    [  120.158005]   EA = 0, S1PTW = 0
    [  120.161206]   FSC = 0x04: level 0 translation fault
    [  120.166282] Data abort info:
    [  120.169275]   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
    [  120.174914]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
    [  120.180076]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    [  120.185562] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000084f8d000
    [  120.192152] [0000000000000014] pgd=0000000000000000, p4d=0000000000000000
    [  120.199164] Internal error: Oops: 0000000096000004 [#1] SMP
    [  120.204845] Modules linked in: usb_f_acm u_serial usb_f_rndis u_ether ip6t_REJECT nf_reject_ipv6 ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nft_compat nf_tables libcrc32c nfnetlink cc33xx cdns_csi2rx v4l2_fwnode aes_ce_blk aes_ce_cipher crct10dif_ce crct10dif_common polyval_ce polyval_generic ghash_ce sha2_ce sha256_arm64 snd_soc_simple_card sha1_ce j721e_csi2rx optee snd_soc_davinci_mcasp snd_soc_simple_card_utils snd_soc_tas2781_i2c videobuf2_dma_contig snd_soc_ti_udma cc33xx_sdio snd_soc_tas2781_fmwlib snd_soc_ti_edma videobuf2_memops tee snd_soc_tas2781_comlib snd_soc_ti_sdma videobuf2_v4l2 leds_gpio snd_soc_core videobuf2_common v4l2_async snd_pcm_dmaengine k3_j72xx_bandgap snd_pcm videodev ina2xx_adc ti_ads1118 ti_tla2518 snd_timer kfifo_buf mc snd industrialio ina2xx soundcore st1232 evdev libcomposite dm_mod configfs ip_tables x_tables autofs4 ext4 crc16 mbcache jbd2 crc32c_generic panfrost drm_shmem_helper gpu_sched governor_simpleondemand cls_cgroup
    [  120.205216]  xhci_plat_hcd xhci_hcd usbcore dwc3 ulpi udc_core roles usb_common gpio_regulator fixed sdhci_am654 sdhci_pltfm cqhci dwc3_am62 sdhci rtc_ti_k3 ti_am65_cpsw_nuss phylink k3_cppi_desc_pool libphy cdns_dphy_rx phy_gmii_sel spi_omap2_mcspi
    [  120.330790] CPU: 2 PID: 416 Comm: aplay Tainted: G        W          6.6+unreleased-gtc650c-arm64 #1  Apertispro 6.6.15-2+apertis2+prometheus9~~+1+g793f2c502
    [  120.350628] Hardware name: TI AM6234 BOSCH Prometheus GTC650C (DT)
    [  120.359554] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [  120.369334] pc : tasdevice_tuning_switch+0x34/0x630 [snd_soc_tas2781_fmwlib]
    [  120.379259] lr : tasdevice_dapm_event+0x48/0x70 [snd_soc_tas2781_i2c]
    [  120.388492] sp : ffff8000822fb710
    [  120.394582] x29: ffff8000822fb710 x28: 000000000000000d x27: 00000000ffffffff
    [  120.404519] x26: 0000000000000000 x25: 0000000000000000 x24: ffff80007a2279f8
    [  120.414475] x23: ffff000004f3e140 x22: 00000000ffffffff x21: ffff000000c30080
    [  120.424435] x20: 0000000000000000 x19: ffff000000c30080 x18: 0000000000000000
    [  120.434384] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
    [  120.444306] x14: 0000000000000000 x13: 0000000000000000 x12: ffff800081aeeb98
    [  120.454144] x11: 0000000000000001 x10: 0000000000000ba0 x9 : ffff80007a1a7660
    [  120.464021] x8 : ffff00000f90b000 x7 : 0000000000000000 x6 : 0000000000000000
    [  120.473898] x5 : ffff000006179080 x4 : ffff80007a227978 x3 : 0000000000000000
    [  120.483697] x2 : 0000000000000002 x1 : 0000000000000000 x0 : ffff000000c30080
    [  120.493430] Call trace:
    [  120.498377]  tasdevice_tuning_switch+0x34/0x630 [snd_soc_tas2781_fmwlib]
    [  120.507578]  tasdevice_dapm_event+0x48/0x70 [snd_soc_tas2781_i2c]
    [  120.516126]  dapm_seq_check_event+0x124/0x210 [snd_soc_core]
    [  120.524236]  dapm_seq_run_coalesced+0x138/0x1d8 [snd_soc_core]
    [  120.532401]  dapm_seq_run+0xc0/0x3b8 [snd_soc_core]
    [  120.539505]  dapm_power_widgets+0x5a4/0x930 [snd_soc_core]
    [  120.547192]  snd_soc_dapm_stream_event+0x104/0x1a0 [snd_soc_core]
    [  120.555412]  __soc_pcm_prepare+0x68/0x178 [snd_soc_core]
    [  120.562823]  soc_pcm_prepare+0x38/0x68 [snd_soc_core]
    [  120.569914]  snd_pcm_do_prepare+0x38/0x60 [snd_pcm]
    [  120.576791]  snd_pcm_action_single+0x50/0xb8 [snd_pcm]
    [  120.583825]  snd_pcm_action_nonatomic+0xa8/0xb8 [snd_pcm]
    [  120.591070]  snd_pcm_prepare+0x90/0xd8 [snd_pcm]
    [  120.597482]  snd_pcm_common_ioctl+0xf5c/0x1820 [snd_pcm]
    [  120.604534]  snd_pcm_ioctl+0x38/0x58 [snd_pcm]
    [  120.610692]  __arm64_sys_ioctl+0xb4/0x100
    [  120.616364]  invoke_syscall+0x78/0x108
    [  120.621734]  el0_svc_common.constprop.0+0x48/0xf0
    [  120.628086]  do_el0_svc+0x24/0x38
    [  120.632978]  el0_svc+0x48/0x138
    [  120.637690]  el0t_64_sync_handler+0x100/0x130
    [  120.643620]  el0t_64_sync+0x190/0x198
    [  120.648851] Code: b941f814 7100045f 54000320 350001a1 (79402862)
    [  120.656507] ---[ end trace 0000000000000000 ]---

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您会向我提供整个内核日志吗?

    您是否使用过 Linux 社区中的最新代码?

    该代码可以在该分支 kernel/git/broonie/sound.git - ASOC 中下载。

    我们先进行播放测试。 播放前、您是否在  tas2563RCA1.bin 中选择了配置文件 ID?

    例如以下命令

    # amixer cset numid=2,iface=mixer, name='TASDEVICE Profile id' 0

    # aplay --device="hw:0" test.wav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、好消息! 通过使用这里的驱动程序(https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/tree/)、我现在可以使用 arecord 和 aplay。 谢谢。

    user@prometheus:/$ sudo arecord -f S16_LE -d 10 -r 44100 --device="hw:0,0" /home/user/record1.wav
    Recording WAVE '/home/user/record1.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    user@prometheus:/$ ls -l /home/user/*.wav
    -rw-r--r-- 1 user user 882044 Jul  4 05:02 /home/user/output.wav
    -rw-r--r-- 1 root root 882044 Jul  4 05:05 /home/user/record1.wav
    user@prometheus:/$ sudo aplay --device="hw:0,0" /home/user/record1.wav
    Playing WAVE '/home/user/record1.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    user@prometheus:/$ sudo aplay --device="hw:0,0" /home/user/record2.wav
    /home/user/record2.wav: No such file or directory
    user@prometheus:/$ sudo arecord -f S16_LE -d 10 -r 44100 --device="hw:0,0" /home/user/record2.wav
    Recording WAVE '/home/user/record2.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    user@prometheus:/$ sudo arecord -f S16_LE -d 10 -r 44100 --device="hw:0,0" /home/user/record3.wav
    Recording WAVE '/home/user/record3.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    user@prometheus:/$ sudo arecord -f S16_LE -d 10 -r 44100 --device="hw:0,0" /home/user/record4.wav
    Recording WAVE '/home/user/record4.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    user@prometheus:/$ sudo arecord -f S16_LE -d 10 -r 44100 --device="hw:0,0" /home/user/record5.wav
    Recording WAVE '/home/user/record5.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    user@prometheus:/$ ls -l /home/user/*.wav
    -rw-r--r-- 1 user user 882044 Jul  4 05:02 /home/user/output.wav
    -rw-r--r-- 1 root root 882044 Jul  4 05:05 /home/user/record1.wav
    -rw-r--r-- 1 root root 882044 Jul  4 05:08 /home/user/record2.wav
    -rw-r--r-- 1 root root 882044 Jul  4 05:08 /home/user/record3.wav
    -rw-r--r-- 1 root root 882044 Jul  4 05:08 /home/user/record4.wav
    -rw-r--r-- 1 root root 882044 Jul  4 05:08 /home/user/record5.wav
    user@prometheus:/$ sudo aplay /home/user/record5.wav
    Playing WAVE '/home/user/record5.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    

    但有时会出现超限问题。

    user@prometheus:/$ sudo arecord -f S16_LE -d 10 -r 44100 --device="hw:0,0" /tmp/sam3.wav
    Recording WAVE '/tmp/sam3.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
    overrun!!! (at least 0.065 ms long)
    overrun!!! (at least 0.128 ms long)
    overrun!!! (at least 0.063 ms long)
    overrun!!! (at least 0.054 ms long)
    overrun!!! (at least 0.058 ms long)
    overrun!!! (at least 0.069 ms long)
    overrun!!! (at least 0.052 ms long)
    overrun!!! (at least 0.054 ms long)
    overrun!!! (at least 0.048 ms long)
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以在此处分享 wav 文件吗? 我将检查音频格式。 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    以前我没有扬声器硬件、所以我无法测试声音。 我今天连接了扬声器和麦克风、并尝试播放一个 示例音频文件。 它播放文件并记录文件,但,我听不到任何声音。  

    检查日志它显示"ti-uDMA 485c0100.dma-controller:chan- teardown timeout!"。 如何解决此问题?

    附加以下日志:

    user@prometheus:/$ sudo aplay -D hw:0,0 sample.wav
    Playing WAVE 'sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    
    user@prometheus:/$ sudo dmesg | grep ti-udma
    [    1.511399] ti-udma 485c0100.dma-controller: Number of rings: 82
    [    1.514769] ti-udma 485c0100.dma-controller: Channels: 48 (bchan: 18, tchan: 12, rchan: 18)
    [    1.518677] ti-udma 485c0000.dma-controller: Number of rings: 150
    [    1.524806] ti-udma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15)
    [   59.165912] ti-udma 485c0100.dma-controller: chan0 teardown timeout!
    [  109.149924] ti-udma 485c0100.dma-controller: chan0 teardown timeout!
    [  112.989891] ti-udma 485c0100.dma-controller: chan0 teardown timeout!
    
    user@prometheus:/$ sudo aplay -D hw:0,0 sample.wav
    Playing WAVE 'sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    user@prometheus:/$ sudo dmesg | grep ti-udma
    [    1.511399] ti-udma 485c0100.dma-controller: Number of rings: 82
    [    1.514769] ti-udma 485c0100.dma-controller: Channels: 48 (bchan: 18, tchan: 12, rchan: 18)
    [    1.518677] ti-udma 485c0000.dma-controller: Number of rings: 150
    [    1.524806] ti-udma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15)
    [   59.165912] ti-udma 485c0100.dma-controller: chan0 teardown timeout!
    [  109.149924] ti-udma 485c0100.dma-controller: chan0 teardown timeout!
    [  112.989891] ti-udma 485c0100.dma-controller: chan0 teardown timeout!
    [  141.981890] ti-udma 485c0100.dma-controller: chan0 teardown timeout!
    
    user@prometheus:/$ amixer
    Simple mixer control 'Speaker Digital',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 255
      Mono: 247 [97%] [2.00dB]
    Simple mixer control 'Speaker Force Firmware Load',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Speaker Profile Id',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 7
      Mono: 5 [71%]
    user@prometheus:/$
    

    这是我的声卡配置:

           codec_audio: sound {
                    compatible = "simple-audio-card";
                    simple-audio-card,name = "AM623-GTC650C";
                    simple-audio-card,widgets =
                            "Speaker",      "Internal Speaker",
                            "Microphone",   "Internal Mic";
                    simple-audio-card,routing =
                            "Internal Speaker",     "OUT",
                            "DMIC",                 "Internal Mic";
                    simple-audio-card,format = "i2s";
                    simple-audio-card,bitclock-master = <&sound_master>;
                    simple-audio-card,frame-master = <&sound_master>;
                    simple-audio-card,mclk-fs = <256>;
                    simple-audio-card,bitclock-inversion;
    
                    sound_master: simple-audio-card,cpu {
                            sound-dai = <&mcasp2>;
                            dai-tdm-slot-num = <2>;
                            dai-tdm-slot-width = <32>;
                    };
    
                    simple-audio-card,codec {
                            sound-dai = <&tas2563>;
                    };
            };
            
            
    &mcasp2 {
            status = "okay";
            #sound-dai-cells = <0>;
    
            pinctrl-names = "default";
            pinctrl-0 = <&main_mcasp2_pins_default>;
    
            op-mode = <0>;          /* MCASP_IIS_MODE */
            tdm-slots = <2>;
    
            serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
                   1 0 2 0
                   0 0 0 0
                   0 0 0 0
                   0 0 0 0
            >;
            tx-num-evt = <32>;
            rx-num-evt = <32>;
    };
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    播放期间、请使用示波器测量并捕获 I2S 位时钟和 WS 时钟、并上传波形。 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在播放音频时添加 BCLK 和 wclk 波形:

    BCLK:

    wclk:

    另外供参考、我以前 启用了 tas2562.c 扬声器驱动程序、而当我尝试播放声音时、它也从命令行播放、但我听不到声音、它显示"ti-uDMA 485c0100.dma-控制器:chan- teardown timeout!"。 不确定这是否与配置有关?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、大家好

    你会这么善良,让我知道 两个 CLKS 的频率是什么?

    再提醒一点、请在播放期间转储寄存器。 如下所示

    i2cset -y -f 0 4c 0 0
    i2cset -y -f 0 4c 7f 0
    i2cset -y -f 0 4c 0 0
    i2cdump -y -f 0 4c
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    输出电容损耗:

    user@prometheus:~$ i2cset -y -f 3 0x4c 0 0
    user@prometheus:~$ i2cset -y -f 3 0x4c 0x7f 0
    user@prometheus:~$ i2cset -y -f 3 0x4c 0 0
    user@prometheus:~$ sudo aplay -D hw:0,0 sample.wav 
    Playing WAVE 'sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    user@prometheus:~$ i2cdump -y -f 3 0x4c
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 00 00 0e 20 c6 22 09 02 7e 10 13 42 40 44 05 06    ..? ?"??~??B@D??
    10: 07 27 12 76 01 2e 60 0e 0c 00 fc a6 df ff ff 04    ?'?v?.`??.???..?
    20: 00 00 80 00 04 00 00 80 00 80 00 00 00 8d 00 a8    ..?.?..?.?...?.?
    30: 99 40 81 34 4b 74 0d 00 0d 0c be 58 68 08 10 00    ?@?4Kt?.???Xh??.
    40: 76 06 18 c0 10 21 00 b4 ac 00 00 00 00 00 00 00    v????!.??.......
    50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    70: 00 00 00 f0 00 0f 00 00 80 00 00 00 00 10 ba 00    ...?.?..?....??.
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    user@prometheus:~$ 
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、团队:

    有更新吗? 我仍然在为这个问题感到苦恼。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、团队成员:

    我甚至尝试更改 amixer 控件和音量设置,这也没有帮助。 通过编解码器引脚、我可以在播放音频时在 BCLK 和 wclk 上看到信号。 您能告诉我、如果我遗漏了什么内容或者您能提供其他建议吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、大家好

    b0p0r2为0xe、这意味着您在 tas2563处于关断模式时转储寄存器。

    请在播放期间转储寄存器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    回放期间的输出:

    user@prometheus:~$ i2cdump -y -f 3 0x4c
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 00 00 00 20 c6 22 13 02 00 10 f1 46 44 04 05 06    ... ?"??.??FD???
    10: 07 27 12 76 01 2e 60 0e 0c 00 fc a6 df ff ff 04    ?'?v?.`??.???..?
    20: 00 00 80 00 04 00 00 80 00 80 00 00 00 8c c0 a6    ..?.?..?.?...???
    30: 99 40 81 34 4b 74 09 00 0d 0c be 58 68 08 10 00    ?@?4Kt?.???Xh??.
    40: 76 41 d8 c0 10 21 00 4f 6c 00 00 00 00 00 00 00    vA???!.Ol.......
    50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    70: 00 00 00 f0 00 0f 00 00 80 00 00 00 00 10 e4 00    ...?.?..?....??.
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    

    播放时、我仍然听不到扬声器发出的任何声音。

    我收到"ti-udma 485c0100.dma-controller:chan- teardown timeout" 同时从命令行播放任何音频。 我发现了一个修补程序可以修复这个错误: https://lore.kernel.org/lkml/20230821104003.3001021-1-vigneshr@ti.com/ 我添加了这些更改,与此,我没有得到 treardown 超时错误时播放,它正在正常地播放命令行,但没有声音可以听到。

    您能告诉我可能出现了什么问题吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请注意 b0p0r0x11=0x27

    据透露、音频时钟错误、见自数据表摘录的下图

    tas2563未从平台检测到采样率。

    上次您捕获了音频时钟波形、但我不知道它们的频率在地球上是什么。

    您会不会这么客气、使用示波器获得他们的频率、就像下面由其他工程师捕获的 pic? 我不知道它的频率,而且它的占空比。 谢谢。