工具与软件:
尊敬的专家:
我们正在尝试使用来自 A53内核(主域)的 uart5来运行 Linux 系统的 UART 通信。
我已经完成了快速签入、器件树文件似乎未 在其中定义。
您能告诉我如何访问此链接吗?
此致、
去巴希
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.
工具与软件:
尊敬的专家:
我们正在尝试使用来自 A53内核(主域)的 uart5来运行 Linux 系统的 UART 通信。
我已经完成了快速签入、器件树文件似乎未 在其中定义。
您能告诉我如何访问此链接吗?
此致、
去巴希
Debashis、您好!
您必须在内核 devicetree 中启用 UART5才能在 Linux 中使用 UART。 请参阅下面链接的说明。
刘斌、您好!
我先检查 menuconfig 、发现缺省情况下已经启用。
因此、我直接更改了 main_uart5的器件树文件(k3-am62p5-sk.dts)、方法是引用 main_uart1的类似文件。
aliases {
serial0 = &wkup_uart0;
serial2 = &main_uart0;
serial3 = &main_uart1;
serial5 = &main_uart5;
mmc0 = &sdhci0;
mmc1 = &sdhci1;
mmc2 = &sdhci2;
spi0 = &ospi0;
ethernet0 = &cpsw_port1;
ethernet1 = &cpsw_port2;
usb0 = &usb0;
usb1 = &usb1;
};
main_uart5_pins_default: main-uart5-default-pins {
pinctrl-single,pins = <
AM62PX_IOPAD(0x1d8, PIN_INPUT, 1) /* (B23) UART0_RXD */
AM62PX_IOPAD(0x1dc, PIN_OUTPUT, 1) /* (F20) UART0_TXD */
>;
bootph-all;
};
&main_uart5 {
pinctrl-names = "default";
pinctrl-0 = <&main_uart5_pins_default>;
/* Main UART5 is used by USER firmware */
status = "okay";
bootph-all;
};root@am62pxx-evm:~# 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:251 tx:20146 rx:429 RTS|DTR|DSR 3: uart:unknown port:00000000 irq:0 4: uart:unknown port:00000000 irq:0 5: uart:8250 mmio:0x02850000 irq:253 tx:8016 rx:7561 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 root@am62pxx-evm:~# dmesg | grep base_baud [ 1.669955] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 251, base_baud = 3000000) is a 8250 [ 1.684830] 2850000.serial: ttyS5 at MMIO 0x2850000 (irq = 253, base_baud = 3000000) is a 8250
echo "hello" > /dev/ttyS5在一个端子中运行来环回 RX 和 TX 时cat /dev/ttyS5、数据会通过、但有一些不稳定的行为。 数据之间出现异常数量的垂直空白空间。 此空格将一直保留、直到我按 Control-C 停止它。 Debashis、您好!
无论我做了什么、这是正确的吗?
是的、UART5似乎配置正确。
当我通过echo "hello" > /dev/ttyS5在一个终端运行循环 RX 和 TX 时cat /dev/ttyS5、数据正在通过、但有一些不稳定行为。 数据之间出现异常数量的垂直空白空间。 此空格将继续、直至按 Control-C 停止。
我不确定导致问题的原因、但请在执行 echo/cat 命令之前运行以下命令、并告诉我这是否可以解决问题。
# systemctl disable serial-getty@ttyS5.servICE
# stty -F /dev/ttyS5 115200 -echo.
您好、Bin、
现在我无法运行它卡住的 stty 命令。 我也有同样的问题。 可以告诉我如何验证它已恢复为115200、我是否必须每次都执行该操作、或者是否有任何方法可以修复它?
问题:
root@am62pxx-evm:~# systemctl disable serial-getty@ttyS5.servICE
删除了/etc/systemd/system/getty.target.wants/serial-getty@ttyS5.service'。
[ 1461.657287] systemd-ssh-generator[1271]:将 SSH 绑定到 AF_UNIX 套接字/run/ssh-unix-local/socket.
[ 1461.658092] systemd-ssh-generator[1271]:→通过"sh .host"本地连接
[1461.686934] systemd-sysv-generator[1273]:sysv service '/etc/init.d/ethercat 缺少本机 systemd 单元文件。 ️ 自动生成用于兼容性的单位文件。 请更新软件包以包含本机 systemd 单元文件、从而使其安全、稳健且面向未来。 ️ 此兼容性逻辑已被弃用、预计很快会删除。 ️ μ A
root@am62pxx-evm:~# stty -F /dev/ttyS5 115200 -echo
此致、
去巴希
您好、Bin、
我从内核的角度也看到了这条打印语句。
[ 258.795712]审核:type=1112审核(1735627359.362:243):pid=886 uid=0 auid=4294967295ses=4294967295 subj=kernel msg='op=login acct="ooHHh" ex="/usr/bin/login hostname=am62pxx-evm addr=? Terminal=ttyS5 res=failed'
您好、Bin、
当我通过简单的写入和读取代码来读取 UART 数据时、您可能会看到不稳定的行为。
root@am62pxx-evm:/home/uart# ./serial_posix Read from serial port: Hello, Serial Port! Login incorrect root@am62pxx-evm:/home/uart# ./serial_posix Read from serial port: Hello, Serial Port! root@am62pxx-evm:/home/uart# ./serial_posix Read from serial port: Hello, Serial Port! root@am62pxx-evm:/home/uart# ./serial_posix Read from serial port: Hello, Serial Port! root@am62pxx-evm:/home/uart# ./serial_posix Read from serial port: Hello, Serial Port! root@am62pxx-evm:/home/uart# ./serial_posix Read from serial port: p am62pxx-evm login: am62pxx-evm login: Debian GNU/Linux trixie/sid am62pxx-evm ttyS5 p am62pxx root@am62pxx-evm:/home/uart# ./serial_posix Read from serial port: -evm login: am62pxx-evm login: Debian GNU/Linux trixie/sid am62pxx-evm ttyS5 p am62pxx-evm login root@am62pxx-evm:/home/uart# ./serial_posix Read from serial port: : am62pxx-evm login: Debian GNU/Linux trixie/sid am62pxx-evm ttyS5 p am62pxx-evm login: am62px
刘斌、您好!
我已经浏览过 serialcheck.c 的代码,我对此有一些怀疑。
1.我们将其设置为在阻塞式读写的情况下读取64个字节、超时为0.8秒、因为它使用的是这个函数(ret = fcntl (FD、F_SETFL、0);)
new_term.c_cc[VMIN] = 64; new_term.c_cc[VTIME] = 8;