注意

这是最新开发分支配套的文档,可能包含已发布版本中尚未提供的功能。如果您要查看特定版本的文档,请使用左侧的下拉菜单并选择所需要的版本。

如何编译固件#

概述#

K230 RTOS SDK 是基于 repo 管理的多仓库集成开发套件,包含 U-Boot、OpenSBI、RT-Smart、MPP 等核心组件。本文档提供两种构建方式:

  • 使用 Docker 编译(推荐):无需安装任何编译依赖,一条命令即可完成编译

  • 直接本机编译:在 Ubuntu 20.04 上手动搭建环境

使用 Docker 编译(推荐)#

使用预配置的 k230-builder 镜像,内置所需工具链的下载工具、repo、genimage 及所有编译依赖。前提条件仅需安装 Docker。

前提条件#

  • 安装 Docker

    # Ubuntu/Debian
    sudo apt install docker.io
    sudo usermod -aG docker $USER && newgrp docker
    

    其他系统参考 Docker 官方文档

  • 配置 Gitee SSH 密钥(代码下载需要) 在 Gitee 注册账号并添加 SSH 公钥

  • 配置 Git 用户信息

    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    

安装 k230 命令#

curl -fsSL https://www.kendryte.com/misc/install.sh | bash
source ~/.bashrc

安装后执行 k230 pull 拉取 Docker 镜像(首次耗时取决于网络,约 1GB+)。

快速开始#

# 1) 创建工作目录
mkdir -p ~/rtos_k230 && cd ~/rtos_k230

# 2) 拉取 docker 镜像
k230 pull

# 3) 下载工具链(仅需首次执行一次)
k230 download-toolchains TC1 TC3

# 4) 下载代码(容器内置 repo,自动挂载宿主 SSH 密钥)
k230 repo init -u git@gitee.com:canmv-k230/manifest.git --repo-url=git@gitee.com:canmv-k230/git-repo.git

# 从 GitHub 下载(国际)
# k230 repo init -u https://github.com/canmv-k230/manifest --repo-url=https://github.com/canmv-k230/git-repo.git

k230 repo sync -j$(nproc)

# 5) 选择您所需要的板级配置, 此处以 k230_rtos_01studio_defconfig 举例
k230 make list-def             # 查看所有板级配置
k230 make k230_rtos_01studio_defconfig

# 6) 编译
k230 make

# 7) 查看输出镜像
ls -lh output/k230_rtos_01studio_defconfig/images/

常用命令#

k230 list-toolchains                  # 查看可用工具链列表
k230 make                             # 编译(增量构建)
k230 make list-def                    # 查看所有板级配置
k230 make menuconfig                  # 交互式配置
k230 bash                             # 进入容器终端
k230 repo sync -j$(nproc)            # 更新代码
k230 pull                             # 更新 k230-builder 镜像

Git 与 SSH#

k230 自动挂载宿主 ~/.ssh~/.gitconfig 到容器,repo init / git clone 直接可用,无需额外配置。


直接本机编译#

推荐使用 Docker 编译。仅在无法使用 Docker 时,参考以下手动搭建流程。

系统要求#

  • 操作系统:Ubuntu 20.04 LTS (x86_64)

  • 内存:≥ 2GB

  • 磁盘:≥ 10GB

配置 APT 源(可选,推荐国内用户)#

sudo cp /etc/apt/sources.list /etc/apt/sources_bak.list
sudo sed -i "s/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list
sudo sed -i "s/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list
sudo apt update

安装系统依赖#

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y --no-install-recommends \
    sudo vim wget curl git git-lfs openssh-client net-tools sed tzdata expect \
    make cmake binutils build-essential gcc g++ bash patch perl tar cpio unzip \
    file bc bison flex autoconf automake python3 python3-pip python3-dev \
    lib32z1 libncurses5-dev fakeroot pigz tree doxygen gawk pkg-config \
    libssl-dev libc6-dev-i386 libncurses5:i386 libconfuse-dev python-is-python3 scons libyaml-dev mtools
sudo apt clean

配置 Python 环境#

pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install -U pyyaml pycryptodome gmssl jsonschema jinja2

安装 repo 工具#

mkdir -p ~/.bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
chmod a+rx ~/.bin/repo
echo 'export PATH="$HOME/.bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

下载代码与编译#

mkdir -p ~/rtos_k230 && cd ~/rtos_k230

# 从 Gitee 下载(国内,需 SSH 密钥)
repo init -u git@gitee.com:canmv-k230/manifest.git --repo-url=git@gitee.com:canmv-k230/git-repo.git

# 从 GitHub 下载(国际)
# repo init -u https://github.com/canmv-k230/manifest --repo-url=https://github.com/canmv-k230/git-repo.git

repo sync -j $(nproc)

# 下载工具链(首次一次)
make dl_toolchain

# 选择板级配置并编译
make k230_rtos_01studio_defconfig
time make

CanMV defconfig 构建 RTOS 镜像#

部分板卡只有 k230_canmv_*_defconfig,没有对应的 k230_rtos_*_defconfig,可基于 CanMV defconfig 构建纯 RTOS 镜像:

make k230_canmv_xxx_defconfig
make menuconfig

menuconfig 中:

  1. 关闭 CanMV Components Configuration

  2. 按需开启 RT-Smart UserSpace Examples Configuration > Enable xxxx examples

  3. 如需编译自定义应用,在 Applications Configuration 中开启对应开关

保存后编译:

make

如需固化为新的 defconfig:

make savedefconfig
# 将生成的配置保存到 configs/,便于团队复用

编译输出#

生成的固件镜像位于 output/<defconfig>/images/,常见文件:

  • *.img:SD 卡烧录或命令行烧录

  • *.kdimg:K230BurningTool USB 烧录或 OTA 升级


常见问题#

k230 命令未找到#

执行 source ~/.bashrc 或重新登录终端。确认 ~/.local/bin$PATH 中。

repo sync 失败#

  1. 检查网络连接,国内用户使用 Gitee 仓库

  2. 重试:k230 repo sync -j4 --fail-fast

  3. 确认 Gitee SSH 密钥已配置,~/.ssh 下存在对应私钥

工具链下载失败#

工具链存储在 Docker Volume k230_toolchains 中,首次下载量较大,网络不稳定时可分批下载:

k230 download-toolchains TC1     # 先下 TC1
k230 download-toolchains TC3     # 再下 TC3

Docker 无权限#

sudo usermod -aG docker $USER
newgrp docker

下一步#

评论列表
条评论
登录