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.

[参考译文] TDA4VM:TDA4VM 入门套件的 UART 端口。

Guru**** 2855850 points

Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1633394/tda4vm-uart-port-of-tda4vm-starter-kit

器件型号: TDA4VM

您好、

我目前正在将 TDA4VM 处理器入门套件用于 Edge AI 视觉系统。 我想将 J3 扩展接头的第 8 引脚和第 9 引脚用于 UART。

此外、我希望使用 TDA4VM 开发我的定制电路板、并利用 TDA4VM 处理器的 8 个 UART 和 2 个 SPI 通道。

问题

1) 请使用 J3 扩展接头的 UART 通道以 C++提供示例程序。
2) 如何使用 Edge AI 视觉系统验证其余的 UART 通道。

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

    尊敬的 Gautham:

    我想将 J3 扩展头的第 8 引脚和第 9 引脚用于 UART。

    无法将 J3 扩展接头的第 9 引脚用于 UART、因为它接地。

    此致

    Gokul Praveen

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

    你好、 Gokul Praveen 

     我想将 UART 通信进行第 8 个和第 10 个拼写错误。

    谢谢你

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

    尊敬的 Gautham:

    有关引脚配置、请参阅以下数据表。 您可以设置 UART2 以将其 TX 线路设置为引脚 AA24、将其 RX 线路设置为引脚 AA26。

    e2e.ti.com/.../J721E_5F00_Datasheet.pdf

    此致

    Gokul Praveen

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

    感谢您的意见。 我们还想知道如何在 TDA4VM 入门套件的 C++中为边缘 AI 视觉系统设置 Pin Mux 模式。 如果需要进行任何其他引脚配置设置来验证 UART、请也分享这些设置。

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

    尊敬的 Gautham:

    我们还想知道如何在适用于边缘 AI 视觉系统的 TDA4VM 入门套件上的 C++中设置 Pin Mux 模式。 如果需要任何其他引脚配置设置来验证 UART、则

    只是为了确认。 您使用的是 Linux 还是使用基于 RTOS 的代码/SDK?

    此致

    Gokul Praveen

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

    你好 Gokul Praveen ,

    我们正在研究 Linux 系统。

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

    你好、 Gokul Praveen 

    我正在处理 Linux 系统  

    uname -A
    Linux tda4vm-sk 6.12.17-ti-00773-gcdcaeac783e3-dirty #1 SMP 抢占周四 4 月 3 日 17:42:36 UTC 2025 AArch64 GNU/Linux

    再到 UART2 引脚、我已完成以下步骤

    1) 反编译 dtb:在/boot/dtb/ti 目录中运行 dtc -i dtb -O dts -o k3-j721e-sk.dts k3-j721e-sk.dtb  

    2) 在 DTS 文件中的 pinctrl @11c000 处添加 UART2 引脚多路复用器

    main-uart2-default-pins {
    pinctrl-single,pins = <
    0x148 0x1000e /* AA26 → UART2_RXD */
    0x11c 0x5000e /* AA24 → UART2_TXD */
    >;
    phandle = <0x3ff>; // pick a unique phandle number not used elsewhere
    };

    3) 更新 UART2 节点并更改了 串行@2820000

    serial@2820000 {
    			compatible = "ti,j721e-uart\0ti,am654-uart";
    			reg = <0x00 0x2820000 0x00 0x100>;
    			interrupts = <0x00 0xc2 0x04>;
    			clock-frequency = <0x2dc6c00>;
    			power-domains = <0x08 0x117 0x01>;
    			clocks = <0x07 0x117 0x00>;
    			clock-names = "fclk";
    
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x3ff>;
    			
    
    			phandle = <0x12f>;
    		};

    4) 将 dts 编译为 dtb DTC -I dts -O dtb -o k3-j721e-sk-new.dtb k3-j721e-sk.dts、并复制了/boot/dtb/ti 中的文件

    5) 重新启动

    但是、在修改上述内容并运行以下终端检查后

    LS /dev/ttyS *
    /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3
    root@tda4vm-sk:/opt/edgeai-gst-apps # dmesg | grep uart
    root@tda4vm-sk:/opt/edgeai-gst-apps echo “hello">“>/dev/ttyS3
    root@tda4vm-sk:/opt/edgeai-gst-apps cat /dev/ttyS3

    ^C


    TTYS*与默认模式相同。

    在偶数环回中、我桥接了 8 个和 10 个引脚。

    建议我如何继续。

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

    尊敬的 Gautham:

    3) 更新 UART2 节点并更改了 串行@2820000

    我认为 您使用的 UART 节点不正确。  

    以下是正确的主 UART2 节点、请将其添加到 k3-j721-main.dtsi。

    main_uart2: serial@2820000 {
    		compatible = "ti,j721e-uart", "ti,am654-uart";
    		reg = <0x00 0x02820000 0x00 0x100>;
    		interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
    		clock-frequency = <48000000>;
    		power-domains = <&k3_pds 279 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 279 0>;
    		clock-names = "fclk";
    		status = "disabled";
    	};

    此外、请将以下更改添加到 k3-j721e-sk.dts 文件中。  

    diff --git a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts
    index 050776cb4df8..8d8dd1b14697 100644
    --- a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts
    +++ b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts
    @@ -21,6 +21,7 @@ aliases {
     		serial1 = &mcu_uart0;
     		serial2 = &main_uart0;
     		serial3 = &main_uart1;
    +		serial4 = &main_uart2;
     		ethernet0 = &cpsw_port1;
     		mmc1 = &main_sdhci1;
     	};
    @@ -289,6 +290,13 @@ J721E_IOPAD(0x1fc, PIN_OUTPUT, 0) /* (AB4) UART1_TXD */
     		>;
     	};
     
    +	main_uart2_pins_default: main-uart2-default-pins {
    +		pinctrl-single,pins = <
    +			J721E_IOPAD(0x148, PIN_INPUT, 14) /* (AA26) UART2_RXD */
    +			J721E_IOPAD(0x11C, PIN_OUTPUT, 14) /* (AA24) UART2_TXD*/		
    +		>;
    +	};
    +
     	main_i2c0_pins_default: main-i2c0-default-pins {
     		pinctrl-single,pins = <
     			J721E_IOPAD(0x220, PIN_INPUT_PULLUP, 0) /* (AC5) I2C0_SCL */
    @@ -452,8 +460,8 @@ J721E_IOPAD(0x1B0, PIN_INPUT, 7) /* (W24) RGMII6_RD1.GPIO0_107 */
     			J721E_IOPAD(0x1A0, PIN_INPUT, 7) /* (W29) RGMII6_TXC.GPIO0_103 */
     			J721E_IOPAD(0x008, PIN_INPUT, 7) /* (AG22) PRG1_PRU0_GPO1.GPIO0_2 */
     			J721E_IOPAD(0x1D0, PIN_INPUT, 7) /* (AA3) SPI0_D1.GPIO0_115 */
    -			J721E_IOPAD(0x11C, PIN_INPUT, 7) /* (AA24) PRG0_PRU1_GPO7.GPIO0_70 */
    -			J721E_IOPAD(0x148, PIN_INPUT, 7) /* (AA26) PRG0_PRU1_GPO18.GPIO0_81 */
    +			J721E_IOPAD(0x11C, PIN_OUTPUT, 14) /* (AA24) PRG0_PRU1_GPO7.GPIO0_70 */
    +			J721E_IOPAD(0x148, PIN_INPUT, 14) /* (AA26) PRG0_PRU1_GPO18.GPIO0_81 */
     			J721E_IOPAD(0x004, PIN_INPUT, 7) /* (AC23) PRG1_PRU0_GPO0.GPIO0_1 */
     			J721E_IOPAD(0x014, PIN_INPUT, 7) /* (AH23) PRG1_PRU0_GPO4.GPIO0_5 */
     			J721E_IOPAD(0x020, PIN_INPUT, 7) /* (AE20) PRG1_PRU0_GPO7.GPIO0_8 */
    @@ -776,6 +784,12 @@ &main_uart1 {
     	pinctrl-0 = <&main_uart1_pins_default>;
     };
     
    +&main_uart2 {
    +	status = "okay";
    +	pinctrl-names = "default";
    +	pinctrl-0 = <&main_uart2_pins_default>;
    +};
    +
     &main_sdhci1 {
     	/* SD Card */
     	status = "okay";
    

    完成此操作后、重建设备树并将其复制到/boot/dtb/ti 文件夹。

    然后、主 UART 2 应作为/dev/ttyS4.出现

    此致

    Gokul Praveen

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

    你好 Gokul Praveen 

    我已经尝试了上述步骤、但仍然无法从命令 ls /dev/ttyS 找到/dev/ttyS4

    我在此提及我所遵循的步骤顺序

    步骤 1: 克隆 GitHub 存储库: https://github.com/TexasInstruments/ti-linux-kernel.git

    第 2 步: 在目录 cd arch/arm64/boot/dts/ti/中、我无法找到此文件  k3-j721-main.dtsi。  但我已经看到了这一点  k3-j721e-main.dtsi  并验证了 MAIN_uart2、与您提到的相同。

    第 3 步: 位于  k3-j721e-sk.dts 中  

    我在“别名“部分进行了更新  

    别名{
    serial4 =&MAIN_uart2;
    };

    引脚多路复用部分  


    MAIN_uart2_pins_default:main-uart2-default-pins{
    pinctrl-single、pins =<
    J721E_IOPAD (0x148、PIN_INPUT、14)
    J721E_IOPAD (0x11C、PIN_OUTPUT、14)
    >;
    };

    已启用 UART2

    &MAIN_uart2{
    状态=“正常“;
    pinctrl-names =“default";“;
    pinctrl-0 =<&MAIN_uart2_pins_default>;
    };

    对 UART 修改 GPIO 冲突引脚
    J721E_IOPAD (0x11C、PIN_INPUT、7) Left right arrow  J721E_IOPAD (0x11C、PIN_INPUT、14)  
    J721E_IOPAD (0x148、PIN_INPUT、7)  Left right arrowμ s   J721E_IOPAD (0x148、PIN_INPUT、14)    

    第 4 步: BUID:DTB
    1) 上面提到的 git 文件夹内。 我运行了以下命令
    2) 导出 ARCH=ARM64
    3) 导出 cross_compile=aarch64-linux-gnu-
    4) 制作 defconfig
    5) 制作 dtbs -J8

    第 5 步:  我已将 k3-j721e-sk.dtb 文件复制到/boot/dtb/ti 中、在复制之前、我删除了之前的 DTB 文件

    第 6 步: 重新启动并通过命令 ls /dev/ttyS 进行验证、与之前相同。

    请向我建议如何继续。

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

    尊敬的 Gautham:

    [引述 userid=“513473" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1633394/tda4vm-uart-port-of-tda4vm-starter-kit/6304927 第 2 步: 在目录 cd arch/arm64/boot/dts/ti/中、我无法找到此文件  k3-j721-main.dtsi。  但我已经看到了这一点  k3-j721e-main.dtsi  归档并验证了 main_uart2、与您提到的相同。

    很抱歉,这是一个拼写错误。 好了 k3-j721e-main.dtsi。

    [引述 userid=“513473" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1633394/tda4vm-uart-port-of-tda4vm-starter-kit/6304927 ]J721E_IOPAD (0x11C、PIN_INPUT、7)    J721E_IOPAD (0x11C、PIN_INPUT、14) 【报价】

    这应为 J721E_IOPAD (0x11C、PIN_OUTPUT、14)。

    此外、在进行上述升级后、您可以在 Linux 中共享以下命令的输出吗?

    devmem2 0x0011C11C
    devmem2 0x0011C148
    

    此致

    Gokul Praveen

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

    你好、 Gokul Praveen 

    我修改了 0x11c 引脚并再次构建了 DTB。

    上述命令的输出如下共享。

    root@tda4vm-sk:/opt/edgeai-gst-apps ls /dev/ttyS *
    /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3

    root@tda4vm-sk:/opt/edgeai-gst-apps devmem2 0x0011C11C
    /dev/mem 已打开。
    映射到地址 0xff9cc0a000 的存储器。
    读取地址:0x0011C11C (0xffff9cc0a11c):0x0001000E

    root@tda4vm-sk:/opt/edgeai-gst-apps devmem2 0x0011C148
    /dev/mem 已打开。
    映射到地址 0xff92f21000 的存储器。
    读取地址:0x0011C148 (0xff92f21148):0x0005400E

    感谢您的反馈。

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

    尊敬的 Gautham:

    您必须将串行转 USB 转换器连接到这些引脚、然后将转换器的 USB 端连接到 PC、以便主 uart2 显示为/dev/ttyS4 节点。 您能验证一下吗?

    这是串行转 USB 转换器。

    此致

    Gokul Praveen

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

    你好 Gokul Praveen 

    而不是串行到 USB 转换器。 我正在将串行连接到 DB9 与 MAX3491(收发器 IC)。

    我的实验装置。

    串行 Left right arrow MAX3491 Left right arrow DB9。  DB9 已连接到系统并已通电

    我无法检测到 tts4

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

    我也已在 USB 转 UART 以及相同结果中进行了验证、但在我设置的 UART 转 MAX3491、然后转 DB9 中进行了验证。

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

    尊敬的 Gautham:

    感谢您的确认。

    我会尝试在我结束时进行测试、然后返回给您。

    此致

    Gokul Praveen

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

    你好、 Gokul Praveen 

    问题已重新出现。 串行程序 282000 分配给 ttyS0、它没有创建 ttyS4。 感谢您的支持。

    dmesg | grep -i serial
    [ 0.829234]串行:8250/16550 驱动程序、4 个端口、启用 IRQ 共享
    [ 1.355203] MMIO 0x40a00000 (IRQ = 206、base_baud = 60000) 处的 40a00000.serial: ttyS1 是 8250
    [ 1.364888]位于 MMIO 0x2800000 (IRQ = 207、base_baud = 3000000) 处的 2800000.serial: ttyS2 是 8250
    [ 1.397771] 2810000.serial: ttyS3 (MMIO 0x2810000 (IRQ = 208、base_baud = 3000000) 是一个 8250
    [ 1.407092]在 MMIO 0x2820000 (IRQ = 209、base_baud = 3000000) 处的 2820000.serial: ttyS0 是 8250
    [1.523524] pinctrl-single 11c000.pinctrl:2820000.serial;已请求的 PIN PIN71 无法申请 600000.GPIO
    [4.190254] systemd[1]:已创建切片/system/serial-getty.


    但在 TDA4VM 原理图上 、有 10 个 UART 可用于 Linux、这是一种通过并行方式验证入门套件上剩余的 UART、或者需要开发定制电路板的方法。

    谢谢你

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

    尊敬的 Gautham:

    此问题已重新出现。 串行程序 282000 分配给 ttyS0、它没有创建 ttyS4。 感谢您的支持。
    • 但不是用于唤醒 UART 的串行 0。 或者、您已经删除了它。

    • 此外,你可以共享 git diff 包含所有应用于使主 UART 2 正常工作的更改,这样我也可以记下它。  
    但是、在 TDA4VM 原理图 上、它说可以在 Linux 上使用 10 个 UART:一种方法是并行验证入门套件上的其余 UART、或者需要开发定制电路板。

    一个定制的电路板将必须开发,高通作为其他 UART 不暴露给外部世界,不像 MAINUART0 , MAINUART1 和 MainUART 2。

    此致

    Gokul Praveen

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

    你好、 Gokul Praveen 

    我没有更改或删除序列 0。 Git diff 在下面共享

    diff --git a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts
    old mode 100644
    new mode 100755
    index 81ebfa7413a1..ade3b1e1c489
    --- a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts
    +++ b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts
    @@ -21,6 +21,7 @@ aliases {
     		serial1 = &mcu_uart0;
     		serial2 = &main_uart0;
     		serial3 = &main_uart1;
    +		serial4 = &main_uart2;
     		ethernet0 = &cpsw_port1;
     		mmc1 = &main_sdhci1;
     	};
    @@ -399,6 +400,13 @@ J721E_IOPAD(0x1fc, PIN_OUTPUT, 0) /* (AB4) UART1_TXD */
     		>;
     	};
     
    +	main_uart2_pins_default: main-uart2-default-pins {
    +		pinctrl-single,pins = <
    +			J721E_IOPAD(0x148, PIN_INPUT, 14)
    +			J721E_IOPAD(0x11C, PIN_OUTPUT, 14)
    +		>;
    +	};
    +
     	main_i2c0_pins_default: main-i2c0-default-pins {
     		pinctrl-single,pins = <
     			J721E_IOPAD(0x220, PIN_INPUT_PULLUP, 0) /* (AC5) I2C0_SCL */
    @@ -564,6 +572,8 @@ J721E_IOPAD(0x008, PIN_INPUT, 7) /* (AG22) PRG1_PRU0_GPO1.GPIO0_2 */
     			J721E_IOPAD(0x1D0, PIN_INPUT, 7) /* (AA3) SPI0_D1.GPIO0_115 */
     			J721E_IOPAD(0x11C, PIN_INPUT, 7) /* (AA24) PRG0_PRU1_GPO7.GPIO0_70 */
     			J721E_IOPAD(0x148, PIN_INPUT, 7) /* (AA26) PRG0_PRU1_GPO18.GPIO0_81 */
    +			J721E_IOPAD(0x11C, PIN_OUTPUT, 14) /* (AA24) PRG0_PRU1_GPO7.GPIO0_70 */
    +			J721E_IOPAD(0x148, PIN_INPUT, 14) /* (AA26) PRG0_PRU1_GPO18.GPIO0_81 */
     			J721E_IOPAD(0x004, PIN_INPUT, 7) /* (AC23) PRG1_PRU0_GPO0.GPIO0_1 */
     			J721E_IOPAD(0x014, PIN_INPUT, 7) /* (AH23) PRG1_PRU0_GPO4.GPIO0_5 */
     			J721E_IOPAD(0x020, PIN_INPUT, 7) /* (AE20) PRG1_PRU0_GPO7.GPIO0_8 */
    @@ -880,12 +890,19 @@ &main_uart0 {
     	bootph-all;
     };
     
    +
     &main_uart1 {
     	status = "okay";
     	pinctrl-names = "default";
     	pinctrl-0 = <&main_uart1_pins_default>;
     };
     
    +&main_uart2 {
    +	status = "okay";
    +	pinctrl-names = "default";
    +	pinctrl-0 = <&main_uart2_pins_default>;
    +};
    +
     &main_sdhci1 {
     	/* SD Card */
     	status = "okay";


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

    尊敬的 Gautham:

    感谢您的信息。

    此致

    Gokul Praveen