你好!关于 S100 开发板 UART2 串口通讯的设备树修改问题,结合社区最新资源,给你以下直接可操作的解决方案:
核心结论
你有两种方案可选:
| 方案 | 适用场景 | 难度 | 风险 |
|---|---|---|---|
| 方案 A:安装官方 Deb 包(推荐新手) | 快速调试、短期项目 | 需备份数据 | |
| 方案 B:修改设备树源码编译 | 长期项目、深度定制 | 需 SDK 环境 |
方案 A:安装官方 Deb 包(强烈推荐)
这是官方提供的临时便捷方案,无需修改设备树、无需编译源码。
步骤:
-
备份重要数据(
必须操作)# 备份你的项目文件、配置文件等 -
下载 Deb 包
- 访问飞书云文档:https://horizonrobotics.feishu.cn/wiki/MItZwpSNXigLu1kZAD0czrlFnlh
- 下载对应的 UART2 启用 Deb 包
-
安装 Deb 包
sudo dpkg -i <下载的deb包名称>.deb -
重启设备
sudo reboot -
验证串口
ls -l /dev/ttyS* # 应该能看到 /dev/ttyS2(UART2)
注意事项:
- 要求系统版本:RDK S100 系统版本 ≥ 4.0.5(2026-03-05)
- UART2 与 I2C5 互斥,启用 UART2 后 I2C5 将不可用
- 如安装后无法启动,需重新烧录系统恢复
方案 B:修改设备树源码编译(进阶用户)
如果你需要深度定制或使用旧版本系统,需按以下步骤操作:
步骤 1:获取 BSP 源码
# 访问官方文档下载 SDK
# https://developer.d-robotics.cc/rdk_doc/rdk_s/Advanced_development/rdk_gen
步骤 2:找到设备树文件
设备树文件位置:
kernel/arch/arm64/boot/dts/hobot/drobot-s100-soc.dtsi
步骤 3:修改设备树
找到 uart2 节点,确保配置如下:
uart2: uart@394C0000 {
power-domains = <&scmi_smc_pd PD_IDX_LSPERI_TOP>;
compatible = "snps,dw-apb-uart";
reg = <0x0 0x394C0000 0x0 0x10000>;
reg-shift = <2>;
reg-io-width = <4>;
interrupts = <GIC_SPI PERISYS_UART2_INTR PERISYS_UART2_INTR_TRIG_TYPE>;
clock-frequency = <200000000>;
pinctrl-names = "default";
pinctrl-0 = <&peri_uart2>;
status = "okay"; // 确保是 "okay"
};
同时禁用 I2C5(避免引脚冲突):
&i2c5 {
status = "disabled";
};
步骤 4:编译并烧录
# 清理编译环境
make clean
make mrproper
# 编译内核
./mk_kernel.sh
# 编译系统
./mk_debian.sh
# 打包镜像
./pack_image.sh -l
# 使用 D-Robotics 烧录工具烧录
拨码开关确认
确保你的拨码开关设置正确:
- PCM0 拨码:向右拨 → 40pin
- 40pin 拨码:向右拨 → UART2
验证串口是否可用
烧录完成后,登录开发板验证:
# 查看串口设备
ls -l /dev/ttyS*
# 查看串口信息
dmesg | grep uart
# 测试串口(需连接另一设备)
screen /dev/ttyS2 921600
# 或
minicom -D /dev/ttyS2 -b 921600
相关资源
- 官方文档:3.3.4 串口应用
- 社区讨论:[硬件配置][RDK S100] 外接 40PIN 的串口配置问题
- Deb 包方案:【临时方案更新】RDK S100 UART2 与 I2C5 引脚切换简易解决方案
如果还有问题
请提供以下信息,我可以进一步帮你排查:
- 当前系统版本(
cat /etc/issue) - 是否已尝试 Deb 包方案
- 具体的错误日志(
dmesg输出)
建议优先尝试方案 A(Deb 包),5 分钟即可完成配置!![]()