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.

[参考译文] AM68A:使用 INMP441麦克风时、AM68A 上的 McASP1发生引脚冲突错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1497372/am68a-pin-conflict-error-with-mcasp1-on-am68a-when-using-inmp441-microphone

部件号:AM68A
Thread 中讨论的其他器件: SysConfigSK-AM68TDA4VM、AM68

工具/软件:

我正在使用 AM68A 电路板、并尝试 I²S 使用 McASP1通过 I ² C 连接 INMP441麦克风。 以下是我的引脚连接:

  • VDD →引脚17 (3.3V)

  • GND →引脚6

  • SCK/BCLK (I²S Δ R_BCLK) 0 Ω 引脚→(I2S_SCLK)

  • WS/LRC (μ I²S) 0 Ω 引脚→(I2S_FS)

  • I²S (μ V_DIN) 0 Ω 引脚→(I2S_DIN)

  • SEL/LR →引脚39

建立这些连接后、我运行了以下命令:

dmesg | grep -i mcasp

遇到以下错误:

[ 7.911951] pinctrl-single 11c000.pinctrl: pin PIN46 already requested by 600000.gpio; cannot claim for 2b10000.mcasp
[ 7.926309] pinctrl-single 11c000.pinctrl: pin-46 (2b10000.mcasp) status -22
[ 7.935282] pinctrl-single 11c000.pinctrl: could not request pin 46 (PIN46) from group mcasp1-default-pins on device pinctrl-single
[ 7.947510] davinci-mcasp 2b10000.mcasp: Error applying setting, reverse things back

检查时 k3-am68-sk.dts 、我找到了 McASP1引脚配置的以下条目:

mcasp1-default-pins { pinctrl-single,pins = <0xb8 0x01 0xbc 0x01 0xc0 0x40001 0xb4 0x01>; phandle = <0x6a>; };

似乎是这样 PIN46已分配给6000.GPIO 、阻止 McASP1获取。

问题:

  1. 如何解决此引脚冲突以启用 McASP1的 I²S 运行?

  2. 我可以将 McASP1重新映射到器件树中的不同引脚、还是需要先从 GPIO 释放 PIN46?

  3. 如果 McASP1需要 PIN46、我应该在中进行哪些修改 器件树中 正确配置 pinmux 设置?

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

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

    尊敬的 Mohammed:

    要专门使用 McASP1、其引脚必须 由器件树中的 GPIO 外设释放。 器件上没有可使用 McASP1的替代引脚。

    要更改 pinmux 设置、您可以使用我们的在线 SysConfig Pinmux 工具(PMT)、该工具根据您的选择输出 devicetree.dtsi 文件以及 pinmux 配置。 此处是 指向 AM68A 的 SysConfig PMT 的直接链接。 或者、您可以使用器件数据表中的引脚属性表确定正确的多路复用模式。  

    示例输出:

    /* This file was auto-generated by TI PinMux on 4/4/2025 at 11:57:15 AM. */
    /* This file should only be used as a reference. Some pins/peripherals, */
    /* depending on your use case, may need additional configuration. */
    
    &main_pmx0 {
        mymcasp1_pins_default: mymcasp1-default-pins {
            pinctrl-single,pins = <
                J721S2_IOPAD(0x084, PIN_INPUT, 3) /* (AA28) MCASP0_AXR5.MCASP1_ACLKR */
                J721S2_IOPAD(0x0b8, PIN_INPUT, 1) /* (AA24) MCASP1_ACLKX */
                J721S2_IOPAD(0x088, PIN_INPUT, 3) /* (AD27) MCASP0_AXR6.MCASP1_AFSR */
                J721S2_IOPAD(0x0bc, PIN_INPUT, 1) /* (V28) MCASP1_AFSX */
                J721S2_IOPAD(0x0c0, PIN_INPUT, 1) /* (T28) MCASP1_AXR0 */
                J721S2_IOPAD(0x04c, PIN_INPUT, 1) /* (V27) MCASP1_AXR1 */
                J721S2_IOPAD(0x050, PIN_INPUT, 1) /* (W27) MCASP1_AXR2 */
                J721S2_IOPAD(0x0b0, PIN_INPUT, 1) /* (AD26) MCASP1_AXR3 */
                J721S2_IOPAD(0x0b4, PIN_INPUT, 1) /* (U25) MCASP1_AXR4 */
            >;
        };
    
    };
    
    

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

    我不确定放置此配置文件的确切位置以及添加后如何重新构建设备树、

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

    尊敬的 Mohammed:

    应可以  使用 k3-j721s2-common-proc-board.dts  作为 McASP 节点的参考来修改 k3-am68-sk-base-board.dts。

    要构建器件树并将其安装到 microSD 卡上、请遵循此处的指南: 适用于 AM68的 Processor SDK Linux:3.2.1。 用户指南的链接。 具体来说、请遵循  3.2.1.5.2.编译器件树二进制文件、然后执行以下操作  3.2.1.7.1.安装内核映像和设备树二进制文件。

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


    根据 SK-AM68处理器入门套件用户指南、40引脚接头提供以下 McASP1信号、这些信号看起来仅支持一个麦克风:

    Pin No  | Pin Name   | Description              | Direction  
    --------|------------|--------------------------|-----------
    12      | I2S_SCLK   | McASP1 ACLKX (AA24)      | Bi-Directional  
    35      | I2S_FS     | McASP1 FSX (V28)         | Bi-Directional  
    38      | I2S_DIN    | McASP1 AXR (T28)         | Bi-Directional  
    40      | I2S_DOUT   | McASP1 AXR (U25)         | Bi-Directional  
    

    但是、McASP1支持5个串行器。 这是否意味着我可以连接5个麦克风? 如果是、如何通过40引脚接头配置额外的 AXR 引脚?


    IAM 使用 EVM 板、而不是定制板。

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

    尊敬的 Mohammed:

    这似乎与本主题中提出的问题重复: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1470472/processor-sdk-am68-audio-support/5731757#5731757

    我们继续讨论。

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

    您好、Mark L.
    我正在使用 AM68A 电路板、并更改了器件树源(DTS)文件、以便集成 ICS43432数字麦克风。 我修改了位于以下 dts 文件:

    yocto-build/build/arago-tmp-default-glibc/work-shared/am68-sk/kernel-source/arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts
    

    我的修改:

    &main_pmx0 {
        mymcasp1_pins_default: mymcasp1-default-pins {
            pinctrl-single,pins = <
                J721S2_IOPAD(0x084, PIN_INPUT, 3) /* (AA28) MCASP0_AXR5.MCASP1_ACLKR */
                J721S2_IOPAD(0x0b8, PIN_INPUT, 1) /* (AA24) MCASP1_ACLKX */
                J721S2_IOPAD(0x088, PIN_INPUT, 3) /* (AD27) MCASP0_AXR6.MCASP1_AFSR */
                J721S2_IOPAD(0x0bc, PIN_INPUT, 1) /* (V28) MCASP1_AFSX */
                J721S2_IOPAD(0x0c0, PIN_INPUT, 1) /* (T28) MCASP1_AXR0 */
                J721S2_IOPAD(0x04c, PIN_INPUT, 1) /* (V27) MCASP1_AXR1 */
                J721S2_IOPAD(0x050, PIN_INPUT, 1) /* (W27) MCASP1_AXR2 */
                J721S2_IOPAD(0x0b0, PIN_INPUT, 1) /* (AD26) MCASP1_AXR3 */
                J721S2_IOPAD(0x0b4, PIN_INPUT, 1) /* (U25) MCASP1_AXR4 */
            >;
        };
    };
    
    &mcasp1 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&mymcasp1_pins_default>;
    
        op-mode = <0>;
        tdm-slots = <2>;
        serial-dir = <1>; // AXR0 input
        tx-num-evt = <1>;
        rx-num-evt = <1>;
    };
    
    &sound {
        status = "okay";
    
        simple-audio-card,name = "ICS43432 Mic";
        simple-audio-card,format = "i2s";
        simple-audio-card,bitclock-master = <&cpu_dai>;
        simple-audio-card,frame-master = <&cpu_dai>;
    
        simple-audio-card,cpu {
            sound-dai = <&mcasp1>;
        };
    
        cpu_dai: simple-audio-card,codec {
            sound-dai = <&dummy_codec>;
        };
    };
    
    dummy_codec: dummy-codec {
        compatible = "linux,dummy-codec";
    };
    

    构建和闪存步骤:

    修改 DTS 后、我使用以下命令重建图像:

    MACHINE="am68-sk" bitbake -k tisdk-edgeai-image
    

    然后、我将映像刷写到 SD 卡并引导 AM68A 电路板。

    麦克风连接(ICS43432):

    • VCC :3.3V

    • GND :接地

    • L/R :连接到 GND (选择左声道)

    • SCK : PIN 12

    • WS :PIN 35

    • SD 第38章

    问题:

    系统未检测到麦克风。 我想确认:

    1. k3-am68-sk-base-board.dts用于为 AM68A 电路板配置 McASP1的正确文件是否正确?

    2. 是否需要进行任何其他修改?

    3. 我是否需要启用或修改与dummy_codec或 McASP1相关的任何音频驱动程序或内核配置才能正常工作?


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

    尊敬的 Mohammed:

    您能否按照该主题(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1501141/tda4vm-mcasp1-can-not-work)中概述的调试步骤进行操作、看看它是否适合您? 这适用于 TDA4VM 器件、但更改应与 AM68A 类似。

    是否是k3-am68-sk-base-board.dts用于为 AM68A 板配置 McASP1的正确文件?

    根据链接的线程、似乎创建了.dtso 文件来配置 McASP1、而不是修改 k3-am68-sk-base-board.dts。

    [引述 userid="643711" url="~/support/processors-group/processors/f/processors-forum/1497372/am68a-pin-conflict-error-with-mcasp1-on-am68a-when-using-inmp441-microphone/5803896 #5803896"]
    • 是否需要进行任何其他修改?

    • 我是否需要启用或修改与dummy_codec或 McASP1相关的任何音频驱动程序或内核配置才能正常工作?

    [/报价]

    在我链接的线程中、似乎您可能需要添加 dt 绑定虚拟编解码器。

    请在这里回答、让我知道这对您来说是怎样的。

    此致、
    标记

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


    您好、
    是否可以共享用于配置的 DTS 文件?是否可以共享步骤?

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

    尊敬的 Mohammed:

    我相信您会创建一个新的设备树覆盖文件。 可在以下位置找到启用 DT 叠加的说明: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-am68/10_01_08_01/exports/docs/linux/How_to_Guides/Target/How_to_enable_DT_overlays_in_linux.html

    此致、
    标记

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

    您好、

    我正在 AM68A `m板(J721S2 SoC)上工作、并尝试编译自定义器件树叠加层以连接 ICS43432音频编解码器(使用` casp1 通过 I2S)。 然而,我在编译过程中遇到了语法错误,即使文件在结构上看起来是正确的。

    ——

    电路板:AM68A SK (J721S2)
    Yocto 构建目录:
    /home/yocto-build/build/arago-tmp-default-glibc/work-shared/am68-sk/kernel-source/arch/arm64/boot/dts/ti

    已创建文件: k3-j721s2-ics43432.dtso


    sudo DTC -O dtb -o k3-j721s2-ics43432.dtbo -b 0 -@ k3-j721s2-ics43432.dtso
    ```μ s

    错误输出:

    错误:k3-j721s2-ics43432.dtso:31.21-22语法错误
    致命错误:无法解析输入树

    器件树覆盖文件(`k3-j721s2-ics43432.dtso`):


    /dts-v1/;
    /plugin/;

    /{
    compatible ="ti、j721s2-evm";

    片段@0{
    target-path ="/";
    __覆盖__{
    sound_I2S:声音{
    compatible ="simple-audio-card";
    简单音频卡、名称="ICS43432";
    简单音频卡、格式="I2S_";
    简单音频卡、bitclock-master =<&dailink_master>;
    simple-audio-card、frame-master =<&dailink_master>;
    简单音频卡、CPU{
    sound-dai =<&McASP1>;
    };
    简单音频卡、编解码器{
    sound-dai =<&adau7002>;
    };
    };
    };
    };

    片段@1 {
    target =<&main_pmx0>;
    __覆盖__{
    mycasp1_pins_default:mycasp1-default-pins{
    pinctrl-single、pins =<
    J721S2_IOPAD (0x084、PIN_INPUT、3)/* McASP1_ACLKR */
    J721S2_IOPAD (0x0b8、PIN_INPUT、1)/* McASP1_ACLKX */
    J721S2_IOPAD (0x088、PIN_INPUT、3)/* McASP1_AFSR */
    J721S2_IOPAD (0x0bc、PIN_INPUT、1)/* McASP1_AFSX */
    J721S2_IOPAD (0x0c0、PIN_INPUT、1)/* McASP1_AXR0 */
    J721S2_IOPAD (0x04c、PIN_INPUT、1)/* McASP1_AXR1 */
    >;
    };
    };
    };

    片段@2{
    目标=<&McASP1>;
    __覆盖__{
    #sound-dai-cells =<0>;
    pinctrl-names ="default";
    pinctrl-0 =<&mymcasp1_pins_default>;
    状态="正常";
    OP-MODE =<0>;/* MCASP_IIS_MODE */
    TDM 时隙=<2>;
    serial-dir =<1 0>;
    rx-num-evt =<32>;
    tx-num-evt =<32>;
    };
    };

    片段@3{
    target-path ="/";
    __覆盖__{
    adau7002:adau7002@0{
    #sound-dai-cells =<0>;
    Compatible ="Adi、adau7002";
    reg =<0>;
    状态="正常";
    };
    };
    };
    };
    -为什么会出现这个问题?
    -这是正确的步骤吗? 如果没有、请从头开始提供正确的步骤  

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

    尊敬的 Mohammed:

    您能否使用 Linux 内核的 make 系统构建设备树?

    # Assuming k3-j721s2-ics43432.dtso is in the arch/arm64/boot/dts/ti/ directory
    # set ARCH and CROSS_COMPILE variables
    make DTC_FLAGS=-@ ti/k3-j721s2-ics43432.dtbo

    此致、
    Jared

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

    1. 已创建一个名为的自定义设备树覆盖文件 k3-j721s2-ics43432.dtso
      路径:
      yocto-build/build/arago-tmp-default-glibc/work-shared/am68-sk/kernel-source/arch/arm64/boot/dts/ti/

    2. 在相应的中添加了覆盖项Makefile。 (dtb-$(config_arch_k3)+= k3-j721s2-ics43432.dtbo)

    3.  
    4. 并运行以下命令

      make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 clean

      make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 dtbs

    5. 运行make dtbs命令时、在叠加编译步骤中发生错误。
       

      错误:arch/arm64/boot/dts/ti/k3-j721s2-ics43432.dtso:33.21-22语法错误
      致命错误:无法解析输入树
      make[3]:***[scripts/Makefile:426:arch/arm64/boot/dts/ti/k3-j721s2-ics43432.dtbo]错误1.
      make[2]:***[scripts/Makefile.build:480:arch/arm64/boot/dts/ti]错误2
      Make[1]:***[/home/niyas/version-10/yocto-build/build/arago-tmp-default-glibc/work-shared/am68-sk/kernel-source/Makefile:1398:dtbs]错误2.
      make:***[Makefile:234:__sub-makE]错误2.
      niyas@niyas-Z790-UD:~/version-10/yocto-build/build/arago-tmp-default-glibc/work-shared/am68-sk/kernel-source$

    6.  dtso 文件:-
      /dts-v1/;
      /plugin/;

      #include

      &{/}{
         compatible ="ti、j721s2-evm";

         片段@0{
             target-path ="/";
             __覆盖__{
                 sound_I2S:声音{
                     compatible ="simple-audio-card";
                     简单音频卡、名称="ICS43432";
                     简单音频卡、格式="I2S_";
                     简单音频卡、bitclock-master =<&dailink_master>;
                     simple-audio-card、frame-master =<&dailink_master>;
                     简单音频卡、CPU{
                         sound-dai =<&McASP1>;
                     };
                     简单音频卡、编解码器{
                         sound-dai =<&adau7002>;
                     };
                 };
             };
         };

         片段@1 {
             target =<&main_pmx0>;
             __覆盖__{
                 mycasp1_pins_default:mycasp1-default-pins{
                     pinctrl-single、pins =<
                         J721S2_IOPAD (0x084、PIN_INPUT、3)/* McASP1_ACLKR */
                         J721S2_IOPAD (0x0b8、PIN_INPUT、1)/* McASP1_ACLKX */
                         J721S2_IOPAD (0x088、PIN_INPUT、3)/* McASP1_AFSR */
                         J721S2_IOPAD (0x0bc、PIN_INPUT、1)/* McASP1_AFSX */
                         J721S2_IOPAD (0x0c0、PIN_INPUT、1)/* McASP1_AXR0 */
                         J721S2_IOPAD (0x04c、PIN_INPUT、1)/* McASP1_AXR1 */
                     >;
                 };
             };
         };

         片段@2{
             目标=<&McASP1>;
             __覆盖__{
                 #sound-dai-cells =<0>;
                 pinctrl-names ="default";
                 pinctrl-0 =<&mymcasp1_pins_default>;
                 状态="正常";
                 OP-MODE =<0>;/* MCASP_IIS_MODE (I2S)*/
                 TDM-SLOTS =<2>;/* 2通道(立体声)*/
                 serial-dir =<1 0>;/* AXR0:Rx、AXR1:TX */
                 rx-num-evt =<32>;
                 tx-num-evt =<32>;
             };
         };

         /*在此处添加 adau7002编解码器节点*/
         adau7002:adau7002@1a{
             Compatible ="Adi、adau7002";
             REG =<0x1a>;// ADau7002编解码器的 I2C 地址*/
             Clocks =<&clk_I2S_>;
             时钟名称="MCLK";
             #sound-dai-cells =<0>;
             状态="正常";
         };
      };



      也可以dtbo-$(CONFIG_ARCH_K3) += k3-j721s2-xyz.dtb在 Makefile 中使用dtbo-$(CONFIG_ARCH_K3) += k3-j721s2-xyz.dtbo、而不是。  这不会产生编译错误、但也会产生 不会 .dtbo在预期的输出路径中生成文件yocto-build/build/arago-tmp-default-glibc/work-shared/am68-sk/kernel-source/arch/arm64/boot/dts/ti/()。

      因此、请提供解决方法


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

    尊敬的 Mohammed:

    这可能是因为您没有包含 k3-pinctrl.h 文件。  因此、未定义宏 J721S2_IOPAD。

    将来、您能否将代码放入代码块中或附加文件、以便我可以看到语法错误指向的行号?

    此致、
    Jared

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

    您好 Jared McArthur、

    我成功地编译了.dtso文件.dtbo后包括k3-pinctrl.h—感谢您的指导。

    以下是我所执行步骤的摘要:

    -构建成功,将找到所需的 DT 覆盖文件,


      version-10/Yocto-build/build/arago-tmp-default-glibc/work-shared/am68-sk/kernel-source/arch/arm64/boot/dts/ti/k3-j721s2-ics43432.dtbo


    -将此 DT 覆盖文件复制到boot/dtb/ti SD 卡的根分区目录中。
      

    sudo cp arch/arm64/boot/dts/ti/k3-j721s2-ics43432.dtbo /boot/dtb/ti 

    niyas@niyas-Z790-UD:~$ ls /media/niyas/rootfs/boot/dtb/ti

     找到;
                   k3-j721s2-ics43432.dtbo  

     
    -更新uEnv.txt SD 卡引导分区下的文件,让 u-boot 识别覆盖层

     name_overles=ti/k3-j721s2-edgeai-apps.dtbo ti/k3-j721s2-ics43432.dtbo
    -卸载并弹出 SD 卡

       同步
      sudo umount /media/niyas/BOOT
      sudo umount /media/niyas/rootfs

     将其重新插入 AM68电路板并打开电路板。

     问题:

    启动电路板并运行后:

    arecord -l
    

    ICS43432麦克风 未检测到

    请告知(如有) 其他menuconfig选项 .dtsomcasp1正确注册 I2S 输入()和虚拟编解码器、需要内核配置或文件内的更改?
    您是否可以共享麦克风支持的编解码器?

    在 dtso 文件下、
     

    /dts-v1/;
    /plugin/;

    #include
    #include "k3-pinctrl.h"

    /{
       片段@0{
           target =<&main_pmx0>;
           __覆盖__{
               mycasp1_pins_default:mycasp1-default-pins{
                   pinctrl-single、pins =<
                       J721S2_IOPAD (0x084、PIN_INPUT、3)/*(AA28) McASP0_AXR5.McASP1_ACLKR */
                       J721S2_IOPAD (0x0b8、PIN_INPUT、1)/*(AA24) McASP1_ACLKX */
                       J721S2_IOPAD (0x088、PIN_INPUT、3)/*(AD27) McASP0_AXR6.McASP1_AFSR *
                       J721S2_IOPAD (0x0bc、PIN_INPUT、1)/*(V28) McASP1_AFSX */
                       J721S2_IOPAD (0x0c0、PIN_INPUT、1)/*(T28) McASP1_AXR0 */
                       J721S2_IOPAD (0x04c、PIN_INPUT、1)/*(V27) McASP1_AXR1 */
                       J721S2_IOPAD (0x050、PIN_INPUT、1)/*(W27) McASP1_AXR2 */
                       J721S2_IOPAD (0x0b0、PIN_INPUT、1)/*(AD26) McASP1_AXR3 *
                       J721S2_IOPAD (0x0b4、PIN_INPUT、1)/*(U25) McASP1_AXR4 */
                   >;
               };
           };
       };

       片段@1 {
           目标=<&McASP1>;
           __覆盖__{
               #sound-dai-cells =<0>;
               pinctrl-names ="default";
               pinctrl-0 =<&mymcasp1_pins_default>;
               状态="正常";
               OP-MODE =<0>;/* MCASP_IIS_MODE */
               TDM 时隙=<2>;
               数字串行器=<4>;
               serial-dir =</* 0:不活动、1:TX、2:Rx */
                   2 0 0 0
               >;
               tx-num-evt =<1>;
               rx-num-evt =<1>;
           };
       };

       片段@2{
           target-path ="/";
           __覆盖__{
               声音{
                   compatible ="simple-audio-card";
                   简单音频卡、名称="ics43432-McASP1";
                   简单音频卡、格式="I2S_";
                   simple-audio-card、bitclock-master =<&dailink0_master>;
                   simple-audio-card、frame-master =<&dailink0_master>;

                   简单音频卡、CPU{
                       sound-dai =<&McASP1>;
                   };

                   dailink0_master:simple-audio-card、codec{
                       sound-dai =<&ics43432>;
                   };
               };

               ics43432: ics43432 {
                   compatible ="invensense、ics43432";
                   #sound-dai-cells =<0>;
               };
           };
       };
    };

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

    尊敬的 Mohammed:

    您需要 在.config 中启用 config_snd_SOC_ICS43432配置以支持 ics43432.c 驱动程序。

    我不知道默认情况下是否启用该功能。  您可以运行 lsmod 或 dmesg 来查看驱动程序是否已启动。

    如果您要启用虚拟编解码器、请按照 E2E 主题(Mark sent: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1501141/tda4vm-mcasp1-can-not-work)中概述的步骤操作 

    我不熟悉您使用的麦克风、因此我不知道具体是什么"麦克风支持的编解码器"。

    此致、
    Jared

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

    您好、

    感谢您的澄清。

    是的、我已CONFIG_SND_SOC_ICS43432=y在内核.config文件中启用并确认设置正确。 我还在启动过程中验证了驱动程序 未加载 和 Runningdmesg | grep ics43432 不显示任何活动、表明覆盖或驱动程序可能未初始化。

    MIC 引脚 引脚编号 目标 说明
    SD 38 McASP #1 (T28)   串行数据输出
    WS 35  McASP #1 FSX (V28) 字选择(LR 时钟)
    SCK 12 MCASP1_ACLKX I2S 位时钟
    VDD 1. 3.3V 电源
    GND 6.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mohammed:

    在/proc/device-tree 目录中查找节点、查看是否正确应用了覆盖。

    此致、
    Jared

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

    您好 Jared McArthur、

    设备树找到 ics43432、但仍然未检测到麦克风。

    我在 TI 论坛帖子中遇到了引用的补丁:
     https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1501141/tda4vm-mcasp1-can-not-work 、用于添加snd-soc-dummy-dai编解码器的器件树绑定。 它似乎提供了一个简单的卡,没有编解码器用于测试目的。

    您能否确认我的系统是否需要此补丁? 如果是、如何应用它、我需要将修改后的代码放在哪里? 或者、如果此补丁已经集成到我平台的内核或设备树中、您能告诉我相关的配置或指导我启用它吗?

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

    尊敬的 Mohammed:

    在回答您的问题之前、您能否发送 dmesg 日志? 它可能包含会显示问题的消息。

    要回答您的问题:

    您能否确认我的系统是否需要此修补程序?

    如果 ics43432具有编解码器驱动程序、则不需要该补丁。

    如果是、我如何应用它、我需要将修改后的代码放在哪里?

    补丁适用于内核本身。

    或者、如果此修补程序已经集成到我的平台的内核或设备树中、您能否向我指出相关的配置或引导我启用它?

    您需要将设备树中使用的编解码器更改为虚拟编解码器。

    此致、
    Jared

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

    您好 Jared McArthur

    在一些日志下面,

    另外、我在引导后找到了一些日志  
    [   3.014493] ALSA 设备列表:
    [3.017454]     找不到声卡。
    [   3.021078]正在等待根设备 PARTUID=076c4a2a-02...
    [13.198554]  平台4fb0000.mmc:延迟探头待定
    [13.203865]  平台调节器-tlv71033:延时探头待定
    [  33.934222] VDD_mmc1:正在禁用


    器件树->  当前() /proc/device-tree/ics43432

    驱动程序配置->  CONFIG_SND_SOC_ICS43432=y

    声卡  --- no soundcards --

    ALSA ->  arecord -laplay -l→No devices

    我的文件名为:k3-am68-sk-ics43432.dtso

     uEnv.txt  file add:

      name_coverles=ti/k3-j721s2-edgeai-apps.dtbo ti/k3-am68-sk-ics43432.dtbo ti/k3-am68-sk-RPI-HDR-ehrpwm.dtbo  

    麦克风引脚连接

    SCK-引脚无12
    SD -引脚编号38
    WS -引脚35



    如何解决问题?


     



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

    尊敬的 Mohammed:

    我看到 McASP 和 GPIO 之间存在引脚冲突。 需要解决的问题。

    此致、
    Jared

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

    您好、

     k3-am68-sk-base-board.dts  k3-am68-sk-rpi-hdr-ehrpwm.dtso 为了避免引脚冲突、我修改了和文件、并注释掉了分配给麦克风使用的引脚  



    k3-am68-sk-Rpi-hdr-ehrpwm.dtso

    修改后,我做了下面的 stpes  

    make cross_compile=aarch64-linux-gnu- arch=arm64 clean

    make cross_compile=aarch64-linux-gnu- arch=arm64 dtbs

    将此 DT 叠加文件复制到boot/dtb/ti SD 卡的根分区目录中、包括 k3-am68-sk-base-board.dtb 和自己的麦克风 dtbo 文件(k3-am68-sk-ics43432.dtbo)以及

    更新uEnv.txt SD 卡引导分区下的文件

     name_coverles=ti/k3-j721s2-edgeai-apps.dtbo ti/k3-am68-sk-ics43432.dtbo ti/k3-am68-sk-RPI-HDR-ehrpwm.dtbo  

    将 SD 卡插入 EVM 板后、系统会卡住、无法完全引导。 下面介绍了该问题



    为什么不能完全运行? 我  只修改这两个文件以避免引脚冲突、或者是否还有任何其他文件需要更改?

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

    尊敬的 Mohammed:

    现在、是否可以 从 name_overlays 中删除 ti/k3-am68-sk-Rpi-HDR-ehrpwm.dtbo?

    我现在只想让麦克风启动并运行。

    此外、如何使用没有引脚输出到接头的引脚?

    例如、 AA28、 AD27、 V27、W27 固定到 DSS、而 AD26固定到 i2c。

    您不应该对这些引脚进行物理访问。

    此致、
    Jared

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

    您好 Jared McArthur、
    如何解决以下问题?

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

    您好 Jared McArthur、

    在另一个文件中注释掉麦克风使用的 PIN 后、PIN 冲突问题得到解决。 但是、在刷写 DTS 和 DTSO 文件后、我遇到了"无声卡"问题、我已在下文中对此进行了介绍。







    root@am68a-sk:~# cat /proc/device-tree/bus@10000/McASP@2b10000/status

    好的

    我相信 McASP1已成功应用、

    然后更改下面提到的 k3-am68-sk-ics43432.dtso 文件  



    /dts-v1/;
    /plugin/;

    #include
    #include "k3-pinctrl.h"

    /{
       片段@0{
           target =<&main_pmx0>;
           __覆盖__{
               mycasp1_pins_default:mycasp1-default-pins{
                   pinctrl-single、pins =<
                       J721S2_IOPAD (0x0b8、PIN_INPUT、1)/* McASP1_ACLKX */
                       J721S2_IOPAD (0x0bc、PIN_INPUT、1)/* McASP1_AFSX */
                       J721S2_IOPAD (0x0c0、PIN_INPUT、1)/* McASP1_AXR0 */
                   >;
               };
           };
       };

       片段@1 {
           目标路径="/BUS@10000/McASP@2b10000";
           __覆盖__{
               状态="正常";
               #sound-dai-cells =<0>;
               OP-MODE =<0>;/* MCASP_IIS_MODE */
               TDM 时隙=<2>;
               数字串行器=<4>;
               serial-dir =<2 0 0 0>;/* 2:rx */
               tx-num-evt =<1>;
               rx-num-evt =<1>;
               pinctrl-names ="default";
               pinctrl-0 =<&mymcasp1_pins_default>;
           };
       };

       片段@2{
           target-path ="/";
           __覆盖__{
               声音:声音{
                   compatible ="simple-audio-card";
                   simple-audio-card、name ="ics43432-audio";
                   简单音频卡、格式="I2S_";
                   simple-audio-card、bitclock-master =<&dailink0_master>;
                   simple-audio-card、frame-master =<&dailink0_master>;

                   简单音频卡、CPU{
                       sound-dai =<0xdadbee>;/*虚拟值、在运行时修补*/
                   };

                   dailink0_master:simple-audio-card、codec{
                       sound-dai =<&dummy_codec>;
                   };
               };

               dummy_codec:dummy_codec{
                   兼容="linux、snd-dummy" soc;
                   #sound-dai-cells =<0>;
               };
           };
       };
    };

    刷写此代码后、我收到另一个错误  


    root@am68a-sk:/opt/edgeai-gst-apps are纪录-l
    Record: device_list:279:未找到声卡...
    root@am68a-sk:/opt/edgeai-gst-apps # dmesg | grep -i McASP1
    root@am68a-sk:/opt/edgeai-gst-apps # dmesg | grep -i audio
    [ 8.220769] of:/sound/simple-audio-card、cpu:not find phandle -559038737
    root@am68a-sk:/opt/edgeai-gst-apps # dmesg | grep -i sound
    [ 0.509743]已初始化高级 Linux 声音架构驱动程序。
    [2.963906]未找到声卡。
    [ 8.220769] of:/sound/simple-audio-card、cpu:not find phandle -559038737
    [8.312499] ASOC-simple-card sound: error -EINVAL:parse error
    [8.373358] ASOC-simple-card:声音探测失败、错误为-22
    root@am68a-sk:/opt/edgeai-gst-apps # dmesg | grep -i overlay
    root@am68a-sk:/opt/edgeai-gst-apps ls /proc/device-tree/sound
    兼容的电话、简单音频卡、编解码器、简单音频卡、格式化简单音频卡、名称
    名称 simple-audio-card、bitclock-master simple-audio-card、cpu simple-audio-card、frame-master
    root@am68a-sk:/opt/edgeai-gst-apps cd scripts
    root@am68a-sk:/opt/edgeai-gst-apps/scripts ls
    compile_cpp_apps.sh gst_tracers install_gst_plugins.sh install_tiovx_kernels.sh remote_streaming setup_cameras_v3link.sh
    detect_soc.sh install_apps_utils.sh install_robotics_sdk.sh install_tiovx_modules.sh setup_camera_ox05b.sh setup_wallpaper.sh
    get_fb_resolution.c install_dl_inferer.sh install_ti_gpio_libs.sh perf_stats setup_cameras.sh
    Root@am68a-sk:/opt/edgeai-gst-apps/scripts ./install_ti_gpio_libs.sh

    如何解决此问题?
    具体问题是什么?
    为什么未找到显示声卡?

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

    尊敬的 Mohammed:

    请查看现有的 McASP 器件树节点示例以了解您的设置。

    为什么会这样呢?

        simple-audio-card,cpu {
            sound-dai = <0xdeadbeef>; /* dummy value, patched at runtime */
        };
    

    sound-dai 应指向相关的 McASP 节点。

    如果您使用 "linux,snd-dummy" soc、您是否应用了所需的修补程序? 此主题中引用了补丁: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1501141/tda4vm-mcasp1-can-not-work 

    此致、
    Jared

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

    您好 Jared McArthur、

    现在检测到麦克风。 感谢您的支持。 但是、我在录制过程中遇到了一个问题、我在下面已经提到过、

    A 记录:PCM_READ:2272:读取错误:输入/输出错误

    支持的硬件参数



    下面提及我当前的 k3-am68-sk-ics43432.dtso 文件
    /dts-v1/;
    /plugin/;

    #include
    #include "k3-pinctrl.h"

    &main_pmx0{
       mycasp1_pins_default:mycasp1-default-pins{
           pinctrl-single、pins =<
               J721S2_IOPAD (0x0b8、PIN_OUTPUT、1)/* McASP1_ACLKX */
               J721S2_IOPAD (0x0bc、PIN_OUTPUT、1)/* McASP1_AFSX */
               J721S2_IOPAD (0x0c0、PIN_INPUT、1)/* McASP1_AXR0 */
           >;
       };
    };

    &McASP1{
       状态="正常";
       #sound-dai-cells =<0>;
       OP-MODE =<0>;/* MCASP_IIS_MODE */
       TDM 时隙=<2>;
       数字串行器=<4>;
       serial-dir =<2 0 0 0>;/*串行器0作为 RX */
       tx-num-evt =<0>;
       rx-num-evt =<0>;
       pinctrl-names ="default";
       pinctrl-0 =<&mymcasp1_pins_default>;
    };

    &{/}{
       声音:声音{
           compatible ="simple-audio-card";
           简单音频卡、名称="McASP1-AUDIO";
           简单音频卡、格式="I2S_";
           简单音频卡、位时钟主设备=<&McASP_codec>;
           简单音频卡、帧主设备=<&McASP_codec>;

           简单音频卡、CPU{
               sound-dai =<&McASP1>;
           };

           McASP_CODEC:简单音频卡、codec{
               sound-dai =<&dmic_codec>;
           };
       };

       dmic_codec:dmic_codec{
           兼容="dmic 编解码器";
           #sound-dai-cells =<0>;
       };
    };



    如何解决此问题?

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

    尊敬的 Mohammed:

    可以添加 system-clock-direction-out 属性吗?

    示例: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1501141/tda4vm-mcasp1-can-not-work/5776406#5776406 

    此致、
    Jared

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

    您好 Jared McArthur、
      

    我修改了代码
    /dts-v1/;
    /plugin/;

    #include
    #include "k3-pinctrl.h"

    &main_pmx0{
       mycasp1_pins_default:mycasp1-default-pins{
           pinctrl-single、pins =<
               J721S2_IOPAD (0x0b8、PIN_OUTPUT、1)/* McASP1_ACLKX */
               J721S2_IOPAD (0x0bc、PIN_OUTPUT、1)/* McASP1_AFSX */
               J721S2_IOPAD (0x0c0、PIN_INPUT、1)/* McASP1_AXR0 */
           >;
       };
    };

    &McASP1{
       状态="正常";
       #sound-dai-cells =<0>;
       OP-MODE =<0>;/* MCASP_IIS_MODE */

       auxclk-Fs-ratio =<256>;
       TDM 时隙=<2>;
       数字串行器=<4>;
       serial-dir =<2 0 0 0>;/*串行器0作为 RX */
       tx-num-evt =<0>;
       rx-num-evt =<0>;
       pinctrl-names ="default";
       pinctrl-0 =<&mymcasp1_pins_default>;
    };

    &{/}{
       声音:声音{
           compatible ="simple-audio-card";
           简单音频卡、名称="McASP1-AUDIO";
           简单音频卡、格式="I2S_";
           简单音频卡、位时钟主设备=<&McASP_codec>;
           简单音频卡、帧主设备=<&McASP_codec>;

           简单音频卡、CPU{
               sound-dai =<&McASP1>;
           };

           McASP_CODEC:简单音频卡、codec{
               sound-dai =<&dmic_codec>;
               系统时钟方向输出;
           };
       };

       dmic_codec:dmic_codec{
           兼容="dmic 编解码器";
           #sound-dai-cells =<0>;
       };
    };


    但仍然面临的问题,你能更新我的代码吗?

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

    尊敬的 Mohammed:

     简单音频卡、位时钟主卡和 简单音频卡、帧主卡需要指向 简单音频卡、CPU。

    请查看我之前发送的评论。 它有一个示例器件树、您只需按照设置进行操作。

     

    此致、
    Jared

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

    您好 Jared、
    现在它可以正常工作了  
    谢谢您、