本文记录学习、使用 K230 SDK 进行 Linux、RT-smart 系统的开发的一些关键步骤,如何获取系统源代码,如何配置环境,如何使用 Docker 进行编译,获得系统文件。
具体详细的教程,可以学习 CanMV K230 教程。
目录
一、SDK 软件架构概述:
K230 SDK 是面向 K230 开发板的软件开发包,包含了基于 Linux & RT-smart 双核异构系统开发需要用到的源代码,工具链和其他相关资源。
K230 SDK 软件架构层次如图:
二、开发环境搭建:
K230 SDK 需要在 linux 环境下编译,官方推荐用 Ubuntu 20.04 LTS (x86_64),SDK 支持 docker 环境编译,SDK 开发包中发布了 docker file(tools/docker/Dockerfile
),可以生成 docker 镜像。
SDK 使用的 Docker 镜像以 ubuntu 20.04 为基础,如果不使用 docker 编译环境,可以在 ubuntu 20.04 主机环境下参考 dockerfile 的内容,安装相关 HOST package 和工具链后,编译 SDK。
SDK 开发包获取:
SDK 目前在 github 和 gitee 同步发布,可以直接下载压缩包,也可以通过 git clone 命令获取。
git clone https://github.com/kendryte/k230_sdk
git clone https://gitee.com/kendryte/k230_sdk.git
K230 SDK目录结构如下图:
k230_sdk
├── configs
│ ├── k230_evb_defconfig
│ └── k230_evb_usiplpddr4_defconfig
│ └── k230d_defconfig
├── Kconfig
├── LICENSE
├── Makefile
├── parse.mak
├── README.md
├── repo.mak
├── src
│ ├── big
│ │ ├── mpp
│ │ ├── rt-smart
│ │ └── unittest
│ ├── common
│ │ ├── cdk
│ │ └── opensbi
│ ├── little
│ │ ├── buildroot-ext
│ │ ├── linux
│ │ └── uboot
│ └── reference
│ ├── ai_poc
│ ├── business_poc
│ └── fancy_poc
├── board
│ ├── common
│ │ ├── env
│ │ └── gen_image_cfg
│ │ ├── gen_image_script
│ │ └── post_copy_rootfs
│ ├── k230_evb_doorlock
│ └── k230_evb_peephole_device
└── tools
├── docker
│ └── Dockerfile
├── doxygen
├── firmware_gen.py
└── get_download_url.sh
各个目录用途描述如下:
-
configs
: 存放 SDK 的板级默认配置,主要包含如下信息:参考板类型,toolchain 路径,内存布局规划,存储规划配置等
-
src
:源代码目录,分为 大核代码(big
),公共组件(common
),小核代码(little
)三个目录。大核代码包含:
rt-smart
操作系统代码,mpp
代码,unittest
代码公共组件包含:
cdk
代码和opensbi
代码小核代码包含:
linux
内核代码,buildroot
代码,uboot
代码 -
tools
:存放各种工具,脚本等。例如kconfig
,doxygen
,dockerfile
等 -
board
:环境变量、镜像配置文件、文件系统等
下载 toolchain:
k230_sdk 中提供了工具链,buildroot package 和 AI package,可用如下命令下载:
cd k230_sdk
source tools/get_download_url.sh && make prepare_sourcecode
大小核使用不同的工具链。分别在如下路径:
-
大核 rt-samrt 工具链
k230_sdk/toolchain/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu
-
小核 linux 工具链
k230_sdk/toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0
也可通过以下链接下载工具链
wget https://download.rt-thread.org/rt-smart/riscv64/riscv64-unknown-linux-musl-rv64imafdcv-lp64d-20230222.tar.bz2 wget https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1659325511536/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0-20220715.tar.gz
三、SDK 编译
K230 SDK 支持一键编译大小核操作系统和公共组件,生成可以烧写的镜像文件,用于部署到开发板启动运行。设备上 linux 系统的用户名是 root,无密码。
-
SDK 配置
K230 SDK采用 Kconfig 作为 SDK 配置接口,默认支持的板级配置放在 configs 目录下。
k230_canmv_defconfig
:基于 CanMV-K230 的默认 SDK 配置文件。
-
生成 docker 镜像
(第一次编译需要,已经生成docker镜像后跳过此步骤)
docker build -f tools/docker/Dockerfile -t k230_docker tools/docker
-
进入 docker 环境
docker run -u root -it -v $(pwd):$(pwd) -v $(pwd)/toolchain:/opt/toolchain -w $(pwd) k230_docker /bin/bash
-
编译 SDK
#Docker 环境下执行下面命令,编译 CanMV-K230 板子镜像
make CONF=k230_canmv_defconfig
四、编译输出系统文件:
编译完成后,在 output/k230_canmv_defconfig/images
目录下可以看到编译输出
images
目录下镜像文件如下:
sysimage-sdcard.img
————-TF 卡的启动镜像;
sysimage-sdcard.img.gz
———TF 卡的启动镜像压缩包(sysimage-sdcard.img文件的 gzip 压缩包),烧录时需要先解压缩。
五、小结:
整个 SDK 编译完成,成生镜像 sysimage-sdcard.img,可烧录到 TF 卡启动系统。
老徐,2024/5/4