RK3399修改调试串口

RK3399修改调试串口
RK3399可以修改调试串口为任意板载的UART
由于厂家的一级loader没有开源,因此更改调试串口后,一级loader的打印无法再看到了

手里面有一块rockpi4b的板子
在这里插入图片描述其pin脚如下,从官方的uart改为下图中的uart4

在这里插入图片描述
官方支持的bsp代码

https://github.com/radxa/rockchip-bsp.git
1
首先修改uboot的代码

git diff
diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
index 8000614…4c44548 100644
— a/arch/arm/dts/rk3399-u-boot.dtsi
+++ b/arch/arm/dts/rk3399-u-boot.dtsi
@@ -11,7 +11,7 @@
};
};

-&uart2 {
+&uart4 {
clock-frequency = <24000000>;
:…skipping…
diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
index 8000614…4c44548 100644
— a/arch/arm/dts/rk3399-u-boot.dtsi
+++ b/arch/arm/dts/rk3399-u-boot.dtsi
@@ -11,7 +11,7 @@
};
};

-&uart2 {
+&uart4 {
clock-frequency = <24000000>;
u-boot,dm-pre-reloc;
status = “okay”;
diff --git a/arch/arm/dts/rockpi-4b-linux.dts b/arch/arm/dts/rockpi-4b-linux.dts
old mode 100644
new mode 100755
index f28fa8f…46a147b
— a/arch/arm/dts/rockpi-4b-linux.dts
+++ b/arch/arm/dts/rockpi-4b-linux.dts
@@ -22,7 +22,7 @@
};

    chosen {
  •           stdout-path = &uart2;
    
  •           stdout-path = &uart4;
              u-boot,spl-boot-order = &sdhci, &sdmmc;
      };
    

diff --git a/configs/rock-pi-4b-rk3399_defconfig b/configs/rock-pi-4b-rk3399_defconfig
index f0292e8…5a4b2e1 100644
— a/configs/rock-pi-4b-rk3399_defconfig
+++ b/configs/rock-pi-4b-rk3399_defconfig
@@ -14,7 +14,7 @@ CONFIG_DEBUG_UART=y
CONFIG_FIT=y
CONFIG_SPL_LOAD_FIT=y
CONFIG_SPL_FIT_GENERATOR=“arch/arm/mach-rockchip/make_fit_atf.py”
-CONFIG_BOOTDELAY=1
+CONFIG_BOOTDELAY=5

CONFIG_DISPLAY_CPUINFO is not set

CONFIG_ANDROID_BOOTLOADER=y
CONFIG_SPL_STACK_R=y
@@ -71,9 +71,9 @@ CONFIG_RAM=y
CONFIG_SPL_RAM=y
CONFIG_DM_RESET=y
CONFIG_BAUDRATE=1500000
-CONFIG_DEBUG_UART_BASE=0xFF1A0000
+CONFIG_DEBUG_UART_BASE=0xFF370000
CONFIG_DEBUG_UART_CLOCK=24000000
-CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_DEBUG_UART_SHIFT=4
CONFIG_SYSRESET=y
CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
linux kernel更改如下

git diff
diff --git a/arch/arm64/boot/dts/rockchip/overlays-rockpi4/hw_intfc.conf b/arch/arm64/boot/dts/rockchip/overlays-rockpi4/hw_intfc.conf
index 024fe76…41d3d48 100644
— a/arch/arm64/boot/dts/rockchip/overlays-rockpi4/hw_intfc.conf
+++ b/arch/arm64/boot/dts/rockchip/overlays-rockpi4/hw_intfc.conf
@@ -21,7 +21,7 @@ intfc:i2c7=off
#intfc:dtoverlay=at24c02

Serial console on UART2

-intfc:dtoverlay=console-on-ttyS2
+intfc:dtoverlay=console-on-ttyS4

Serial console on UART4

#intfc:dtoverlay=console-on-ttyS4
diff --git a/arch/arm64/boot/dts/rockchip/rockpi-4-linux.dtsi b/arch/arm64/boot/dts/rockchip/rockpi-4-linux.dtsi
index 1a18fc4…e6ea618 100644
— a/arch/arm64/boot/dts/rockchip/rockpi-4-linux.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rockpi-4-linux.dtsi
@@ -54,13 +54,13 @@
fiq_debugger: fiq-debugger {
status = “disabled”;
compatible = “rockchip,fiq-debugger”;

  •           rockchip,serial-id = <2>;
    
  •           rockchip,serial-id = <4>;
              rockchip,signal-irq = <182>;
              rockchip,wake-irq = <0>;
              rockchip,irq-mode-enable = <1>;  /* If enable uart uses irq instead of fiq */
              rockchip,baudrate = <1500000>;  /* Only 115200 and 1500000 */
              pinctrl-names = "default";
    
  •           pinctrl-0 = <&uart2c_xfer>;
    
  •           pinctrl-0 = <&uart4_xfer>;
      };
    
      vcc1v8_s0: vcc1v8-s0 {
    

@@ -750,7 +750,7 @@
};

&uart4 {

  •   status = "disabled";
    
  •   status = "okay";
    

};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
上板子调试完全可以,只是缺少了一级loader的打印

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rk3399是一款高性能、低功耗的ARM处理器,广泛应用于嵌入式系统中。其强大的计算能力和丰富的接口资源,使得开发人员可以基于rk3399进行丰富的应用开发。其中,串口通信是一个非常实用的功能,可以实现嵌入式系统与外部设备之间的通讯。在rk3399 linux串口应用开发中,需掌握以下技术: 1. 串口驱动程序开发:rk3399 linux内核已经集成了串口驱动程序,开发人员可以直接使用。但是,如果需要根据具体应用需求定制串口驱动程序,就需要深入了解串口驱动程序的结构和实现原理。 2. 串口通信协议:串口通信协议是串口通信的基础,不同的通信协议支持不同的数据传输方式。开发人员需要根据实际需求,选择合适的串口通信协议并进行实现。 3. 异步串口通信:异步串口通信是常见的串口通信方式,其核心是通过发送和接收字符进行通信。开发人员需要掌握异步串口通信协议和实现方法。 4. 应用程序开发:在掌握了串口驱动程序和通信协议之后,开发人员就可以进行应用程序的开发。应用程序可以是命令行程序、图形化界面程序等,通过串口与外部设备进行通信。 总之,rk3399 linux串口应用开发需要开发人员掌握串口驱动程序开发、串口通信协议、异步串口通信和应用程序开发等技术。只有充分掌握相关技术,才能够开发出高质量、高效率的串口应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值