嘉楠堪智 CanMV K230 进行 Linux、RT-smart 系统开发

发布于:2024-05-09 ⋅ 阅读:(27) ⋅ 点赞:(0)

本文记录学习、使用 K230 SDK 进行 Linux、RT-smart 系统的开发的一些关键步骤,如何获取系统源代码,如何配置环境,如何使用 Docker 进行编译,获得系统文件。

具体详细的教程,可以学习 CanMV K230 教程

目录

一、SDK 软件架构概述:

二、开发环境搭建:

SDK 开发包获取:

下载 toolchain:

三、SDK 编译

SDK 配置

生成 docker 镜像

进入 docker 环境

编译 SDK

四、编译输出系统文件:

五、小结:


一、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 目前在 githubgitee 同步发布,可以直接下载压缩包,也可以通过 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存放各种工具,脚本等。例如 kconfigdoxygendockerfile

  • 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


网站公告

今日签到

点亮在社区的每一天
去签到