问题:在Jetpack6.0 AGX Orin custom board,测试C56和C58 串口通信,在pinmux设置function为uarti,这个串口跟电脑能通信,设置为uarte不能通信
操作步骤:
一、修改版本:
修改pinmux,把C56和C58的function设置为uarti或者uarte;
修改dts把uarti或uarte设置serial enable
二、
电路图
pinmux修改
dts修改:
问题:在Jetpack6.0 AGX Orin custom board,测试C56和C58 串口通信,在pinmux设置function为uarti,这个串口跟电脑能通信,设置为uarte不能通信
操作步骤:
一、修改版本:
修改pinmux,把C56和C58的function设置为uarti或者uarte;
修改dts把uarti或uarte设置serial enable
二、
电路图
pinmux修改
dts修改:
不太確定這個問題的意思. 那為什麼你不能就設成uarti然後使用?
目前我们是设置为uarti然后使用,但uarti在刚上电会有boot的打印,进入内核就跟ttTHS那些serial一样ok了。
我们有疑问,为什么不能设置为uarte?
这里描述的dts截图更正一下,3140000这个node的status是okay,然后才去尝试uarte,uarte的device是/dev/ttyS3
uarti的device是/dev/ttyAMA3
我確認一下 你kernel的部份做的那些改動到底是要用哪個pin?
或是說你這一系列的改動是有人教你這樣做的 還是你自己嘗試改的?
参考这个AGX ORIN UART2_RX(C56) UART2_TX(C58) can use for uart(serial)? - #5 by LeonChen
kernel其实没做改动,修改pinmux和修改linux_for_tegra/source/hardware/nvidia/t23x/nv-public/tegra234-p3737-0000+p3701-0000.dts,
把serial@3140000设置okay,
serial@3140000 {
status = “okay”;
};
在aliases {
serial0 = &tcu;
serial1 = &uarta;
};增加serial3=&uarte;
这样修改之后,测试orin uarte和PC电脑串口是不能收发数据的;同样的修改方法,测试uarti是可以收发数据的。
我之前的dts的uarte有点问题,只把status状态置为okay,没有设置 compatible = “nvidia,tegra194-hsuart”;导致设备节点是/dev/ttyS3
serial@3140000 {
status = “okay”;
};
修改为下面这样定义就可以了生成设备节点/dev/ttyTHS3
serial@3140000 {
status = “okay”;
compatible = “nvidia,tegra194-hsuart”;
reset-names = “serial”;
};
完整的方法:
1、pinmux修改C56和C58的pin function为uarte
2、修改dts:
(1)、增加aliases,否则dmesg报错3140000没有alias
aliases {
serial3 = &uarte;
};
(2)、把3140000节点使能,并设置正确的compatible:
serial@3140000 {
status = “okay”;
compatible = “nvidia,tegra194-hsuart”;
reset-names = “serial”;
};
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.