final commit
本作品完成赛题第一阶段的全部目标:在 SG2002(RISC-V C906)机器人开发板上启动基于 Rust 的组件化操作系统内核 StarryOS,运行开源机器人用户态程序 akars(网页遥控 + USB 摄像头 + 机械臂/电机串口控制),并通过板载 TPU 加载 YOLOv8 网球检测模型完成推理。
在此基础上,我们对上游内核仓库 tgoskits(基线 commit 705e148)做了 6 处实际的工程修改,核心成果是免串口自动引导:通过逆向官方 U-Boot 的默认环境,用 uEnv.txt 覆盖其 sdboot 变量,使板卡上电即自动启动 StarryOS——此前每次启动都必须接串口打断倒计时手敲三条引导命令。
705e148
uEnv.txt
sdboot
tgoskits-changes/
deploy/sdcard_diy.img
deploy/starryos.uimg
deploy/aka-00-sg2002.dtb
设计文档.md
技术报告.md
操作记录.md
build.sh
make_sdcard.sh
fetch_firmware.sh
container/Dockerfile
u-boot-tools
device-tree-compiler
mkimage
cargo xtask starry build
scripts/axbuild/src/starry/build.rs
mkimage -l
bootm
scripts/axbuild/src/starry/build/tests.rs
os/StarryOS/configs/board/aka-00-sg2002-uEnv.txt
bootcmd
env import
run sdboot
scripts/mksdcard-aka00.sh
docs/docs/build/sg2002-sd-image.md
任意 Linux(或 Windows + WSL2)+ Docker:
docker pull ghcr.io/rcore-os/tgoskits-container:latest
git clone https://github.com/rcore-os/tgoskits && cd tgoskits git checkout 705e14824519fe519d6e79df1ef1a8fad1dd0e2b git apply /path/to/tgoskits-changes/contest-stage1.patch bash /path/to/fetch_firmware.sh docker run --rm -v "$PWD":/work -w /work ghcr.io/rcore-os/tgoskits-container:latest \ bash -lc 'cargo xtask starry build -c os/StarryOS/configs/board/aka-00-sg2002.toml' # 产物: target/riscv64gc-unknown-linux-musl/release/starryos.uimg # 构建末尾会自动校验 Load/Entry = 0x80200000
# fip.bin 从 LicheeRV Nano 官方镜像 p1 分区提取 # (校验: 440832 字节, sha1 5b4d1faf5445a19840c6c502f9c60357f7b92d61) sudo scripts/mksdcard-aka00.sh \ -f fip.bin \ -k target/riscv64gc-unknown-linux-musl/release/starryos.uimg \ -d os/StarryOS/configs/board/aka-00-sg2002.dtb \ -r rootfs/ -b boot.sd -o sdcard.img
rootfs 的制备(官方 rootfs 复制 + akars + TPU 运行库 + 模型 + wifi_switch)详见 技术报告.md 第 2 节;也可直接烧录本仓库 deploy/sdcard_diy.img。
sudo dd if=sdcard.img of=/dev/sdX bs=4M conv=fsync
插卡上电即自动启动(串口 115200 可观察到 === uEnv.txt: booting StarryOS ===, 最终出现 root@starry: 提示符)。无需任何串口交互;若需手动引导(如调试), 在 U-Boot 倒计时打断后:
=== uEnv.txt: booting StarryOS ===
root@starry:
fatload mmc 0:1 0x81000000 aka-00-sg2002.dtb fatload mmc 0:1 0x82200000 starryos.uimg bootm 0x82200000 - 0x81000000
启动后在 StarryOS shell 中:
# 网页遥控 + 摄像头 + 车/机械臂控制(浏览器访问 http://板卡IP:8080) akars serve --listen 0.0.0.0:8080 --motor /dev/ttyS1 --arm /dev/ttyS2 --camera /dev/cvi-usb-camera0 # TPU 模型加载与推理(YOLOv8 网球检测, CVI cvimodel 格式) akars /root/yolov8n_tennis_v2.cvimodel --camera /dev/cvi-usb-camera0 --frames 10 # WiFi 配置(连接热点 / 自建热点) wifi_switch sta <SSID> <密码> wifi_switch ap <SSID>
fip.bin
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
面向智能机器人的 AIOS —— StarryOS 在 SG2002 网球拾取机器人上的启动与推理链路(初赛/第一阶段)
本作品完成赛题第一阶段的全部目标:在 SG2002(RISC-V C906)机器人开发板上启动基于 Rust 的组件化操作系统内核 StarryOS,运行开源机器人用户态程序 akars(网页遥控 + USB 摄像头 + 机械臂/电机串口控制),并通过板载 TPU 加载 YOLOv8 网球检测模型完成推理。
在此基础上,我们对上游内核仓库 tgoskits(基线 commit
705e148)做了 6 处实际的工程修改,核心成果是免串口自动引导:通过逆向官方 U-Boot 的默认环境,用uEnv.txt覆盖其sdboot变量,使板卡上电即自动启动 StarryOS——此前每次启动都必须接串口打断倒计时手敲三条引导命令。一、成果清单
tgoskits-changes/deploy/sdcard_diy.imgdeploy/starryos.uimg、deploy/aka-00-sg2002.dtb设计文档.md技术报告.md操作记录.mdbuild.sh、make_sdcard.sh、fetch_firmware.sh等二、代码修改摘要(基于 tgoskits commit 705e148)
container/Dockerfileu-boot-tools+device-tree-compiler。官方编译容器缺mkimage,sg2002 目标的cargo xtask starry build在 uImage 打包步骤必然失败scripts/axbuild/src/starry/build.rsmkimage是否存在,给出可操作的报错;② 生成后自动mkimage -l校验 FIT 的 Load/Entry 地址非 0(地址为 0 时 U-Bootbootm跳转 0 地址,板上表现为 instruction access fault,极难排查;现在构建期即失败)scripts/axbuild/src/starry/build/tests.rsos/StarryOS/configs/board/aka-00-sg2002-uEnv.txtbootcmd先env importp1 分区的uEnv.txt再run sdboot,故覆盖sdboot即接管启动;任一加载步骤失败自动回落官方内核,不会变砖scripts/mksdcard-aka00.shdocs/docs/build/sg2002-sd-image.md三、运行说明
3.1 环境准备
任意 Linux(或 Windows + WSL2)+ Docker:
3.2 编译内核
3.3 制作 SD 卡镜像
rootfs 的制备(官方 rootfs 复制 + akars + TPU 运行库 + 模型 + wifi_switch)详见
技术报告.md第 2 节;也可直接烧录本仓库deploy/sdcard_diy.img。3.4 烧录与启动
插卡上电即自动启动(串口 115200 可观察到
=== uEnv.txt: booting StarryOS ===, 最终出现root@starry:提示符)。无需任何串口交互;若需手动引导(如调试), 在 U-Boot 倒计时打断后:3.5 运行机器人程序与 TPU 模型加载
启动后在 StarryOS shell 中:
四、代码原创性说明
705e148(开源,Apache/MIT);我们的修改见tgoskits-changes/fip.bin(SPL+OpenSBI+U-Boot)与 rootfs 基础:LicheeRV Nano 官方镜像(sipeed 官方发布)uEnv.txt自动引导机制、构建期 FIT 校验、SD 镜像工具链为本队原创