单板规格:RDK X5 4GB
源码地址:1.6 下载资源汇总 | RDK X3/X5 DOC
| SDK 源码包 | 完整的 Buildroot 源码包,支持内核定制、驱动开发、系统构建(约 3.1GB) |
|---|
编译方法:./bd.sh,选择board_x5_soc_release_config.mk
用refus烧录后板子无法启动,
单板规格:RDK X5 4GB
源码地址:1.6 下载资源汇总 | RDK X3/X5 DOC
| SDK 源码包 | 完整的 Buildroot 源码包,支持内核定制、驱动开发、系统构建(约 3.1GB) |
|---|
编译方法:./bd.sh,选择board_x5_soc_release_config.mk
用refus烧录后板子无法启动,
你选的是芯片 SDK 的 SoC 配置,和 RDK X5 的 Ubuntu 镜像不是一套构建流程。若用 Rufus 写 TF 卡,请用对应 RDK 版本的 x5-rdk-gen 构建完整镜像,不要直接把 SDK 的 emmc_disk.img 当作 RDK TF 镜像。
先构建未修改的镜像确认能启动,再加入 TOF 驱动和设备树,重新编译内核、重建 hobot-boot/hobot-dtb ,最后用 pack_image.sh -l 打包,确保本地修改进入镜像。
我在我们这块 RDK X5 4GB(D-Robotics RDK X5 V1.0,board id 302,Ubuntu 22.04.5 / /etc/version 3.5.0-beta,内核 6.1.83,官方 SD 卡镜像)上做了只读核查:这块板没有 eMMC。DTB 里 eMMC 控制器 sdhci@35040000(aliases mmc0)状态是 disabled,系统里没有 mmc0 主机、没有 /dev/mmcblk0;唯一启动介质是 SD 卡 mmcblk1(MBR 两分区:p1 256M FAT32 标签 CONFIG,p2 ext4 标签 rootfs,根设备 /dev/mmcblk1p2),boot.scr/Image/hobot/x5-rdk-v1p0.dtb 都在 p2 的 /boot 下,miniboot 与 ubootenv 在板载 SPI NAND(mtd0/mtd1)。板端 DTS 也能对上:x5-rdk.dtsi 只启用 &sdio_0/&sdio_1,引用 &emmc 的是 x5-evb/x5-md/x5-som/x5-svb/x5-fpga 这些其它形态。全程只读,没刷机也没重启,所以没有实测你那张卡写完后的具体报错。
官方下载页也把这个 SDK 划给了另一种板型:Buildroot 系统资源(platform_source_code,LNX6.1.83_PL5.1_V1.1.2)写的适用用户是“基于 RDK X5 Module eMMC 版本”,配套的是 eMMC 预编译镜像 + xburn 烧录;而 RDK X5 零售板的系统源码在 GitHub 的 x5-rdk-gen 仓库(见官方 7.2.1 开发环境搭建及编译说明)。所以 board_x5_soc_release_config.mk 编出来的 eMMC 布局镜像,用 Rufus 写进 SD 卡在这块板上起不来,是介质和分区布局不匹配,不是调一两个编译选项能解决的;同理也不要在零售 X5 上跑面向 eMMC 的 fastboot/xburn 全盘烧写。
移植自研 TOF 驱动请走 x5-rdk-gen:先编一份未修改的镜像,Rufus/RDK Studio 写卡确认能启动,再加 TOF 的内核驱动和设备树(重编内核 + dtb,boot.scr 默认按 board id 选 x5-rdk-v1p0.dtb,board id 302 走的就是这个),重新打包写卡。
要接着往下定位,麻烦给两样:一是上电到卡住为止的串口日志(115200,console=ttyS0),这决定是卡在 U-Boot 还是内核;二是用能启动的官方镜像进系统后跑一下这段只读命令,确认你的板型是否和我们一致——
tr -d '\0' < /proc/device-tree/model; echo
tr -d '\0' < /proc/device-tree/soc/hsio_apb/sdhci@35040000/status; echo
lsblk -o NAME,SIZE,FSTYPE,LABEL,MOUNTPOINT
预期零售 X5 是 D-Robotics RDK X5 ... + disabled + 只有 mmcblk1(SD, CONFIG/rootfs)。若这里出现 mmcblk0/eMMC,说明你手上是 X5 Module(或 EVB),上面的判断和构建路径都要改。另外帖子标题写的是 RDK X4、正文写 RDK X5,也一并确认下实际板子。
官方手册里没有 TOF sensor 的点亮教程,只有 MIPI Camera(Bayer RAW + ISP)这条链路:Camera 调试指南 5.17.2. Camera 调试指南 — X5 芯片用户手册 1.1.2 文档 ,排错 5.17.6. Camera 调试FAQ — X5 芯片用户手册 1.1.2 文档 。你看到的指南与 TOF 的差异集中在 ISP 段:sensor_module_t 驱动、aexp_gain/aexp_line、gain LUT、<sensor>_tuning.json 都是给过 ISP 的 Bayer sensor 用的,如果 TOF 输出已是深度或非 Bayer 数据,这一段不用做。前半段与 ISP 无关,可以直接照做:
vin_vcon 里配 I2C bus、reset/pwd GPIO(gpio_oth);mclk 在对应 mipi_host 配 pinctrl-0 与 snrclk-idx;i2cdetect -y -r <bus> 应能探到模组地址:echo 24000000 > /sys/class/vps/mipi_hostN/param/snrclk_freq; echo 1 > /sys/class/vps/mipi_hostN/param/snrclk_en取数据的方式取决于模组输出形态:若是 MIPI CSI-2 输出且模块内已算好深度,可以按普通 V4L2 sensor 驱动注册,从 SIF 节点直接收流、绕过 ISP——srpi-config → Interface Options → I7 V4L2 打开后重启,CSI0 的 SIF 是 /dev/video0(CSI1~3 对应 video1/2/3),先 v4l2-ctl --list-formats-ext --device /dev/video0 确认格式再 --stream-to 存文件,见 V4L2 使用 | RDK X3/X5 DOC ;若深度是走 I2C/UART/USB 输出的,则完全不经过 camsys,按普通设备写驱动即可。走 MIPI 时 vcon/host 的 lane、clk、VC、分辨率要和模组手册一致,这部分参数不对就是最常见的起不来流的原因。
x5-rdk-gen 侧顺序:先编一份未改动的镜像烧录确认能启动,再叠加 TOF 驱动和 dts,重编内核与 hobot-boot/hobot-dtb,最后 pack_image.sh 打包。建议按「原始镜像 → 只加 dts → 只加驱动」分三次烧录,便于定位是哪类改动导致起不来。