|
【Linux】
[问题咨询]RK3308 UART TX正常,但RX异常(应用层不能接收到数据)
发表于 2022-3-24 22:32:25
浏览:5001
|
回复:1
打印
[复制链接]
楼主
-
固件类型:
自行编译的固件
-
SDK包名称:
Firefly-RK3308_Linux_SDK_git_20190924
-
SDK更新到哪个COMMIT:
2021-12-17 22:03:00
-
SDK修改内容:
diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3308b-roc-cc-plus-amic_emmc.dts b/kernel/arch/arm64/boot/dts/rockchip/rk3308b-roc-cc-plus-amic_emmc.dts
index d97f0c9..3138ae7 100644
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3308b-roc-cc-plus-amic_emmc.dts
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3308b-roc-cc-plus-amic_emmc.dts
@@ -162,12 +162,24 @@
rockchip,serial-id = <4>;
};
+&uart1 {
+ status = "okay";
+};
+
&uart4 {
status = "disabled";
};
+&i2c0 {
+ status = "disabled";
+};
+
+&spi2 {
+ status = "disabled";
+};
+
&sdmmc {
- status = "okay";
+ status = "disabled";
};
-
Log日志:
UART接收不到数据.log
问题描述及复现步骤:
【问题描述】
按照上面的dts修改,使能uart1(默认RX——GPIO1_D0,TX——GPIO1_D1),测试uart1能正确TX,但RX不到数据。
【测试拓扑】
开发板uart1------杜邦线------USB转串口板--PC
【测试方案】
方案1:
1)echo "abcd" > /dev/ttyS1,PC sscom能收到数据。
2)cat /dev/ttyS1,PC sscom发送数据,但开发板调试串口没有收到数据。
方案2:
编写应用层测试程序,open ttyS1,write后,PC sscom能接收到数据;但PC发送数据,程序不能read到数据。
【问题分析】
1、PC发送数据后,在PC sscom能收到发出去的一部分数据。可能是开发板串口驱动做了RX后的回显处理?
2、读取GPIO1D_IOMUX(io -4 -r 0xFF000038),值是0x0000005,故能确认是IO复用是正确配置了UART1的TX和RX的。
【备注】
测试了uart0、uart2、uart3,存在相同问题。
【问题咨询】
1、请问应该要如何跟进本问题?
2、计划跟进驱动代码,请问驱动最早RX到数据的是哪部分代码?
主要是要跟进“kernel/drivers/tty/serial/8250”的串口驱动代码?
3、怀疑是UART RX做了回显处理的话,是否有哪些寄存器可以进行确认?
|
|