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,并且功能正常。

相关推荐
菠萝加点糖2 小时前
Kotlin Data包含ByteArray类型
android·开发语言·kotlin
IAM四十二9 天前
Google 端侧 AI 框架 LiteRT 初探
android·深度学习·tensorflow
CYRUS_STUDIO9 天前
手把手教你用 Chrome 断点调试 Frida 脚本,JS 调试不再是黑盒
android·app·逆向
Just丶Single10 天前
安卓NDK初识
android
编程乐学10 天前
网络资源模板--基于Android Studio 实现的咖啡点餐App
android·android studio·大作业·奶茶点餐·安卓移动开发·咖啡点餐
二流小码农10 天前
鸿蒙开发:基于node脚本实现组件化运行
android·ios·harmonyos
Wgllss10 天前
Kotlin+协程+FLow+Channel+Compose 实现一个直播多个弹幕效果
android·架构·android jetpack
Li Zi10 天前
STM32 ADC(DMA)双缓冲采集+串口USART(DMA)直接传输12位原始数据到上位机显示并保存WAV格式音频文件 收藏住绝对实用!!!
经验分享·stm32·单片机·嵌入式硬件
顾林海10 天前
Android WebView内存释放全解析:从泄漏检测到彻底释放的实战指南
android·面试·性能优化
Heart_to_Yang10 天前
kali2022 系统更新报错:由于没有公钥无法验证下列签名
linux·运维·服务器·经验分享