当前位置: 首页 > news >正文

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文件中添加或修改以下配置:

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文件中添加或修改以下内容:

/* 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文件中添加或修改以下配置:

CONFIG_ARM_KERNMEM_PERMS=y
CONFIG_RK_DEBUG_UART=3 /*add*/
b. 修改设备树文件

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

修改1:修改fiq-debugger节点

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节点如下:

chosen {bootargs = "earlycon=uart8250,mmio32,0xff1b0000 vmalloc=496M";
};

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

&uart3 {status = "disabled";
};

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


三,验证

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

http://www.lqws.cn/news/498331.html

相关文章:

  • WinUI3入门8:解决release版异常 取消优化和裁剪
  • QML革命:下一代GUI开发的核心优势详解
  • WebSocket 端点 vs Spring Bean
  • PyTorch 实现的 GlobalPMFSBlock_AP_Separate:嵌套注意力机制在多尺度特征聚合中的应用
  • LLM 编码器 怎么实现语义相关的 Token 向量更贴近? mask训练:上下文存在 ;; 自回归训练:只有上文,生成模型
  • 601N1 icm45696 串口python读取及显示
  • SQL Server2022版详细安装教程(Windows)
  • Flutter开发中记录一个非常好用的图片缓存清理的插件
  • MATLAB GUI界面设计 第四章——图像的绘制与显示
  • 项目上线(若依前后分离版)
  • Kubernetes安全
  • Frida Hook Android App 点击事件实战指南:从进程识别到成功注入
  • H5新增属性
  • C++ Vector 基础入门操作
  • 技能系统详解(2)——特效表现
  • nnv开源神经网络验证软件工具
  • 【第二章:机器学习与神经网络概述】03.类算法理论与实践-(1)逻辑回归(Logistic Regression)
  • 华大北斗TAU951M-P200单频定位模块 多系统冗余保障永不掉线 物流/车载导航首选
  • 历史项目依赖库Bugfix技巧-类覆盖
  • LED-Merging: 无需训练的模型合并框架,兼顾LLM安全和性能!!
  • Spring Boot:运用Redis统计用户在线数量
  • Flask学习笔记
  • 1.2、CAN总线帧格式
  • DeepSeek今天喝什么随机奶茶推荐器
  • Redis简介
  • 通过使用gitee发布项目到Maven中央仓库最新教程
  • 前端高频面试题汇总
  • 【AI 测试】测试用例设计:人工智能语言大模型性能测试用例设计
  • Qt源码分析: QChildEvent
  • Robyn高性能Web框架系列04:事件、中间件与错误处理