进一步阅读

进一步阅读

我有一个扬声器核心 v2.0我想使用 UART 接口(该板有一个 USB 转 TTL 适配器连接到 Uart 端口)以使该板与另一块板通信。

设置[编辑]

我已将串行 TTL 转换器插入笔记本电脑,并将其连接到 RespeakerCore 的 TX、RX 和 GND 引脚。然后,我在笔记本电脑上打开一个迷你控制台(具有正确的波特率和端口设置),在 Respeaker 上打开另一个控制台。我打开 Respeaker 的电源,miniterm 上出现以下内容:

Starting kernel ...

[    0.065704] /cpus/cpu@f00 missing clock-frequency property
[    0.071689] /cpus/cpu@f01 missing clock-frequency property
[    0.077712] /cpus/cpu@f02 missing clock-frequency property
[    0.083677] /cpus/cpu@f03 missing clock-frequency property
[    0.829278] rk-vcodec 20020000.vpu-service: could not find power_model node
[    0.856875] rockchip-vop 20050000.vop: invalid resource
[    0.862758] rockchip-vop 20050000.vop: invalid resource
[    0.868586] rockchip-vop 20050000.vop: missing rockchip,grf property
[    0.876380] i2c i2c-0: of_i2c: modalias failure on /hdmi@200a0000/ports
[    2.037851] cpu cpu0: Failed to get pvtm
[    2.122396] rockchip-dmc dmc: Failed to get pvtm
[    2.128437] rockchip-dmc dmc: failed to get vop bandwidth to dmc rate
[    2.139954] rknandbase v1.2 2018-05-08
[    2.612237] rk_gmac-dwmac 30200000.ethernet: Can not read property: tx_delay.
[    2.620241] rk_gmac-dwmac 30200000.ethernet: set tx_delay to 0x30
[    2.627017] rk_gmac-dwmac 30200000.ethernet: Can not read property: rx_delay.
[    2.635007] rk_gmac-dwmac 30200000.ethernet: set rx_delay to 0x10
[    2.642046] rk_gmac-dwmac 30200000.ethernet: cannot get clock clk_mac_speed
[    5.638765] get ac108 regulator name failed 
[    5.749516] get ac108 regulator name failed 
[    5.760861] mali-utgard 20001000.gpu: Failed to get pvtm
[    5.938710] devfreq 20001000.gpu: Couldn't update frequency transition information.
[    6.153327] ac108_write error->[REG-0x00,val-0x12]
[    6.175033] ac108_write error->[REG-0x00,val-0x12]
[    9.971169] rk_gmac-dwmac 30200000.ethernet: rk_get_eth_addr: mac address: 72:1c:0a:8e:4a:4a

Debian GNU/Linux 9 glutamate ttyS2

respeaker.io Debian Image 20180801

Support/FAQ: http://respeaker.io

glutamate login:

TX 和 RX 引脚用作串行控制台。

userk@glutamate:~$ setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x0000, IRQ: 29
/dev/ttyS1, UART: 16550A, Port: 0x0000, IRQ: 30
/dev/ttyS2, UART: 16550A, Port: 0x0000, IRQ: 31
/dev/ttyS3, UART: unknown, Port: 0x0000, IRQ: 0

有一项服务正在使用我感兴趣的 ttyS2 设备。

userk@glutamate:~$ sudo systemctl status | grep tty
           │ ├─system-serial\x2dgetty.slice
           │ │ ├─[email protected]
           │ │ │ └─721 /sbin/agetty --keep-baud 115200,38400,9600 ttyS2 vt220
           │ │ └─[email protected]
           │ │   └─747 /sbin/agetty --keep-baud 115200,38400,9600 ttyGS0 vt220
           │ │ └─767 brcm_patchram_plus --enable_hci --no2bytes --use_baudrate_for_download --tosleep 200000 --baudrate 1500000 --patchram /system/etc/firmware/bcm43438a0.hcd /dev/ttyS1
           │ ├─system-getty.slice
           │ │ └─[email protected]
           │ │   └─720 /sbin/agetty --noclear tty1 linux
               │ ├─1050 grep tty

我尝试过的

我尝试使用以下命令停止该服务:

sudo systemctl stop [email protected]

但5秒后它会自动重新启动。

问题

一小段时间后,系统开始再次将控制台输出发送到 ttyS2 端口。

是否可以完全删除链接到 ttyS2 的串行控制台?

解决方案

只需停止并禁用该服务:

sudo systemctl stop [email protected]
sudo systemctl disable [email protected]

并且沟通是双向的。

答案1

您找错地方了。

驱动这一点的基本配置项是console通过引导加载程序在命令行上向内核提供的设置。它告诉生成器要启动哪些串行控制台服务。它告诉内核将内核控制台输出发送到哪里。它告诉内核将/dev/console输出发送到哪里。如果您不希望您的串行设备成为控制台,则您需要进行调整。

但请注意,您没有[email protected]服务。你有一个[email protected]服务和一个[email protected]服务。因此系统认为这ttyGS0是您的串行控制台设备,但显然已经不认为是ttyS2

您可能[email protected]在某个时候手工制作。它不是 systemd 制定的标准;而是由 systemd 制定的。因为它是不正确的。该[email protected]模板不适合串行设备,是为内核虚拟终端设备设计的。请注意正确的模板,[email protected]已针对其他系统的设备认为是你的控制台。

所以禁用[email protected].

进一步阅读

相关内容