xavier nx平台将控制台更改为其他串口1

free-jdx 2021-06-11 11:24:45 9596
1. 前言

代替默认的ttyTCU0。
是否有办法将控制台端口更改为其他uart端口?
试图修改tegra194-p3668-common.dtsi和cboot源代码切换/禁用控制台uart,
并它没有影响控制台仍然来自ttyTHS0 /ttyTCU0与tegra组合uart机制。

tegra194-p3668-common.dtsi
chosen {
bootargs =“console=ttyTHS1,115200”;
board-has-eeprom;
nvidia,tegra-joint_xpu_rail;
};
2. 查询方法

Jetson Xavier NX将三个uart带出主连接器;
可以访问NX Product Design Guide,
并检查[表10-7]的引脚描述。

可以搜索由ttyUSB启用发送串行数据的串行端口,
在Ubuntu主机上检查$ ls -la /dev/ttyUSB

并使用picocom或minicom工具连接uart日志
默认波特率设置为115200/8n1。

3. 查询设备节点& 设备树映射

可以参考内核初始消息,检查所有挂载的串行端口,

$ dmesg | grep THS

可以访问L4T sources包的公共发布源
可以检查设备树设置的映射。

$L4T_Sources/r32.4.3/Linux_for_Tegra/source/public/hardware/nvidia/soc/t19x/kernel-dts/tegra194-soc/tegra194-soc-uart.dtsi

现在使用的bsp是L4T r32.4.3
tegra194-p3668-common.dtsi中默认的uart相关设置是

serial@3100000 {
    compatible = "nvidia,tegra186-hsuart";
    status = "okay";
};

serial@3140000 {
    compatible = "nvidia,tegra186-hsuart";
    status = "okay";
};

combined-uart {
    console-port;
    combined-uart;
    status = "okay";
};`

dmesg THS设备如下

 [    1.616093] 3100000.serial: ttyTHS0 at MMIO 0x3100000 (irq = 47, base_baud = 0) is a TEGRA_UART

   [    1.617093] 3110000.serial: ttyTHS1 at MMIO 0x3110000 (irq = 48, base_baud = 0) is a TEGRA_UART

   [    1.617781] 3140000.serial: ttyTHS4 at MMIO 0x3140000 (irq = 49, base_baud = 0) is a TEGRA_UART

控制台日志从ttyTHS0实际输出
这是否意味着THS0是UART3引脚236,238
(电路板的实际控制台输出是UART1引脚203~209)

在表10-7中
THS0 THS1 THS4与uart1,uart2,uart3之间的默认相关设置映射应该是什么
它似乎不符合规格显示(控制台输出从pin236 238)

qbic-desktop login: Ubuntu 18.04.4 LTS qbic-desktop ttyTHS0
4. 分析问题

控制台日志从ttyTHS0
实际上使用pin-203/pin-205进行UART传输。

参考下面的例子,
根据设备树定义,serial@3100000注册为uart-a

aliases {
        serial0 = &uarta;
...
    uarta: serial@3100000 {
        compatible = "nvidia,tegra186-hsuart";

应该检查pinmux电子表格10或pinmux配置文件以作为参考。
例如
$OUT/Linux_for_Tegra/bootloader/tegra19x-mb1-pinmux-p3668-a01.cfg

pinmux.0x024300a8 = 0x00000400; # uart1_tx_pr2: uarta, tristate-disable, input-disable, io_high_voltage-disable, lpdr-disable
pinmux.0x024300a0 = 0x00000454; # uart1_rx_pr3: uarta, pull-down, tristate-enable, input-enable, io_high_voltage-disable, lpdr-disable

它是串行内核驱动程序在内核初始化期间注册tty设备
可以查看下面的源代码以获得更多细节。

$L4T_Sources/r32.4.3/Linux_for_Tegra/source/public/kernel/
kernel-4.9/drivers/tty/serial/serial_core.c
5. 查询结果

这些是L4T上的uart映射
tegra19x-mb1-pinmux-p3668-a01.cfg

pinmux.0x024300a8 = 0x00000400; # uart1_tx_pr2: uarta, tristate-disable, input-disable, io_high_voltage-disable, lpdr-disable
pinmux.0x024300a0 = 0x00000454; # uart1_rx_pr3: uarta, pull-down, tristate-enable, input-enable, io_high_voltage-disable, lpdr-disable
pinmux.0x02430098 = 0x00000055; # uart1_rts_pr4: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
pinmux.0x02430090 = 0x00000055; # uart1_cts_pr5: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
pinmux.0x0243d070 = 0x00000400; # uart2_tx_px4: uartb, tristate-disable, input-disable, io_high_voltage-disable, lpdr-disable
pinmux.0x0243d078 = 0x00000450; # uart2_rx_px5: uartb, tristate-enable, input-enable, io_high_voltage-disable, lpdr-disable
pinmux.0x0243d080 = 0x00000408; # uart2_rts_px6: uartb, pull-up, tristate-disable, input-disable, lpdr-disable
pinmux.0x0243d088 = 0x00000458; # uart2_cts_px7: uartb, pull-up, tristate-enable, input-enable, lpdr-disable
pinmux.0x0c302010 = 0x00000400; # uart3_tx_pcc5: uartc, tristate-disable, input-disable, io_high_voltage-disable, lpdr-disable
pinmux.0x0c302008 = 0x00000450; # uart3_rx_pcc6: uartc, tristate-enable, input-enable, io_high_voltage-disable, lpdr-disable

pinmux spreadsheets

UART1_TXD 203 UART1_TX GPIO3_PR.02
UART1_RXD 205 UART1_RX GPIO3_PR.03
UART1_RTS* 207 UART1_RTS GPIO3_PR.04
UART1_CTS* 209 UART1_CTS GPIO3_PR.05
UART2_TXD 236 UART3_TX GPIO3_PCC.05
UART2_RXD 238 UART3_RX GPIO3_PCC.06

tegra194-soc-uart.dtsi

serial0 = &uarta;
serial1 = &uartb;
serial2 = &uartc;

启用所有uart
log:

[    1.437891] 3100000.serial: ttyTHS0 at MMIO 0x3100000 (irq = 47, base_baud = 0) is a TEGRA_UART
[    1.439066] 3110000.serial: ttyTHS1 at MMIO 0x3110000 (irq = 48, base_baud = 0) is a TEGRA_UART
[    1.441064] c280000.serial: ttyTHS2 at MMIO 0xc280000 (irq = 49, base_baud = 0) is a TEGRA_UART
[    1.441848] 3130000.serial: ttyTHS3 at MMIO 0x3130000 (irq = 50, base_baud = 0) is a TEGRA_UART
[    1.442556] 3140000.serial: ttyTHS4 at MMIO 0x3140000 (irq = 51, base_baud = 0) is a TEGRA_UART
[    1.443210] 3150000.serial: ttyTHS5 at MMIO 0x3150000 (irq = 52, base_baud = 0) is a TEGRA_UART
[    1.444184] c290000.serial: ttyTHS6 at MMIO 0xc290000 (irq = 53, base_baud = 0) is a TEGRA_UART
[    1.444902] 3170000.serial: ttyTHS7 at MMIO 0x3170000 (irq = 54, base_baud = 0) is a TEGRA_UART

根据以上信息,
THS0 =uarta=pr2/pr3=203/205 UART1_TX UART1_RX
THS2 = uartc = pcc5 / pcc6 = 236/238 UART3_TX UART3_RX
因为载体板的引脚头设计UART3
打开终端输出消息到/dev/ttyTHS2进行测试,并使用示波器监控UART3_TX信号。(pin236)

可以用J14接线uart传输,检查" ll /dev/ttyUSB* "来设置连接。
J14 pin 3/4 = UART2_TXD,UART2_RXD /UART3_TX,UART3_RX =pin 236,238
端口映射为ttyTHS2。
HW调试后,该端口可用于一般uart使用后,kenel启动
但是bootloader和lk log是从这个端口输出的。(UART2_TXD THS2 UART2_RXD)
ttyTCU0登录控制台绑定到THS0。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
free-jdx
红包 95 5 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区