RK3288 android7.1 将普通串口设置为调试串口

一,开发背景与需求

在嵌入式系统开发中,调试串口的选择和配置是一个关键环节。近期我在Rockchip RK3288芯片的Android7.1 平台开发过程中,遇到了一个典型的硬件接口调整需求:由于产品设计变更和硬件布局优化,需要将系统默认的调试串口从UART1迁移到UART3接口

RK3288平台在串口设计上采用了特殊架构,它将调试串口(debug uart)与普通串口进行了功能区分,并通过fiq debugger机制提供了更强大的调试功能。这种设计虽然带来了调试便利性,但也使得串口切换工作变得相对复杂,需要同时修改U-boot和Kernel层的多处配置。


二,修改步骤

1. U-boot修改

a. 修改rk3288_secure_defconfig文件

u-boot/configs/rk3288_secure_defconfig文件中添加或修改以下配置:

powershell 复制代码
CONFIG_SYS_EXTRA_OPTIONS="RKCHIP_RK3288,PRODUCT_MID,NORMAL_WORLD,SECOND_LEVEL_BOOTLOADER,UART_NUM=UART_CH3"
CONFIG_ARM=y
CONFIG_ROCKCHIP_ARCH32=y
CONFIG_PLAT_RK32XX=y
# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
b. 修改rk_default_config.h文件

u-boot/include/configs/rk_default_config.h文件中添加或修改以下内容:

powershell 复制代码
/* rk serial module */
#define CONFIG_RK_UART
#ifndef CONFIG_UART_NUM
#define CONFIG_UART_NUM UART_CH3
#endif

2. Kernel修改

a. 修改rockchip_defconfig文件

kernel/arch/arm/configs/rockchip_defconfig文件中添加或修改以下配置:

powershell 复制代码
CONFIG_ARM_KERNMEM_PERMS=y
CONFIG_RK_DEBUG_UART=3 /*add*/
b. 修改设备树文件

kernel/arch/arm/boot/dts/rk3288-android.dtsi文件中添加或修改以下配置:

修改1:修改fiq-debugger节点

bash 复制代码
fiq-debugger {
    compatible = "rockchip,fiq-debugger";
    interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
    rockchip,serial-id = <3>; /*改为串口3*/
    rockchip,wake-irq = <0>;
    rockchip,irq-mode-enable = <0>; /* If enable uart uses irq instead of fiq */
    rockchip,baudrate = <115200>; /* Only 115200 and 1500000 */
    pinctrl-names = "default";
    pinctrl-0 = <&uart3_xfer>; /*改为串口3*/
    status="okay";
};

修改2 :修改chosen节点

查看rk3288.dtsi中uart3的地址为0xff1b0000,修改chosen节点如下:

bash 复制代码
chosen {
    bootargs = "earlycon=uart8250,mmio32,0xff1b0000 vmalloc=496M";
};

修改3 :禁用普通串口

如果需要将某个普通串口改为调试串口,需在板级设备树文件中将其关闭:

bash 复制代码
&uart3 {
    status = "disabled";
};

通过以上步骤,可以将调试串口从UART1切换到了UART3,实测有用。


三,验证

完成以上修改后,重新编译U-boot和Kernel,并烧录到设备中进行验证。确保调试串口已成功切换到UART3,并且功能正常。

相关推荐
阿巴斯甜19 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker20 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952721 小时前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android