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.

[参考译文] PRU-SWPKG:在 ARM 和 PRU 之间共享数据

Guru**** 2554420 points
Other Parts Discussed in Thread: AM4378

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/612981/pru-swpkg-sharing-data-between-arm-and-pru

器件型号:PRU-SWPKG
主题中讨论的其他器件:AM4378

您好!

我正在尝试研究在 ARM 和 PRU (或 PRU 之间)之间共享/传输数据的方法。 我查看了一些示例、看起来我必须使用 PRU 和 ARM 共享的 DRAM。 我查看了此页面上的说明(http://processors.wiki.ti.com/index.php/PRU_Linux-based_Example_Code#PRU_mem1DTransfer)、但在任何地方都找不到完整的示例。 上面 wiki 指向的页面没有任何示例。

我不理解的是、PRU 和 ARM 如何知道在哪里读取或写入数据? 我如何在两者之间传达这些信息?

谢谢、
Puneeth

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Puneeth、

    使用 TI 处理器 Linux SDK、支持在 PRU 和 ARM (运行 Linux)之间传输数据的方法是 RPMsg。 请参阅以下 wiki 页面、其中介绍了 RPMsg 以及如何运行您的第一个 RPMsg 示例:
    processors.wiki.ti.com/.../PRU-ICSS_Remoteproc_and_RPMsg
    processors.wiki.ti.com/.../RPMsg_Quick_Start_Guide

    PRU 软件支持包是 TI 在运行 Linux 时提供的当前软件包。 它包含在 Linux 处理器 SDK 安装的"示例应用"文件夹中、也可以在此处找到:
    git.ti.com/.../

    下面是展示 PRU<->ARM 通信的 Linux 处理器 SDK 中提供的开箱即用示例的路径:
    git.ti.com/.../PRU_RPMsg_Echo_Interrupt0

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

    谢谢 Jason、
    我能够运行该示例、PRU 将消息"回显"回显到 stdin。
    现在、我要从 AM335x 切换到 AM4378。 我已经查看了迁移指南、并在 e2e 上发布了一些问题。 我可以看到、旧的 PRUSS UIO 接口不再受支持、处理 PRU 的方法是通过 RPMsg 驱动程序。
    在 BeagleBone 上、我无需使用其他计算机即可对 PRU 代码进行编程、编译和运行。 是否再也不可能这样做了?
    2.现在如何通过 ARM 以编程方式启动和停止 PRU? 我应该每次都写入/sys/class/remoteproc/remoteprocX/status 文件吗?
    3.如果不打算使用 GEL 文件、如何设置器件树?

    再次感谢您的帮助。

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

    1. AM437x 上的开发应与 AM335x 上的开发非常相似(就使用 Linux 处理器 SDK 而言)。 我不确定您使用另一台计算机意味着什么。

    2.如果您使用的是基于4.9内核(SDK v4.0.0.4)的最新 Linux 处理器 SDK、则需要使用/sys/class/remoteproc/remoteprocX/state 文件来启动和停止 PRU

    ~ Linux 处理器 SDK 提供的内核源(μ C/ti-processor-sdk-linux-am335x-evm-04.00.04/board-support/linux-4.9.28+gitAUTOINC+eed43d1050-geed43darch/arm/arm/boot/1050)中提供了所有 TI EVM 的默认器件树。 运行 Linux 并使用 Remoteproc Linux 驱动程序加载 PRU 时、不需要 GEL 文件。

    PRUSS UIO 接口仅在使用其 Debian 发行版的 BeagleBoard 社区论坛上受支持。

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

    Jason、

    因此、我尝试运行简单的 PRU_gpioToggle 示例。 我打算使用 pr0_pru1_GPO[9]引脚来切换 GPIO 引脚(连接到 LED)。

    我要执行的步骤:

    在 AM437X-SK-EVM.dts 文件中、我在&am43xx-pinmux 部分下添加了以下内容:

    pru0_1_DEFAULT:PRU_pruss01_PINS_DEFAULT{
    pinctrl-single、PINS =<
    0xec (PIN_OUTPUT | MUX_MODE5)/*(A24) DSS_AC_BIAS_EN.pr0_pru1_GPO[9]*/
    >;
    };
    

    器件树编译时未出现错误。 为此、我使用了 TI 引脚多路复用工具。

    编译了 PRU_gpioToggle.c 文件、并将生成的.out 文件复制到板上的/lib/firmware/pru。 更新了符号链接 AM437X-pru0_1-FW 以指向编译后的文件。

    AM437x-pru0_1-FW ->/lib/firmware/pru/PRU_gpioToggle.out 

    3.回波开始>/sys/class/remoteproc/remoteproc4/state

    4. dmesg 输出显示 pru1已通电,固件映像已引导。

    但是、仍然无法正常工作、GPIO 未被切换。 我是否遗漏了什么?

    谢谢、
    Puneeth

    P.S. PRU RPMsg 示例工作正常、因此我猜测内核具有对 PRUSS 的适当支持。

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

    我忘记提到的另一件事是切换 GPIO 引脚的方式:

    /*切换 GPO 引脚[9]*/
    GPIO = 1 << 9;
    
    /* TODO:创建停止条件、否则它将无限期切换*/
    while (1){
    __R30 ^= GPIO;
    __DELAY_CYLES (100000000);
    } 

    我希望这种方法与我以前为 BeagleBone 执行它的方法类似、也可以在这里工作。

    Puneeth

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

    您可能与 A24引脚的 DSS_AC_BIAS_EN 函数发生引脚多路复用冲突。 查看您参考的 AM437X-SK-EVM.dts 文件中的'dss_PINs'节点的末尾。 您将注意到、该引脚正在配置为多路复用模式0。

    这种类型的冲突不会阻止器件树编译而不会出现错误、但会在引导过程中导致 pinmux 冲突。 启动电路板后、您可以键入"dmesg | grep pinctrl"以查看是否报告了任何 pinmux 冲突。

    如果您不使用显示子系统(DSS)、并且希望释放这些引脚以用于其他目的、则可以将设备树的'&DSS'节点中的状态从'OK'更改为'Displayed'。

    Jason Reeder
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、我完全禁用了 DSS、现在我尝试执行相同的操作、但仍然无法正常工作。 dmesg | grep pinctrl 不报告任何鱼。 我还应该做些什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jason、

    我正在尝试执行以下操作。

    a.使用/sys/class/gpio 接口切换 DSS_BIAS 引脚。

    1.在 AM437X-SK-EVM.dts 文件中禁用 DSS。 启用 GPIO2子系统。
    此时、我还尝试将引脚放在 am43xx_pinmux 部分的 MUX_MODE7中。 但是、如果我这么做、我无法切换 GPIO 引脚、所以我所做的就是启用 GPIO2系统并将其保留。

    2.在 dmesg 中没有报告冲突。

    回波89 >/sys/class/gpio/export
    回显>/sys/class/gpio/gpio89/export
    Echo 1 >/sys/class/gpio/gpio89/value

    4.一切都很好。 我使用89是因为它是 GPIO2的第25个引脚。 (2 * 32)+ 25 = 89。

    b.使用 PRU 切换相同的引脚

    1.禁用 DSS 并添加以下行。

    pinctrl-single、pins =<
          0xEC (PIN_OUTPUT | MUX_MODE5)/*(A24) DSS_AC_BIAS_EN.pr0_pru1[9]*
       >;

    2.在 dmesg 中没有报告冲突

    3、现在我看一下/sys/kernel/debug/pinctrl/44e10800.pinmux/pingroups. 输出:

    组:pruss0_pru1_pins
    引脚59 (PIN59)<-(为什么这个引脚编号为59? 不应该是89?)
    看起来一切正常、我将.out 文件与 AM437X-pru0_1-FW 文件链接在一起、然后在/sys/class.../remoteproc4中回显开始
    5. dmesg out 看起来一切正常,但我的引脚没有被切换。

    因此、我想知道我是否应该检查其他事项、因为我所有的常规检查都没有报告任何故障。

    谢谢、
    Puneeth

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

    Puneeth、

    "为什么这个引脚编号为59? 不应该是89?"

    否、该 debugfs 中的引脚编号基于0、并且与 ctrl_conf 寄存器(其中设置了多路复用模式)在存储器映射中出现的顺序相对应。 因此、CTRL_conf_dss_ac_bias _en 位于偏移量0xec (0xec = 236、236 / 4 = 59)处。 您可以在'44e10800.pinmux/pines'文件中看到引脚列表及其编号。

    在'44e10800.pinmux/pines'文件中、您还将看到 pinmux 尝试配置的寄存器的地址、在您的情况下为0x44e108ec。 是否可以使用 devmem2命令确认写入到 ctrl_conf_dss_ac_bias _en 寄存器(devmem2 0x44e108ec)的值、然后将其发布在此处?

    Jason Reeder

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

    /dev/mem 已打开。
    映射到地址 bb6f0f000的内存。
    在地址0x44E108EC (bb6f0f8ec):0x08050007处读取

    启动或停止 PRU 时不会发生变化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Puneeth、

    根据您发布的 devmem2输出、dss_ac_bias _en 引脚配置为 GPIO2_25 (因为寄存器中的多路复用器模式位(位3:0)为7)、而不是 pr0_pru1_gpo9 (在多路复用模式位中为5)、 这是您尝试使用设备树设置的内容)。

    是否确定已编译的 DTB 文件中包含了设备树的修改? 这可能是由于修改了错误的 dts 或 dtsi 文件,或者未包含正确的 dtsi 文件而导致的。

    是否确定在引导过程中使用更新的 DTB 文件? 是否已将新构建的 dtb 文件放入/boot/目录并正确重命名为在下次引导时使用?

    您可以在此处发布 DTS/dtsi 文件吗?

    Jason Reeder

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

    您好 Jason、

    我正在粘贴下面的 DTS 文件。 但是、我认为 dts 文件正由电路板加载、因为`pingroup`显示 PIN59位于 pruss0_pru1_pins 组下。 这不是 DTS 文件所规定的吗?

    "是否确定在引导过程中使用更新的 DTB 文件? 是否已将新构建的 dtb 文件放入/boot/目录并正确重命名为在下次引导时使用?"

    它是否需要具有特定名称? 我肯定会将其放置在/boot/directory 中。

    //
    *版权所有(C) 2014 Texas Instruments Incorporated - http://www.ti.com/
    *
    本程序是免费软件;您可以根据
    
    免费软件基金会*发布的 GNU 通用公共许可证版本2的条款重新分发和/或修改*。
    */
    
    /* AM437x SK EVM */
    
    /DTS-v1/;
    
    #include "am4372.dtsi"
    #include 
    #include 
    #include 
    #include 
    
    /{
    模型="TI AM437x SK EVM";
    兼容="ti、AM437x-SK-EVM"、"ti、am4372"、"ti、am43";
    
    别名{
    display0 =&lcd0;
    };
    
    所选{
    stdout-path =&uart0;
    };
    
    //固定32k 外部振荡器时钟*/ clbl = 327k_clock<clock_cl0>
    
    
    
    ;
    
    
    }"rtc = 327k_clock_clock_clock";<clock_clock_clock_clock<rtb</clb</clb</clb</clb</clb</clb</clb</clb</clb</clb</clb</cl
    
    PWM =<&ecap0 50000 PWM_POLICE_INVERSION>;
    亮度级别=<0 51 53 56 62 75 101 152 255>;
    默认亮度级别=<8>;
    };
    
    声音{
    兼容="简单音频卡";
    简单音频卡、名称="AM437x-SK-EVM";
    简单音频卡、
    
    耳机插孔、"耳机插孔" "线路输入";
    简单音频卡、路由=
    "耳机插孔"、"HPLOUT"、
    "耳机插孔"、"HPROUT"、
    "LINE1L"、"线路输入"、
    "LINE1R"、"线路输入";
    简单音频卡、格式="DSP_b";
    简单音频卡、位时钟主器件=<&sound_master>;
    simple-audio-card、frame-master =<&sound_master>;
    simple-audio-card、bitclock-倒 转;
    
    simple-audio-card、CPU{
    sound-dai =<&col SP1>;
    };
    
    sound_master:simple-audio-card、codec{
    sound-dai =<&tlv320incaic3106>;
    system-clock-frequency =<&col =<&petcol =<&gpetcol
    ;
    
    
    }<-matrix =<-gpit_gpet>
    =<-delay =<-gpit_gpit_gpit_0>
    
    
    ;<pit_gpit_gpit_gpet>=<-pet>;<pit_gp
    
    
    
    
    ROD-GPIO =<&GPIO5 GPIO_ACTIVE_HIGH/*组5、pin5 */
    &GPIO5 6 GPIO_ACTIVE_HIGH>;/*组5、PIN6 */
    
    COP-GPIO =<&GPIO5 13 GPIO_ACTIVE_HIGH/*&5、pin13 */
    组 GPIO5 GPIO_ACTIVE_GPIO4 *、GPIO0
    
    *、关键字
    、关键字=矩
    阵列0、关键字、关键字1、关键字=关键字、关键字0 (1)
    0、key_left)
    matrial_key (1、1、key_up)
    >;
    };
    
    LED{
    compatible ="GPIO-LED";
    
    pinctrl-names ="default";
    pinctrl-0 =<&LEDS_PINs>;
    
    led0{
    label ="AM437X-SK:RED:心跳";
    GPIO =<&GPIO5 0 GPIO_ACTIVE_HIGH>;//组5引脚0 *
    、linux、default-skin ="gpet-off"
    
    ;"mmIO5"gpet"
    
    
    ="gpio1";"mm_off"="gpot_high";"mmeUS"="gpot_off"="gpot_off";"mm_off"="gpio1:gpot_high";
    /*组5引脚1 */
    linux、default-trigger ="mmc0";
    default-state ="off";
    };
    
    LED2{
    label ="AM437X-SK:blue:CPU0";
    GPIO =<&GPIO5 GPIO_ACTIVE_HIGH>;//组5引脚2 */
    Linux、default-sk="USTRIGG"
    
    
    
    
    ;"AM4UTOS"="r3:GPIO";"rgpio_TO_HIGH;/"AM4GPT"="r3 =
    "r3:GPIO";"GP_TO"="r3 = TO";"GP_OFF"/*组5引脚3 */
    默认状态="关闭";
    };
    };
    
    lcd0:显示{
    兼容="Newhaven、nHD-4.3-480272ef-atxl"、"panel-dpi";
    标签="lcd";
    
    pinctrl-names ="默认";
    pinctrl-0 =<&lcd_pines>;
    
    背光=<&LCD_BL>;
    
    使能 GPIO =<&GPIO1 7 GPIO_ACTIVE_HIGH>;
    
    电池板时序{
    时钟频率=<9000000 >;
    hactive =<480>;
    vactive =<272>;
    hfront-carch =<2>;
    后沿=<2>;
    HSYNC-LEN =<41>;
    前沿=<2>;
    后沿=<2>;
    VSYNC-LEN =<10>;
    HSYNC-ACTIVE =<0>;
    vsync-active =<0>;
    de-active =<1>;
    pixelclk-active =<1>;
    }
    
    ;端口{
    LCD_IN:端点{
    remote-endpoint =<&dpi_out>;
    };
    
    };};
    };};};
    
    &am43xx_pinmux{
    matrix 键盘_pade_pins:matrix 键盘_pads_pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0xa4c、PIN_OUTPUT | MUX_MODE7)/* GPIO5_13_GPIO5_13 *
    AM4372_IOPAD (0xa50、PIN_OUT_OUTPUT | 0x372_MODE4_4
    
    
    )*/GPIO5_4 * 0x372_MODIO5_0_4 */GPIO5_IN_IN_4 */GPIO5_4引
    
    
    脚:0x372_MODIO5_0_4 */GPIO5_IN_IN_IN_IN_4 LED_Pins{
    pinctrl-single、Pins =<
    AM4372_IOPAD (0xa28、PIN_OUTPUT | MUX_MODE7)/* uart3_Rxd.GPIO5_2 *
    / AM4372_IOPAD (0xa2c、PIN_OUTPUT | MUX_MODE7)/* uart3_TXD.3
    
    
    */AM4372_MODIO5_IN_OUTPUT (0xa3_0*/AM4372_0_0_MODIO0_IN_IN_0_AM4Sn)
    
    
    */AM4372_MODIO5_IN_IN_IN_IN_IN_IN_0_0_MODIO5_0_IN_IN_IN_IN_INU_IN_INU_INU_0_0* i2c0_pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x988、PIN_input | SLEWCTRL_FAST | MUX_MODE0)/* i2c0_sda.i2c0_sda *
    AM4372_IOPAD (0x98c、PIN_input | SLEW0_MODE0
    )* i2c2c24_spi_1*/iSC0_mspi0_mc0_mc0_mc0_mspi_1*
    
    
    
    
    
    ;i2c2p_mc0_mc0_mspi0_mc2p0_mspi0_mc0_mc0_mc0_mspi_mc0_mc0_mc0_mc0*
    
    };
    
    mmc1_pins:pinmux_mmc1_pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x8f0、PIN_input | MUX_MODE0)/* mmc0_data3.mmc0_data3 */
    AM4372_MO0_PIN_MM0_MO0*
    
    /mmc0_mc0_mc0_mc0_mc0_mc0*/mm0_mc0_mc0_mc0_mc0_mc0_mc0_mc0_mc0*输入*
    /mm0_mc0_mc0_mc0_mc0_mc0_mc0_mc0_mc0_m0_mc0_m0_m0_mc0_m0_mc0_mc0_mc0_mc0_m0_mc0_mc0_mc0_mc0_m0_mc0_mc0*/mc0_mc
    
    PIN_INPUT | MUX_MODE7)/* spi0_CS1.GPIO0_6 */
    >;
    };
    
    ecap0_PINS:backlight_PINS{
    pinctrl-single、PINS =<
    AM4372_IOPAD (0x964、PIN_OUTPUT | MUX_MODE0)/* eCAP0_IN_IN_PWM0_IN_INT_INTOP*
    
    
    
    
    
    
    
    
    
    
    = 0x372_AM4INT_INT_INTPUT_INT_AM4864_INT_INT_INT_INTOPs/0x8064_IN_INT_INT_INT_INT_INT_INT_INTOPs/0x80647_INT_INT_INT_INT_INT_INT_INT_INPEST_INT_INT_INT_INT_INT_INT_INT_INT_INT_INPUT_0* 0x374/INT_AM4INPUT_INT_INT_INPUT_INT_AM4864/INPUT_INPUT_INPUT_INT_AM4_INT_INT_INT_ vpfe0_PINS_DEFAULT{
    pinctrl-single、PIN=<
    AM4372_IOPAD (0x9b0、PIN_INPULLUP | MUX_MODE0)/* cam0_HD 模式0*/
    AM4372_IOPAD (0x9b4、PIN_INPUT_PULLUP)/AM4372_MO0*
    
    
    输入/AM4pLUG_0*/AM4pullup (0x372_MO0*/AM4_MO0*
    输入_MOUX_0*输入/0x372_MO0*输入_MO0*输入/0x372_MO0*输入_MO0_PIN_MO0_MO0_PIN_MO0_MO0_MO0_PIN_MO0* /* cam40_data8模式0*/
    AM4372_IOPAD (0x9c8、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data9模式0*/
    AM4372_IOPAD (0xa08、PIN_INPUT_PULLUP | MUX_MODE0)/* cam4372_MO0*输入
    
    /AM4pullu_0*输入/AM4372_MOUX_0*输入/AM4UX_PIN_MOUX_0*输入
    
    /* cam0_data4模式0*/
    AM4372_IOPAD (0xa1c、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data5模式0*/
    AM4372_IOPAD (0xa20、PIN_INPUT_PLUP 上拉| MUX_MODE0)/* cam0_DM4372_INP0
    
    +
    
    
    
    
    
    引脚0x4_INUX_INPAD_0*、0x372_INU_INP0 +引脚0*、AM4_INUX_INP0_INUX_INPUT_INPUT_MO0*| AM4UX_INUX_INPUT_MO0*引脚0_INPUT_MOUX_INPUT_MO0*| AM4UX_INUX_INPUT_MOUX_INPUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PUT_
    DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
    AM4372_IOPAD (0x9bc、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
    AM4372_OPAD (0x9c0、DS0_POL_DOUX_EN |
    
    
    INPUT_DOUX_DOUX_DOUX_DOUX_UX_DOUX_UX_DOUX_UX_UX_EN
    | 0x4372_DOUX_DOUX_DOUX_DOUX_DOUX_EN | AM4UX_UX_DOUX_DOUX_UX_UX_DOUX_DOUX_EN | AM4UX_DOUX_UX_DOUX_DOUX_UX_UX_UX_UX_UX_UX_DOUX_DOUX_DOUX_7 | AM4UX_DOUX_DOUX_DOUX_DOUX_DOUX_DOUX_DOWN_UX_EN | AM4UX_DOUX_DOWN_DOUX_DOUX_DOWN_DOWN_DOWN_UX_
    
    DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
    AM4372_IOPAD (0xa18、DS0_PULL_UP_DOWN_EN | INUX_MODE7)
    AM4372_IOPAD (0xa1c、DS0_PULL_DOWN_EN_OUTPUT | AM4372_MODE_EN_INUX_DOUTDOUTDOUT_UX_EN_DOUTDOUTDOWN
    
    
    
    
    
    
    
    
    
    )| AM4372_MOUX_INUX_INUX_INUCTUX_INUX_INU_UTOP_DOUTDOWN_EN_EN_DOUTDOUTDOWN_EN_EN_EN_DOUTDOWN | AM4372_EN_EN_MOUX_EN_MOUX_EN_DOUTDOUTDOUTDOWN_EN_TOP_DOUT_EN_DOUT_EN_EN_EN_EN_EN_DOUTDOWN_TOP_DOUTDOWN | AM4372*(0x372_DOUT_DOUT_EN_DOUT_DOUT_EN_EN_EN
    
    cpsw_default{
    pinctrl-single、pins =<
    /*从器件1 */
    AM4372_IOPAD (0x92c、PIN_OUTPUT | MUX_mode2)/* mii1_txclk.rmii1_tclk *
    AM4372_iPAD_OUTPUT (0x9224_PIN_mode_mode2*
    
    、0x9242_mi242_mi0*、mi4dio1_dive*/rti242_mi0_mi0_mi242_mi_mi_mi_mi0*
    
    输出*/* mii1_txd1.rgmii1_td3 */
    AM4372_IOPAD (0x930、PIN_input | MUX_mod2)/* mii1_rxclk.rmii1_RCLK *
    / AM4372_IOPAD (0x918、PIN_input | MUX_dede2)/AM438*rmi_modi_1*
    
    /rmi4372* rmi_mi_mi_mi1*输入
    
    
    
    
    PIN_OUTPUT
    
    
    
    
    | MUX_MODE2)/* GPMC_A6.rgmii2_tclk */ AM4372_IOPAD (0x840、PIN_OUTPUT | MUX_MODE2)/* GPMC_a0.rgmi2_tmoct2 * AM4372_MODEV (0x854、PIN_MODE2)
    * AM4372_AM4_MODEV */AM4372_AM4_AM4_AM4_MODEV */AM4372_AM4_MODEV */AM4_AM4_AM4AD_AM4_AM4372*
    PIN_INPUT | MUX_MODE2)/* GPMC_A1.rgmii2_rtcl */
    AM4372_IOPAD (0x86c、PIN_INPUT | MUX_MODE2)/* GPMC_A11.rgmii2_rd0 *
    AM4372_IOPAD (0x868、PIN_MODE2
    
    
    )/AM4372_AM4_AM_RESPON_RAME */AM4372_RAPON_AM4_AM4_AM4_AM4372*/Rd_MODE_AM4372*/Rd_AM4_AM4_AM4_Rd_AM4_RESPON_AM4_Rd_AM4_AM4p_AM4_AM4372*/Rd_RESPON_Rd_AM4_AM4_AM4_Rd_AM4_Rd_AM4_AM4372*/Rd_AM4_Rd_AM4_RESPON_AM4_Rd_AM4_AM4_Rd_AM4_AM4_
    
    
    
    
    
    PIN_INPUT_PULLUX | MUX_MODE7)
    AM4372_IOPAD (0x914、PIN_INPUT_PULLUD | MUX_MODE7)
    AM4372_IOPAD (0x928、PIN_INPUT_PULLUX | AM4372_MODEPAD_PULLUX
    
    
    
    
    
    
    
    (0x9372_MOUX_INPUTDOUX_MODEUX_PULLUX)| AM4372_MODIOUTDOUX_INPULLUX (0x9372_MOUX_INPUTDOUTDOUTDOUTDOWN)| AM4372_AM4372_MOUX_MOUX_INPUTDOUX_INPUTDOWN | AM4372_MOUX_MOUX_INPUTDOUX_MOUX_OUX_INPUTDOUTDOWN | AM4372_MOUX_OUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOWN | AM4372_MOUX_OUTDOUTDOUTDOWN | AM4372_MOUX_OUTDOUTDOUTDOUTDOUX_OUTDOUT
    
    
    /*从器件2复位值*/
    AM4372_IOPAD (0x858、PIN_INPUT_PULLUD | MUX_MODE7)
    AM4372_IOPAD (0x840、PIN_INPUT_MODEDOWN | MUX_MODEPAD_PULLUG_PULLUG_O4372_MODEUTDOWN
    
    
    
    
    
    
    
    | AM4372_AM4_MODIOUT_INPUT_MOUX_INPUTDOUX_DOUTDOWN | AM4372_MOUX_INPUTUX_TOUX_PUTUX_TOUTDOUTDOWN | AM4372_MODULLUG_OUTDOUTDOWN | AM4372_MOUX_INPUTDOUX_TOUTDOWN | AM4372_MOUX_TOUTUX_TOUTUX_PUTUX_TOUTDOUTDOUTDOWN | AM4372_MOUX_TOUTDOWN | AM4372_MOUX_TOUX_PUTUX_TOUTDOWN | AM4372_MOUX_INPUTDOUTDOWN | AM4372_MOUX_PUTUX_PUTUX_TOUT
    
    AM4372_IOPAD (0x860、PIN_INPUT_PULLUD | MUX_MODE7)
    >;
    };
    
    DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT{
    pinctrl-single、Pins =<
    /* MDIO *
    / AM4372_IOPAD (0x948、PIN_INPUT_FAST_FAST_MDIO_FAST| MUX_MODIO_DOUT0*
    
    / MDIO)*/ MDIO_MODIO *输出:0x94372_MODIO_CK_MODIO_C2000_MODIO *
    
    
    DaVinci_MDIO_SLEEP{
    pinctrl-single、pins =<
    /* MDIO 复位值*/
    AM4372_IOPAD (0x948、PIN_INPUT_PULLUP | MUX_MODE7)
    AM4372_IOPAD (0x94c、PIN_INPUT_PUTDOUTDOWN | MUX_MODE7)
    >;
    };DSS_PIN_DSS_PUT_DSS_DSS_INUX4372_INUX823_INUX242_IN_MODIO823*
    
    
    引脚| AM4372_INPUT_INU_INU_INUX242_INU_INU_INU_INPUT_INPUT_INUX_INUX_INUX_INUX248_IN_INU_INU_INUX_INU_INU
    
    
    
    PIN_OUTPUT
    
    
    
    
    
    
    | MUX_MODE1) AM4372_IOPAD (0x830、PIN_OUTPUT | MUX_MODE1) AM4372_IOPAD (0x834、PIN_OUTPUT | MUX_MODE1) AM4372_IOPAD (0x830、PIN_OUTPUT | MUX_MODE1) AM4372_MODE0 (0x8372* AM4_MODIOPAD (0x8372_0* AM4_MODE0)| AM4UX_IN8372_MODIODIO0*、AM4372_OUT0 (0x372_MODIODIO0*、AM4_IN0* AM4_MODIO0*、AM432_IN_MODIODIO0* AM4_IN_OUT0)
    
    PIN_OUTPUT
    
    
    
    
    
    
    
    | MUX_MODE0) AM4372_IOPAD (0x8b4、PIN_OUTPUT | MUX_MODE0) AM4372_IOPAD (0x8b8、PIN_OUTPUT | MUX_MODE0) AM4372_MODIOPAD (0x8372_MODE0
    
    
    )| AM4372_MODIO0_PIN_OUTPUT (0x8372_MODIO0_AM4_MODIO0_MOUX_IN8372_MODIO0| AM4_PIN_OUTPUT (0x8372_AM4_MODIO0_MODIO0_MODIO0_PIN_MODIO0_AM4_MODIO0_MODIO0_AM4_PIN_MODIO0_AM4_AM4_MODIO0_MODIO0_PIN_MODIO0_AM4372_PIN_MODIO0_MODIO0_PIN_MODIO0_MODIO0_MODIO0_MODIO0_AM4_AM4_PIN_AM/* DSS 数据15 */
    AM4372_IOPAD (0x8e0、PIN_OUTPUT | MUX_MODE0)/* DSS VSYNC */
    AM4372_IOPAD (0x8e4、PIN_OUTPUT | MUX_MODE0)/* DSS HSYNC */
    AM4372_IOPAD (0x8e8、PIN_OUTPUT |
    AM4372*
    
    | AM4EC_MODE0)
    
    
    */ AM4DIODIV_IN_IN_INUX_INUX_INUX_INUX0*| AM4UX_INUX_INUX0*| AM4UX_INUX_INUX_INUX_INPADC0 *| AM4UX_IN_IN QSPI_Pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x87c、PIN_OUTPUT | MUX_MODE3)/* GPMC_csn0.QSPI_CSn *
    / AM4372_IOPAD (0x888、PIN_OUTPUT | MUX_MODE2)/* GPMC_CLE_3* AM4372_IN_MODIODC_IN_IN_IN_INPUT
    
    
    
    
    | AM4372_AM4_INPUT | AM4SPI_0_IN_IN_IN_INPUT | AM4372_MODIP_IN_IN_IN_IN_MOD3* 0x372_AM4_IN_AM4_MODIODC_IN_INPUT | AM4_IN_IN_IN_IN_IN_IN_INPUT | AM4372*
    
    
    McASP1引脚{
    pinctrl-single、引脚=<
    AM4372_IOPAD (0x90c、PIN_INPUT_PULLUX | MUX_MODE4)/* mii1_crs.McASP1 _aclkx *
    / AM4372_IOPAD (0x910、PIN_INPUT_PULLUX | MUX_MODE4)* 0x372_McA04
    
    
    、* mcol 1、mr24_mr_mr_mcr * mcr 1、mu_mu_mu_mu_mcr 1、mu_mu_mu_mu_mu_mu_mu4)
    
    
    * mu_mu4 pulldown * McASP1引脚_sleep{
    pinctrl-single、引脚=<
    AM4372_IOPAD (0x90c、PIN_INPUT_PULLUD | MUX_MODE7)
    AM4372_IOPAD (0x910、PIN_INPUT_PULLUD 下拉| MUX_MODE7)
    AM4372_INUX_INPUT_LCD_PUTDOUT_PUT_PUT_PUTDOUT_PUT_PUTDOUT_7
    
    | AM4cm
    
    
    
    | AM4CMUX_INUX_INUX_INUX_PUTDOUTDOWN | AM4CMUX_PUT_MOUX_PUTDOUT_PUT_MOUX_PUTDOUT_MOUX_PUT_PUTDOUT_7 | AM4CM
    | AM4CMUX_PUT_PUT_MOUX_PUTDOUT_PUT_PUTDOUT_PUT
    
    
    
    USB1_Pins{
    pinctrl-single、Pins =<
    AM4372_IOPAD (0xac0、PIN_OUTPUT | MUX_MODE0)/* usb0_drvvbus.usb0_drvvbus *
    >;
    };
    
    USB2_Pins:USB2_Pins{
    pinctrl-single、Pins =<
    AM4372_IOPAD (0xac4、PIN_OUTPUT | MUX_OUTPUT);usb0_drvvbus.usb0_drvvbus}"0x4U_OUTPIN_0
    
    
    
    
    
    
    
    
    
    
    
    
    ="0_MOpru_MOPRECT_PIN_0;*
    = 0xUS0_OUTON_OUTPSION";"+= AM4U_IN_INCRIT_OUTPIN_IN_IN_0 = AM4U_IN_IN_IN_IN_INCR0*= AM4U_INPON_MOPRECT_PON";"+= AM4_INTRIP_INTRINTR
    pinctrl-0 =<&i2c0_PINs>;
    时钟频率=<100000 >;
    
    TPS@24{
    Compatible ="ti、tps65218";
    reg =<0x24>;
    interrupts = ;
    中断控制器;
    #interrupt-cells =<2>;
    
    dcdc1:reguler-dc1{
    // VDD_core limits min of OPP50 and max of OPP100 */
    reguler-name ="VDD_CORE ";
    reguler-min-microvolt =<912000>;
    reguler-max-microvoltes=<1144000>;
    reguler-boot-on-always;
    regulator always on;regulator always on always;regulator always on always
    };
    
    dcdc2:reguler-dc2{
    /* VDD_MPU 限制 OPP50的最小值和 OPP_nitro 的最大值*/
    reguler-name ="VDD_MPU";
    reguler-min-microvolt =<912000>;
    reguler-max-microvolt =<1378000>;
    reguler-boot-on;
    reguler-als-always-on;regulator always on;
    };
    
    dcdc3:reguler-dc3{
    reguler-name ="VDDS_DDR";
    reguler-min-microvolt =<1500000>;
    reguler-max-microvolt =<1500000>;
    reguler-boot-on;
    reguler-always-on-on;
    reguler-state-mem {
    reguler-on-in-suspend;
    };
    reguler-state-disk {
    reguler-off-in-suspend;
    }
    ;};
    
    dcdc4:reguler-dc4{
    reguler-name ="v3_3D";
    reguler-min-microvolt =<3300000>;
    reguler-max-microvolt =<3300000>;
    reguler-boot-on;
    reguler-always-on-on;
    };
    
    dc5:reguler-dc5{
    compatible ="ti、tps65218-dc5";
    reguler-name ="v1_0bat";
    reguler-min-microvolt =<1000000>;
    reguler-max-microvolt =<1000000>;
    reguler-boot-on;
    电脑控制器常开;
    电脑控制器状态内存{
    电脑控制器常开状态内存;
    };
    };
    
    dcdc6:电脑控制器 dc6{
    compatible ="ti、tps65218-dc6";
    电脑控制器名称="v1_8bat";
    电脑控制器最小值微伏=<1800000>;
    电脑控制器最大值微伏=<1800000>;
    电脑控制器启动<1800000>;电脑控制器
    电脑控制器常开;
    电脑控制器状态内存{
    电脑控制器常开状态内存;
    };
    };
    
    ldo1:电脑控制器常开1{
    电脑控制器名称="v1_8d";
    电脑控制器最小值微伏=<1800000>;
    电脑控制器最大值微伏=<1800000>;
    电脑控制器启动;
    电脑控制器常开;
    };
    
    电源按钮{
    compatible ="ti、tps65218-pwrbutton";
    status ="确定";
    interrupts =<3 IRQ_TYPE_EDGE_Bot>;
    };
    }
    
    ;at24@50{
    compatible ="at24、24c256";
    pagesize =<64>;
    reg =<0x50>;
    };
    };};
    
    &i2c1{
    status ="确定";
    pinctrl-names ="默认值";
    pinctrl-0 =<&i2c1_PINs>;
    时钟频率=<400000>;
    
    ov2659@30{
    compatible ="ovti、ov2659";
    reg =<0x30>;
    pinctrl-names ="默认值";
    pincx_outclktrl =<&nulktrl
    
    = 1;pintrl = out1 clktrl = out1时钟<&clktrl
    Clock-names ="xvclk";
    Assigned Clocks =<&clkout1_mux_ck>;
    Assigned Clock-Parents =<&clkout1_osc_div_ck>;
    
    port{
    ov2659_1:endpoint{
    remote-EDT =<&vpfe0_ep>;
    link-fixedes=/bits/64 <ft306_cnt
    ="5nits";
    
    
    
    @"frtt = 5tt = 5tt 015ns";
    
    t = 5tt = 5tt、t 5tt = 5tt、nT = 5nT = 5nT = 5nT = 5ts";link_ft 5tr = 5tr;"tr
    = 5tr ="
    
    
    reg =<0x38>;
    interrupt-parent =<&GPIO0>;
    interrupts =<31 IRQ_TYPE_ EDGE_FALLINES>;
    
    RESET-GPIO =<&GPIO1 28 GPIO_ACTIVE_LOW>;
    
    Touchson-size-x =<480>;
    Touchson-size-y =<272>;
    };
    
    tlv320aic3dich106: vdc-vdcdi@
    =
    
    <0+<vdcd4;vdcdcr =<&vdcdcr =<4;<vdcdcy&vdcdcr =<4;vdcdcr =<dcdcr =<&v3dcr =<&dcdcr =<&dcr =<4;vdcdcr =<&dcdcr =<4;
    
    
    
    
    
    <
    DVDD-SUPPLY =<&ldo1>;
    };
    
    LIS331DLH@18{
    compatible ="st、LIS331DLH";
    reg =<0x18>;
    status ="确定";
    
    Vdd-supply =<&dc4>;
    Vdd_io-supply =<&dc4>;
    中断扩展=<&GPIO1 6 0>、<&GPIO2 1 0>;
    };
    
    
    &epwms0{
    status ="正常";
    };
    
    &ecap0{
    status ="正常";
    pinctrl-names ="默认值";
    pinctrl-0 =<&ecap0_PINs>;
    };&gpio0 =
    
    "
    
    
    
    
    
    
    
    
    正常";{OOK};状态="状态="}"GPIO5";
    
    
    &mmc1{
    status ="oke";
    pinctrl-names ="default";
    pinctrl-0 =<&mmc1_PINs>;
    
    VMMC-supply =<&dc4>;
    bus-width =<4>;
    CD-GPIOs =<&GPIO0 6 GPIO_ACTIVE_LOW>;
    }
    
    ;&USB2_phy1{
    status ="oke";
    }
    
    ;&USB1{
    dr_mode ="OTG";
    status ="oke";
    pinctrl-names ="default";
    pinctrl-0 =<&USB1_PINs>;
    };
    
    &USB2_phy2{
    status ="确定";
    };
    
    &USB2{
    dr_mode ="主机";
    status ="确定";
    pinctrl-names ="默认值";
    pinctrl-0 =<&USB2_PINs>;
    };
    
    &QSPI{
    status ="确定";
    pinctrl-names ="默认值";
    pinctrl-0 =<&QSPI_PINs>;
    
    SPI-max-frequency =<48000000>;
    m25p80@0{
    compatible ="mx66l51235l";
    SPI-max-frequency =<48000000>;
    reg =<0>;
    SPI-phcpol;SPI-cpol;SPI-cpol;
    
    SPI-TX-bus-width =<1>;
    SPI-Rx-bus-width =<4>;
    #address-cells =<1>;
    #size-cells =<1>;
    
    /* MTD 分区表。
    * ROM 会检查第一个512KiB
    *是否有有效的要引导的文件(XIP)。
    
    
    
    
    
    
    
    
    
    
    
    
    
    @partition@0{label ="QSPI.U_boot";reg =<0x00000000 0x000080000>;};partition@1{label ="QSPI.U_boot.backup";reg =<0x00080000 0x00080000>;};partition@
    
    
    
    @2{label ="QSPI.U-boot-OS";reg = 0x00040000000 = 0x0004+分区
    = 0x00040000000 = 0x000V;EN40000000 = 0x0004 = 0x000V 分区= 0x0000.000V = 0x0004+分区= 0x00040000000 = 0x000V
    
    };
    分区@5{
    标签="QSPI.kernel";
    reg =<0x00130000 0x0800000>;
    };
    分区@6{
    标签="QSPI.filesystem ";
    reg =<0x00930000 0x36D0000>;
    };
    
    };
    
    };&Mac{
    pinctr-names ="默认"、"睡眠";
    pinctrl
    =
    <1;<ctrl_sw>;<cpsecleep>=<1;<ctrl =<ctrl = 1;<ctrl =<ctrl_sw>
    状态="确定";
    }
    
    ;达芬奇_MDIO{
    pinctrl-names ="默认"、"睡眠";
    pinctrl-0=<&Davinc_MDIO_default>;
    pinctrl-1 =<&Davinc_MDIO_SLEEP>;
    状态="确定";
    };
    
    &cpsw_emac0{
    phy_id =<&Davinci_mdio>、<4>;
    phy-mode ="RGMII";
    dual_EMAC_res_vlan =<1>;
    };
    
    &cpsw_emac1{
    phy_id =<&Davinci_mdio>、<5>;
    phy-mode ="RGMII";
    dual_emac_res_vlan =<2>;
    };
    
    &elm{
    status ="确定";
    };
    
    &McASP1{
    #sound-di-cells =<0>;
    pinctrl-names ="默认值"、"睡眠";
    pinctrl-0 =<&McASP1_PINs>;
    pinctrl-1 =<&McASP1_PINS_SLEEP;
    
    status ="确定";
    
    op-mode =<0>;
    tdm-slots =<2>;
    serial-dir =<
    0 0 1 2
    >;
    
    tx-num-evt =<1>;
    rx-num-evt =<1>;
    }
    
    ;&dss{
    status ="禁用";
    
    pinctrl-names ="默认";
    pinctrl-0>
    
    
    ;pendpoint =
    
    24;}<&ddss =远程端点= n = n = n@μ s;
    
    
    
    
    &RTC{
    时钟=<&clk_32k_rtc>、<&clk_32768_ck>;
    时钟名称="ext-clk"、"int-clk";
    状态="好";
    };
    
    &WDT{
    STATUS ="确定";
    }
    
    ;&CPU{
    CPU0-SUPPLY =<&dc2>;
    };
    
    &vpfe0{
    STATUS ="确定";
    pinctrl-names ="默认"、"睡眠";
    pinctrl-0 =<&vpfe0_PINS_DEFAULT>;
    pinctr-1 =<&pfe0_PINS;
    
    //摄像机端口*/
    端口{
    vpfe0_EP:端点{
    远端=<&ov2659_1>;
    ti、AM437X-VPFE-interface =<0>;
    总线宽度=<8>;
    HSYNC-ACTIVE =<0>;
    vSYNC-ACTIVE =<0>;
    };
    };
    }
    
    ;wkup_m3_IPC{
    ti、scale-data-fw ="am43x-EVM-scale-data.bin";
    }
    
    ;&pruss_soc_bus{
    status ="确定";
    
    pruss1:pruss@54400000{
    status ="确定";
    
    pru1_0:PRU@
    
    
    
    @
    
    
    
    
    @
    
    
    @54434000};{pruuss ="确定
    
    
    
    "状态=";PRU 1:"pru400};PRU ="状态=";PRU ="状态:"pru400 μ";PRU = 1:"状态:1:";PRU ="状态:1:PR54u400 μ";PRU =" PRU@54478000{
    status ="确定";
    pinctrl-0 =<&pruss0_pru1_PINs>;
    };
    };
    };};
    
    &SGX{
    status ="确定";
    };
    

    我还在粘贴`dmesg | grep pinctrl`输出:

    [0.114315]   pinctrl 内核:已初始化 pinctrl 子系统
    [0.347841]   pinctrl-single 44e10800.pinmux:请更新 DTS 以使用#pinctrl-cells =<1>
    [0.348670]   pinctrl-single 44e10800.pinmux:PA f9e10800处199个引脚、尺寸796

    请告诉我、从我的结尾、您还需要什么其他东西

    谢谢、
    Puneeth

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

    Puneeth、

    您的设备树看起来是正确的、因为正如您所说的、您已禁用 DSS 引脚、因此应该不会发生冲突。 此外、由于 pruss0_pru1_pins 显示在引脚组中、看起来好像您正在加载 DTS。

    是的、dtb 文件应该在/boot/目录中有一个特定的名称。 在处理器 Linux SDK 示例中、每个 EVM 使用不同的器件树名。 下面是 AM437x GP EVM 上的 my /boot/目录的'ls -la'命令的输出。 您将注意到、我已修改 AM437X-GP-EVM.dTB (我正在使用的 GP EVM 的名称)中的 symolic 链接、以指向我创建的自定义 DTB、该定制 DTB 按照与您相同的方式修改了 PRU 引脚多路复用。

    lrwxrwxrwx 1 root root root 用户44 Jun28 28 20:27 AM437X-gp-evmhdm.dtb -> devicetree-zImage-AM437X-gp-evmi-hdmi-pru.dtb
    lrwxrwxrwx 1根根根39年6月29日21:28 AM437X-gp-evm.dTB -> devicetree-zImage-AM437X-gp-evm-pru.dTB
    lrwxrwxrwx 1 root root 用户36 Jun 29 03:42 AM437X-idk-evm.dTB -> devicetree-zImage-AM437X-idk-evm.dTB
    lrwxrwxrwx 1 root root 用户45 Jun29 03:42 AM437x-idk-PRU-ex-uio.dTB -> devicetree-zImage-AM437x-idk-PRU-ex-uio.dTB
    lrwxrwxrwx 1根根、35年6月29日03:42 AM437X-SK-EVM.DTB -> devicetree-zImage-AM437X-SK-EVM.DTB
    lrwxrwxrwx 1 root root 用户36 Jun 29 03:42 am43x-epos-evm.dTB -> devicetree-zImage-am43x-epos-evm.dTB
    -rw-r--r-- 1 root root 用户55393 Jun 28 20:26 devicetree-zImage-AM437X-gp-evmhdmi-pru.dtb
    -rw-r--r-- 1 root root 用户55337六月28 21:12 devicetree-zImage-AM437X-gp-evmhdm.dtb
    -rw-r--r-- 1 root root 用户54445 Jun28 20:25 devicetree-zImage-AM437X-gp-evm-pru.dtb
    -rw-r--r-- 1 root root 用户54389 Jun 28 21:12 devicetree-zImage-AM437X-gp-evm.dtb
    -rw-r--r-- 1 root root 48017 Jun 28 21:12 devicetree-zImage-AM437X-idk-evm.dtb
    -rw-r--r-- 1根根根52022年6月28 21:12 devicetree-zImage-AM437x-idk-PRU-Excl-uio.dTB
    -rw-r--r-- 1 root root 50263 Jun 28 21:12 devicetree-zImage-AM437X-SK-EVM.dTB
    -rw-r--r-- 1 root root 51163 Jun 28 21:12 devicetree-zImage-am43x-epos-evm.dtb
    rw-r--r-- 1根根根14082124 Jun 28 21:12 vmlinux-4.9.28-geed43d1050
    lrwxrwxrwx 1 root root root 用户25 Jun 29 03:42 zImage -> zImage-4.9.28-geed43d1050
    -rw-r--r-- 1根根3608512六月28 21:12 zImage-4.9.28-geed43d1050

    以下是我的 devmem2命令的输出、显示已选择多路复用模式5:

    root@AM437X-EVM:~# devmem2 0x44e108ec
    /dev/mem 已打开。
    映射到地址 bb6ff1000的内存。
    读取地址0x44E108EC (b6ff18ec):0x00020005
    根目录@AM437X-EVM:~编号

    由于您的 devmem2命令显示多路复用器模式7 (并且您的 DTS 未在任何地方将多路复用器模式设置为7)、我想知道 您是否仍在尝试通过 GPIO 系统 FS 接口来配置引脚、就像之前用于测试的那样? 如果您尝试从 PRU 切换引脚、则不应使用 GPIO sys FS 接口。

    Jason Reeder

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

    您好 Jason、

    我尝试使用不同的 PRU 子系统和 PRU 内核、但模式从未设置为正确的(PRU)模式。 (但它适用于 DSS 等设备!) 它显示在"pingroups"段中的 pruss0_pru1下、没错、但 devmem2表示它处于正常 GPIO 模式。 这是怎么可能的? 引导后是否有覆盖 DTB 配置的内容?

    我使用 MYIR MYD-C4378板(www.myirtech.com/list.asp)and板上的 U-Boot 访问引导分区而不是 rootfs/boot 分区来加载 zImage 和 DTB。 这是否会导致问题? (但在 PRU 以外的模式下、它的工作情况如何?)
    尽管如此,我更新了所有符号链接,以指向我放置在 rootfs/boot 文件夹中的自定义 DTB。

    当我将 DTS 配置为 PRU 时、我不使用 GPIO 接口、而是尝试仅通过 Remoteproc 切换它。

    谢谢、
    Puneeth

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

    Puneeth、

    请尝试将 pinctrl-names ="default"添加到 pru0_1节点(如下所示)。 我刚刚将 pru0_1节点复制并粘贴到 DT 中、没有该行、我的 devmem2显示多路复用模式7 (与您的一样)。 当我添加该行时、devmem2显示了正确的模式5:

            pru0_1:PRU@54478000{

                状态="正常";

                pinctrl-names ="default";

                pinctrl-0 =<&pruss0_pru1_PINs>;

            };

    希望这将解决您的问题。

    Jason Reeder

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jason、
    添加该行可解决该问题。
    非常感谢您的帮助、
    Puneeth