5. 进阶 - 自定义固件#
1. 概述#
备注
本章节介绍如何在 K230 CanMV 上进行开发。如果您没有自定义需求,可跳过此章节。
K230 CanMV 是基于 K230 SDK 开发的,运行 Micropython 和 OpenMV 的应用。用户可以通过 Python 语言调用硬件资源,灵活进行开发。
2. 开发环境搭建#
主机环境 |
描述 |
---|---|
Ubuntu 20.04.4 LTS (x86_64) |
K230 CanMV 的编译环境适用于 Ubuntu 20.04 及以上版本。 |
目前,K230 CanMV 仅在 Linux 环境下验证编译,其他 Linux 版本未经过测试,因此无法保证在其他系统上的兼容性。
2.1 本地构建环境#
更新 APT 源(可选)
sudo bash -c 'cp /etc/apt/sources.list /etc/apt/sources_bak.list && \
sed -i "s/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list && \
sed -i "s/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list'
安装必要的依赖软件
# 添加 i386 架构支持
sudo bash -c 'dpkg --add-architecture i386 && \
apt-get clean all && \
apt-get update && \
apt-get install -y --fix-broken --fix-missing --no-install-recommends \
sudo vim wget curl git git-lfs openssh-client net-tools sed tzdata expect mtd-utils inetutils-ping locales \
sed make cmake binutils build-essential diffutils gcc g++ bash patch gzip bzip2 perl tar cpio unzip rsync \
file bc findutils dosfstools mtools bison flex autoconf automake python3 python3-pip python3-dev python-is-python3 \
lib32z1 scons libncurses5-dev kmod fakeroot pigz tree doxygen gawk pkg-config libyaml-dev libconfuse2 libconfuse-dev \
libssl-dev libc6-dev-i386 libncurses5:i386'
更新 PIP 源(可选)
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
pip3 config set global.extra-index-url "https://mirrors.aliyun.com/pypi/simple https://mirrors.cloud.tencent.com/pypi/simple"
安装 Python 依赖
pip3 install -U pyyaml pycryptodome gmssl
安装 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
3. 编译流程#
3.1 源码下载#
CanMV-K230 的源码托管在 Github 上,用户可以通过 repo 工具下载源码。
repo init -u https://github.com/canmv-k230/manifest -b master --repo-url=https://github.com/canmv-k230/git-repo.git
repo sync
3.2 代码准备#
第一次编译时,需要下载工具链。以下命令仅需执行一次。
# 第一次执行时下载工具链
make dl_toolchain
3.3 编译#
根据实际需求选择对应的板子配置文件,然后开始编译。
# 列出可用的配置选项
make list_def
# 选择对应的板子配置文件
make xxxx_defconfig
# 开始编译
time make log
编译完成后,镜像文件将生成在 k230_canmv/output/xxxx/images
目录下。
4. 代码目录说明#
k230_canmv
.
├── boards
├── configs
├── include
├── output
├── src
│ ├── applications
│ ├── canmv
│ ├── opensbi
│ ├── rtsmart
│ └── uboot
└── tools
目录结构说明:
boards
:板子相关文件configs
:配置文件列表include
:自动生成的头文件output
:编译生成的文件,包括镜像和临时文件src/applications
:用户应用程序src/canmv
:CanMV 相关文件src/opensbi
:OpenSBI 相关文件src/rtsmart
:RT-Smart 和 MPP 相关文件src/uboot
:U-Boot 相关文件scripts
:编译系统相关脚本