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.

[参考译文] SK-AM62-SIP:从器件树编译问题启用 UART5

Guru**** 2550940 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1564155/sk-am62-sip-enabling-uart5-from-device-tree-compilation-issue

器件型号:SK-AM62-SIP
主题:SysConfig 中讨论的其他器件

工具/软件:

大家好:

我主要在将.dtso 文件编译到.dtbo 时遇到问题

请提供任何建议。  

目标是启用扩展连接器上的 UART5 引脚。  

硬件:AM62SIP EVM

PSDK:ti-processor-sdk-linux-am62xxsip-evm-10.01.10.04-Linux-x86-Install.bin

我向 arch/arm64/boot/dts/ti/添加了 k3-am62x-sk-uart5.dtso

文件包含  

/dts-v1/;
/plugin/;

#include <dt-bindings/pinctrl/k3.h>
#include <dt-bindings/gpio/gpio.h>

/* AM62x SK / SiP SK: 40-pin header UART5 on J3:
 *   Pin 8  -> EXP_UART5_TXD (SoC ball E15)
 *   Pin 10 -> EXP_UART5_RXD (SoC ball C15)
 * MUST be mode 1 (TI E2E correction).
 */

&main_pmx0 {
    user_exp_uart5_pins_default: user-exp-uart5-pins-default {
        pinctrl-single,pins = <
            AM62X_IOPAD(0x01dc, PIN_OUTPUT, 1) /* E15 -> UART5_TXD */
            AM62X_IOPAD(0x01d8, PIN_INPUT,  1) /* C15 -> UART5_RXD */
        >;
    };
};

&main_uart5 {
    pinctrl-names = "default";
    pinctrl-0 = <&user_exp_uart5_pins_default>;
    status = "okay";
};


&{/} {
    aliases { serial5 = &main_uart5; };
}

/* power the 40-pin 3V3 rail 
&main_i2c1 {
    gpio@22 { /* TCA6424 at 0x22 *\/
        p05-hog {
            gpio-hog;
            gpios = <5 GPIO_ACTIVE_HIGH>; /* EXP_PS_3V3_EN *\/
            output-high;
            line-name = "EXP_PS_3V3_EN";
        };
    };
};
*/

还在 arch/arm64/boot/dts/ti/中的 make 文件中添加了以下内容

dtb-$(CONFIG_arch_k3)+= k3-am62x-sk-uart5.dtbo



已运行以下导出和源  

Export SDK_INSTALL_DIR=~/Desktop/8-11-processor-SDK-10x

source “$SDK_INSTALL_DIR/linux-devkit/environment-setup-aarch64-oe-linux"</s>“

目录中的小工具  

  • cd “$SDK_INSTALL_DIR/board-support/ti-linux-kernel-6.6.58+git-ti"</s>“

我跑了

清洁

制作 dtbs  



make dtbs、获得以下错误:  

arch/arm64/boot/dts/ti/k3-am62x-sk-uart5.dtso:4:10: fatal error: dt-bindings/pinctrl/k3.h: No such file or directory

    4 | #include <dt-bindings/pinctrl/k3.h>

      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~

compilation terminated.

make[3]: *** [scripts/Makefile.lib:426: arch/arm64/boot/dts/ti/k3-am62x-sk-uart5.dtbo] Error 1

make[2]: *** [scripts/Makefile.build:480: arch/arm64/boot/dts/ti] Error 2

make[1]: *** [/home/davidsober/Desktop/8-11-processor-SDK-10x/board-support/ti-linux-kernel-6.6.58+git-ti/Makefile:1398: dtbs] Error 2

make: *** [Makefile:234: __sub-make] Error 2




理想情况下、我们可以将 dtbs 编译到 dtbo、以便将文件放在引导分区的 dtb 目录中、并通过 uEnv.txt 启用它  

但是、如果这种方法不理想、我们应该专注于修补整个设备树、那么请就此提出建议。  

  • 我理解这可能需要一个不同的职位。  



感谢您抽出时间。

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

    后续。 用于缺少的头文件  #include 它是否应使用 SysConfig 工具生成?  

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

    您好、David:

    缺少的头文件  #include 它是否应使用 SysConfig 工具生成?  [/报价]

    请参阅内核树中的其他 k3-am62*.dtso 文件、要包含的文件应为:

    #include “k3-pinctrl.h"</s>“

    [报价 userid=“653199" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1564155/sk-am62-sip-enabling-uart5-from-device-tree-compilation-issue

    已运行以下导出和源  

    Export SDK_INSTALL_DIR=~/Desktop/8-11-processor-SDK-10x

    source “$SDK_INSTALL_DIR/linux-devkit/environment-setup-aarch64-oe-linux"</s>“

    目录中的小工具  

    • cd “$SDK_INSTALL_DIR/board-support/ti-linux-kernel-6.6.58+git-ti"</s>“

    我跑了

    清洁

    制作 dtbs  

    [/报价]

    SDK 并不执行这些步骤,而是提供了一种编译内核器件树的简单方法 — 在 SDK 顶层目录(不在内核 src 中)处运行命令:

    $创建 linux_dtbs

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

    大家好、Bin Lui、感谢您对此进行研究。  

    我删除了我拥有的#include、并将其替换为您提到的#include。 此外、make linux-dtbs 比我执行的步骤更有帮助、速度更快。  

    以下是使用 make linux-dtbs 构建的

    /dts-v1/;
    /plugin/;
    
    #include "k3-pinctrl.h"
    
    &main_pmx0 {
        user_exp_uart5_pins_default: user-exp-uart5-pins-default {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x01dc, PIN_OUTPUT, 1) /* E15 -> UART5_TXD */
                AM62X_IOPAD(0x01d8, PIN_INPUT,  1) /* C15 -> UART5_RXD */
            >;
        };
    };
    
    &main_uart5 {
        pinctrl-names = "default";
        pinctrl-0 = <&user_exp_uart5_pins_default>;
        status = "okay";
    };
    
    /*
    &{/} {
        aliases { serial5 = &main_uart5; };
    }
    */
    
    /* power the 40-pin 3V3 rail 
    &main_i2c1 {
        gpio@22 { /* TCA6424 at 0x22 *\/
            p05-hog {
                gpio-hog;
                gpios = <5 GPIO_ACTIVE_HIGH>; /* EXP_PS_3V3_EN *\/
                output-high;
                line-name = "EXP_PS_3V3_EN";
            };
        };
    };
    */
    

    我注释了别名、因为这会产生语法错误。  

    将.dtbo 移至 boot/dtb/ti/中的 dtb 并将 ti 添加到 uEnv.txt linux 后、已启动但我没有看到 uart5 处于激活状态、如下所示:  

    root@sk-am62-sip:~# cat /proc/tty/driver/serial 
    serinfo:1.0 driver revision:
    0: uart:unknown port:00000000 irq:0
    1: uart:unknown port:00000000 irq:0
    2: uart:8250 mmio:0x02800000 irq:238 tx:23461 rx:153 RTS|DTR|DSR
    3: uart:unknown port:00000000 irq:0
    4: uart:unknown port:00000000 irq:0
    5: uart:unknown port:00000000 irq:0
    6: uart:unknown port:00000000 irq:0
    7: uart:unknown port:00000000 irq:0
    8: uart:unknown port:00000000 irq:0
    9: uart:unknown port:00000000 irq:0
    10: uart:unknown port:00000000 irq:0
    11: uart:unknown port:00000000 irq:0
    

    我认为它不活跃、因为我没有像本文中提到的那样为 uart5 分配别名  

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1372383/sk-am62-how-to-enable-userexpension-uart?utm_source=chatgpt.com 

    是的、因此、此时它应该只是一个语法问题。 我只需要启用别名部分、而不会出现语法错误。 很快就会更新

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

    嗨 Bin Liu

    更新:我只需要为 serial5 别名找到正确的路径

    我编译了以下 dtso

    /dts-v1/;
    /plugin/;
    
    
    #include "k3-pinctrl.h"
    
    &main_pmx0 {
        user_exp_uart5_pins_default: user-exp-uart5-pins-default {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x01dc, PIN_OUTPUT, 1) /* E15 -> UART5_TXD */
                AM62X_IOPAD(0x01d8, PIN_INPUT,  1) /* C15 -> UART5_RXD */
            >;
        };
    };
    
    &main_uart5 {
        pinctrl-names = "default";
        pinctrl-0 = <&user_exp_uart5_pins_default>;
        status = "okay";
    };
    
    
    &{/} {
        aliases {
            /* UART-5 lives at /bus@f0000/serial@2850000 in k3-am62-main.dtsi */
            serial5 = "/bus@f0000/serial@2850000";
        };
    };
    
    
    /*
    &{/} {
        aliases { serial5 = &main_uart5; 
        };
    };
    */
    

    结果显示我用于别名的路径是错误的

      DTC     arch/arm64/boot/dts/ti/k3-am62x-sk-uart5.dtbo
    arch/arm64/boot/dts/ti/k3-am62x-sk-uart5.dtso:26.9-47: Warning (alias_paths): /fragment@2/__overlay__/aliases:serial5: aliases property is not a valid node (/bus@f0000/serial@2850000)
    

    在哪里可以找到此别名的正确路径?

    我在 k3-am62*示例下看到   

    k3-am62a7-sk-Ethernet-dco1.dtso

    下面是一个片段

    &{/} {
    
        aliases {
    
            ethernet1 = "/bus@f0000/ethernet@8000000/ethernet-ports/port@2";
    
        };
    
    };

    从示例中、我看到我们需要找到正确的路径来完成正确的别名。  

    路径是从 SysConfig 工具生成的吗?

    再次感谢您抽出宝贵的时间。  

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

    您好、David:

    有多种方法可以找到该路径。 我想您可以简单地在/sys/firmware/devicetree/fdt/base 下搜索电路板上的*main_uart5*并加载 uart5 叠加层。  

    很抱歉、我不在办公室、无法访问我的 EVM 和内核代码、无法告诉您确切的路径。  

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

    尊敬的 Bin:

    我的错误、上面 dtso 中的路径是正确的。 我正在进行无关的测试、导致了警告。

    下面回顾一下在扩展连接器 J3 上启用 uart5 的以下 dtso。

    /dts-v1/;
    /plugin/;
    
    
    #include "k3-pinctrl.h"
    
    &main_pmx0 {
        user_exp_uart5_pins_default: user-exp-uart5-pins-default {
            pinctrl-single,pins = <
                AM62X_IOPAD(0x01dc, PIN_OUTPUT, 1) /* E15 -> UART5_TXD */
                AM62X_IOPAD(0x01d8, PIN_INPUT,  1) /* C15 -> UART5_RXD */
            >;
        };
    };
    
    &main_uart5 {
        pinctrl-names = "default";
        pinctrl-0 = <&user_exp_uart5_pins_default>;
        status = "okay";
    };
    
    
    &{/} {
        aliases {
            serial5 = "/bus@f0000/serial@2850000";
        };
    };

    这是端口确认  

    cat /proc/tty/driver/serial
    serinfo:1.0 driver revision:
    0: uart:unknown port:00000000 irq:0
    1: uart:unknown port:00000000 irq:0
    2: uart:8250 mmio:0x02800000 irq:238 tx:69575 rx:1320 RTS|DTR|DSR
    3: uart:unknown port:00000000 irq:0
    4: uart:unknown port:00000000 irq:0
    5: uart:8250 mmio:0x02850000 irq:240 tx:230 rx:230 RTS|DTR|DSR
    6: uart:unknown port:00000000 irq:0
    7: uart:unknown port:00000000 irq:0
    8: uart:unknown port:00000000 irq:0
    9: uart:unknown port:00000000 irq:0
    10: uart:unknown port:00000000 irq:0
    11: uart:unknown port:00000000 irq:0
    

    我找到了在您提到的位置确认 uart5 的路径。  

    /sys/firmware/devicetree/base/bus@f0000

    我们看到 串行@2850000

    root@sk-am62-sip:/sys/firmware/devicetree/base/bus@f0000# ls
    '#address-cells'            ecc@25010000                   phandle          spi@20110000
     audio-controller@2b00000   esm@420000                     phy@30110000     spi@20120000
     audio-controller@2b10000   ethernet@8000000               pinctrl@f4000    spinlock@2a000000
     audio-controller@2b20000   gpio@600000                    pruss@30040000   sram@70000000
     bootph-all                 gpio@601000                    pwm@23000000     system-controller@44043000
     bus@100000                 gpu@fd00000                    pwm@23010000     ticsi2rx@30102000
     bus@4000000                i2c@20000000                   pwm@23020000     timer@2400000
     bus@48000000               i2c@20010000                   pwm@23100000     timer@2410000
     bus@b00000                 i2c@20020000                   pwm@23110000     timer@2420000
     bus@fc00000                i2c@20030000                   pwm@23120000     timer@2430000
     can@20701000               interrupt-controller@1800000   ranges           timer@2440000
     compatible                 interrupt-controller@a00000    serial@2800000   timer@2450000
     counter@23200000           mailbox@29000000               serial@2810000   timer@2460000
     counter@23210000           mailbox@43600000               serial@2820000   timer@2470000
     counter@23220000           memory-controller@3b000000     serial@2830000   watchdog@e000000
     crc@30300000               mmc@fa00000                    serial@2840000   watchdog@e010000
     crypto@40900000            mmc@fa10000                    serial@2850000   watchdog@e020000
     dss@30200000               mmc@fa20000                    serial@2860000   watchdog@e030000
     dwc3-usb@f900000           mux-controller@a40000         '#size-cells'     watchdog@e0f0000
     dwc3-usb@f910000           name                           spi@20100000
    

    再次感谢您花时间帮助解决此问题!

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

    很高兴问题得到解决。 感谢您分享详细信息。  

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

    尊敬的 Bin Liu:

    我仍然收到以下警告、但一切似乎都正常、正如预期的那样。  

    我在 Armbian 上使用 PSDK 10x、它是在 PSDK 11X 上制造的。 不确定原因是否如此。 但根据您的经验、这些警告不应存在、对吧?  

      DTC     arch/arm64/boot/dts/ti/k3-am62x-sk-uart5.dtbo
    arch/arm64/boot/dts/ti/k3-am62x-sk-uart5.dtso:25.9-47: Warning (alias_paths): /fragment@2/__overlay__/aliases:serial5: aliases property is not a valid node (/bus@f0000/serial@2850000)
    

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

    您好、我在办公室外一周、请期待收到延迟的回复。

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

    别担心。 可能会删除此后续跟踪、因为问题已解决、但只是很好奇。  

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

    您好、David:

    可以忽略此别名警告消息。 仅当您编译此 dtbo 时才会看到:

    $ make ARCH=... CROSS_COMPILE=……  ti/k3-am625--sk-uart5.dtbo

    如果编译整个内核器件树、则不会看到该消息:

    $ make ARCH=... CROSS_COMPILE=…… 抖动