当前位置: 首页 > news >正文

保姆级教程:在Ubuntu 20.04上从零编译嘉楠堪智K230的Linux+RT-smart双系统镜像

从零构建嘉楠堪智K230双系统镜像:Ubuntu 20.04全流程实战指南

第一次拿到K230开发板时,面对官方文档里陌生的术语和零散的步骤,你是否感到无从下手?作为一款搭载Linux+RT-smart双核异构系统的AIoT开发平台,K230的潜力毋庸置疑,但环境搭建往往成为新手的第一道门槛。本文将带你用一台纯净的Ubuntu 20.04系统,从虚拟机配置开始,逐步完成工具链部署、源码编译到镜像生成的完整流程。不同于碎片化的技术笔记,我们特别关注那些官方手册未提及的细节——比如如何解决国内网络环境下的下载问题,如何处理常见的权限报错,以及如何验证每个关键步骤的正确性。跟着这份保姆级教程操作后,你将获得一个可直接烧录的SD卡镜像,并理解背后每个操作的实际意义。

1. 基础环境准备

1.1 虚拟机配置要点

推荐使用VirtualBox 6.1+或VMware Workstation 16+创建Ubuntu 20.04 LTS虚拟机。关键配置参数如下:

配置项推荐值说明
内存大小≥8GB编译过程需要较大内存
磁盘空间≥100GB(动态分配)源码和工具链占用空间较大
CPU核心数≥4核加快编译速度
网络模式NAT+Host-only双网卡保证下载和开发板连接

安装系统时务必选择"Minimal Installation"并手动添加以下软件包:

sudo apt update && sudo apt install -y \ git make gcc g++ bison flex \ libssl-dev libncurses-dev \ python3-dev device-tree-compiler \ sshpass rsync

提示:如果使用实体机操作,建议先执行sudo apt purge snapd移除snap服务以避免后台更新干扰编译过程。

1.2 代理与镜像源优化

为加速后续组件下载,需要配置APT和PIP镜像源。创建/etc/apt/sources.list.d/aliyun.list文件:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted deb http://mirrors.aliyun.com/ubuntu/ focal universe deb http://mirrors.aliyun.com/ubuntu/ focal-updates universe deb http://mirrors.aliyun.com/ubuntu/ focal multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse

配置pip全局镜像:

mkdir -p ~/.pip && cat > ~/.pip/pip.conf <<EOF [global] index-url = https://mirrors.aliyun.com/pypi/simple/ trusted-host = mirrors.aliyun.com EOF

2. SDK获取与工具链部署

2.1 源码仓库克隆技巧

官方SDK在GitHub和Gitee同步更新,国内用户建议使用Gitee镜像:

git clone --depth=1 https://gitee.com/kendryte/k230_sdk.git cd k230_sdk && git submodule update --init --recursive

遇到子模块更新失败时,可手动修改.gitmodules文件中的URL为gitee镜像地址。例如:

[submodule "src/big/rt-smart"] path = src/big/rt-smart url = https://gitee.com/rt-thread/rt-smart.git

2.2 工具链下载与验证

执行自动下载脚本前,建议先检查tools/get_download_url.sh中的下载链接是否可用。常见问题及解决方案:

  • 证书验证失败:在脚本开头添加export GIT_SSL_NO_VERIFY=1
  • 下载速度慢:手动替换为国内镜像源下载后放置到k230_sdk/toolchain目录
  • 哈希校验失败:删除.downloaded标记文件重新下载

工具链安装验证方法:

# 检查大核工具链 ./toolchain/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/riscv64-unknown-linux-musl-gcc --version # 检查小核工具链 ./toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin/riscv64-unknown-linux-gnu-gcc --version

3. Docker编译环境配置

3.1 定制化Docker镜像构建

官方Dockerfile可能需要针对国内环境调整,主要修改点包括:

  1. 替换APT源为国内镜像
  2. 添加PIP清华源配置
  3. 预下载常用依赖包

修改后的构建命令:

docker build -f tools/docker/Dockerfile \ --build-arg APT_MIRROR=mirrors.aliyun.com \ --build-arg PIP_MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple \ -t k230_docker tools/docker

3.2 容器启动参数详解

推荐使用以下docker run命令启动容器:

docker run -u $(id -u):$(id -g) \ -v $(pwd):$(pwd) \ -v $HOME/.ccache:/home/user/.ccache \ -v /etc/localtime:/etc/localtime:ro \ -w $(pwd) \ --network host \ -e PATH=/opt/toolchain/bin:$PATH \ -it k230_docker \ /bin/bash

关键参数说明:

  • -u $(id -u):$(id -g):保持宿主机用户权限
  • -v $HOME/.ccache:启用编译缓存加速后续构建
  • --network host:使用宿主机网络避免代理配置问题

4. 双系统编译与排错

4.1 配置选项解析

K230提供多种预置配置,开发常用选项如下表:

配置文件适用场景内存分配
k230_canmv_defconfigCanMV-K230标准开发板大核512MB/小核256MB
k230_evb_defconfig基础评估板大核256MB/小核256MB
k230d_defconfig精简调试配置大核128MB/小核128MB

生成特定配置的命令示例:

make CONF=k230_canmv_defconfig menuconfig

在配置界面中需要特别关注:

  1. Toolchain Path:确保指向正确的工具链位置
  2. Filesystem Type:开发阶段建议选择ext4便于调试
  3. Network Settings:启用SSH服务便于远程访问

4.2 常见编译错误处理

问题1:openssl相关报错

E: Unable to locate package libssl-dev

解决方案:

sudo apt update && sudo apt install -y libssl1.1 libssl-dev

问题2:内存不足导致gcc崩溃

gcc: internal compiler error: Killed (program cc1)

解决方法:

  • 临时增加交换空间:
sudo fallocate -l 4G /swapfile && \ sudo chmod 600 /swapfile && \ sudo mkswap /swapfile && \ sudo swapon /swapfile

问题3:dtc版本不兼容

Error: dtc version too old (1.4.7), need 1.5.0 or later

解决方案:

sudo apt remove device-tree-compiler && \ wget https://github.com/dgibson/dtc/archive/refs/tags/v1.6.1.tar.gz && \ tar xzf v1.6.1.tar.gz && \ cd dtc-1.6.1 && \ make -j$(nproc) && \ sudo make install

5. 镜像生成与验证

5.1 输出文件解析

成功编译后,output/images目录下会生成以下关键文件:

  • sysimage-sdcard.img:完整的SD卡镜像(未压缩)
  • sysimage-sdcard.img.gz:压缩版镜像(烧录前需解压)
  • rootfs.ext4:小核Linux根文件系统
  • rt-smart.elf:大核RT-smart可执行文件

验证镜像完整性的方法:

# 检查镜像分区表 fdisk -lu sysimage-sdcard.img # 验证文件系统完整性 fsck.ext4 -n sysimage-sdcard.img

5.2 烧录工具使用技巧

推荐使用BalenaEtcher或dd命令进行烧录。使用dd时注意:

# 确认SD卡设备路径(如/dev/sdb) lsblk # 精确写入(bs=4M加速写入) sudo dd if=sysimage-sdcard.img of=/dev/sdb bs=4M status=progress conv=fsync

烧录完成后,首次启动建议通过串口监控启动日志:

screen /dev/ttyUSB0 115200

典型启动问题排查:

  • 无输出:检查串口线连接和波特率设置
  • 卡在uboot:重新烧录或检查SD卡接触
  • 内核panic:确认编译配置与硬件版本匹配

6. 开发环境进阶配置

6.1 VSCode远程开发配置

在容器内安装必要组件:

apt install -y openssh-server && \ mkdir -p /run/sshd && \ echo 'user:password' | chpasswd

本地VSCode安装Remote-SSH插件后,添加配置:

Host K230-Docker HostName localhost User user Port 2222 ForwardAgent yes

启动容器时添加端口映射:

docker run -p 2222:22 ...

6.2 自动化构建脚本示例

创建build.sh实现一键编译:

#!/bin/bash set -e CONFIG=${1:-k230_canmv_defconfig} # 清理旧构建 make clean && rm -rf output/$CONFIG # 生成配置 make CONF=$CONFIG menuconfig # 开始编译 time make CONF=$CONFIG -j$(nproc) # 打包输出 cd output/$CONFIG/images && \ tar czvf ../k230_$(date +%Y%m%d).tar.gz *

添加执行权限后,可通过./build.sh k230_canmv_defconfig触发完整构建流程。

http://www.jsqmd.com/news/1010200/

相关文章:

  • MC68030协处理器异常处理:协议违规、F线仿真与系统可靠性设计
  • Mythos评估框架:大模型因果推理与反事实稳定性的工程化测量
  • 双麦 DSP 音频模块实战:一文梳理 A-68 在全行业场景的声学解决方案与落地要点
  • 别再只改4G天线了!搞定随身WiFi的WiFi信号弱,试试更换AN9520-245天线模块
  • D4膜全息对偶与超对称量子力学的跨维度RG流
  • VRoidStudio终极汉化指南:5分钟打造专属中文创作环境
  • ops-nn基础概念与架构解析,ops-nn提供了丰富的算子支持
  • 从Coda到博海深衡:国产三维成像声纳实战选型指南(附DASS710对比)
  • 别再只会用Adam了!PyTorch/TensorFlow优化器保姆级选择指南(附代码对比)
  • AI帮我预测设备故障:减少60%非计划停机
  • 告别选择困难!嵌入式项目选文件系统,我为什么最终选了LittleFS?
  • MathPrompter:让大模型具备可验证数学推理能力的协处理器
  • 泡沫包装厂主要分布在哪里?
  • 别再纠结选哪个了!CodeWave低代码平台个人版、团队版、专业版保姆级对比与选择指南
  • 基于SpringBoot+Vue的web机动车号牌管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • AI过程挖掘:用真实日志还原业务流程真相
  • CANN Transformer算子库ops-transformer深度实践:昇腾NPU上Attention计算、位置编码与LayerNorm融合优化的工程实现
  • PySpark DataFrame速查表:数据工程ETL开发实战指南
  • 2026年儿童情商训练体系深度解析与专业服务机构选择参考指南
  • 2026年广州空调回收与餐饮设备回收行业现状与主流服务商分析 - 优质品牌商家
  • 【解压即用】Scail-2 视频动作迁移一键整合包:8G显存通吃50系,长视频/多人/精准目标替换全攻略
  • 3天攻克影刀RPA:自媒体数据采集行业自动化全流程(03)影刀实操之飞书多维表格应用
  • 郑州市2026年最新黄金回收白银回收铂金回收彩金回收五家靠谱门店TOP排行榜及联系方式地址电话推荐 - 大熊猫898989
  • 银川市2026年最新黄金回收白银回收铂金回收彩金回收五家靠谱门店及联系方式地址电话推荐TOP排行榜 - 盛世金银回收
  • 嵌入式高速比较器窗口与滤波模式深度解析:抗干扰与精准事件检测
  • 别再只看DAU了!从UV到MAU,手把手教你为你的App/Web产品定义最合适的活跃指标
  • 从Unity 2017到2022:梳理Android构建工具链(NDK/JDK)的演进与最佳配置实践
  • 别再乱点了!图解IDEA里Git分支Checkout、Rebase、Merge按钮到底啥区别
  • 福州地区纵向加密认证装置选型与电力系统安全防护综合评估 - 优质品牌商家
  • 2026年四川登报挂失官方渠道行业现状与服务模式分析 - 优质品牌商家