- 2025-02-18
-
发表了主题帖:
【AI开发板】正点原子K230D BOX开发板来了!一款性能强悍且小巧便携的AI开发板!
【AI开发板】正点原子K230D BOX开发板来了!一款性能强悍且小巧便携的AI开发板!
正点原子K230D BOX是一款性能强悍且小巧便携的AI视觉开发套件,其内嵌的正点原子K230D核心板上搭载了嘉楠科技推出的K230D主控芯片,该芯片以RISC-V双核64位的CPU为核心,并搭载了嘉楠科技自研的第三代KPU,能提供至高达6TOPS的等效算力,其在典型网络下实测推理能力可达K210的13.7倍,十分适用于机器视觉、图像处理等的应用开发!
正点原子K230D BOX开发板标配一块2.4寸的高分辨率MIPI触摸屏和一个高清摄像头模组,且板载了双色LED、蜂鸣器、音频功放电路、麦克风和众多接口,同时,开发板还板载了大容量的运行内存和存储,这为开发板提供了丰富的应用场景!正点原子K230D BOX开发板支持CanMV开发环境,可使用MicroPython进行编程开发,同时提供了对应的IDE上位机软件,可使使用者的获得更佳的开发体验和更高的开发效率!
详细介绍:
- 2025-02-14
-
发表了主题帖:
正点原子ESP32S3系列开发板全面支持小智AI
什么是小智AI?
小智AI项目是由虾哥发起并开源的一个项目。该项目能帮助更多人入门AI硬件开发,了解如何将当下飞速发展的大语言模型应用到实际的硬件设备中。
小智AI功能如下:
WiFi / ML307 Cat.1 4G
BOOT键唤醒和打断,支持点击和长按两种触发方式
离线语音唤醒ESP-SR
流式语音对话(WebSocket或UDP协议)
支持国语、粤语、英语、日语、韩语5种语言识别(SenseVoice)
声纹识别,识别是谁在喊AI的名字(3D Speaker)
大模型TTS(火山引擎或CosyVoice)
大模型LLM(Qwen2.5 72B 或 豆包API)
可配置的提示词和音色(自定义角色)
短期记忆,每轮对话后自我总结
OLED / LCD显示屏,显示信号强弱或对话内容
支持LCD显示图片表情
可能大家觉得AI离我们很远,但是小智AI可以把这个距离拉得很近。正点原子ESP32S3系列开发板全面支持小智AI,助力AI硬件发展。
ESP32S3开发板
ESP32S3 BOX
硬件介绍
正点原子ESP32S3开发板和ESP32S3 BOX都是超高性价比的开发板,主控模组型号:ATK-MWS3S(主控芯片:ESP32-S3R8),主频240MHz,内部ROM、SRAM和PSRAM分别位384KB、512KB和8MB,另外还挂载了16MB Flash的外部存储资源。芯片集成了高性能的 Xtensa® 32 位 LX7 双核处理器、超低功耗协处理器、Wi-Fi 基带、蓝牙基带、RF 模块以及外设。
开发板板载资源丰富,可用开发板进行音视频编码学习和开发,UI界面设计以及AI应用学习与开发。
-
发表了主题帖:
ATK-DLRK3588开发板deepseek-r1-1.5b/7b部署指南
ATK-DLRK3588开发板deepseek-r1-1.5b/7b部署指南
最近deepseek爆火,当DeepSeek这样的国产大模型部署在RK3588上时,由于RK3588的强大性能支持,同样的模型规模可以得到更强大的推理能力、实时性能以及边缘计算能力。在本篇文章中,我们将一口气教大家从下载模型、转换模型到最终部署deepseek-r1-1.5b和deepseek-r1-7b的模型到正点原子的ATK-DLRK3588上面测试。
1、安装anaconda软件环境
第1小节至第4小节讲解从安装conda环境到转换模型,如果需要想要直接在ATK-DLRK3588开发板体验模型的话请直接移步第5小节-deepseek部署章节。
安装anaconda环境请参考正点原子ATK-DLRK3588资料盘的开发板光盘A盘-基础资料\10、用户手册\01、测试文档目录下《03【正点原子】ATK-DLRK3588_AI例程测试手册V1.1》的1.3章节,如下图。
2、安装rkllm转换环境
2.1、新建conda环境
在ubuntu终端里面打开终端,执行以下命令新建conda环境
conda create -n RKLLM-Toolkit python=3.8
2.2、安装rkllm_toolkit工具
首先解压rkllm压缩包,这里在家目录下新建了一个software目录下,并在software目录下面新建了个rkllm目录,将rknn-llm-release-v1.1.4压缩包解压到当前文件夹下,然后在打开终端,执行以下命令进入RKLLM-Toolkit的conda环境。
ubuntu终端下运行
conda activate RKLLM-Toolkit
cd rkllm-toolkit/packages
pip3 install rkllm_toolkit-1.1.4-cp38-cp38-linux_x86_64.whl
3、下载deepseek模型
3.1、安装huggingface-cli工具
ubuntu终端中conda环境下运行
pip3 install huggingface-cli -i https://mirrors.huaweicloud.com/repository/pypi/simple
3.2、下载deepseek模型
可以配置加速节点,下载deepseek的huggingface格式模型(有时候也会失效,建议直接官网直接点击下载键来下载模型会更快),网盘中也有提供下载好的原始huggingface格式模型。
在~/software/rkllm/rknn-llm-release-v1.1.4/rkllm-toolkit/examples/下新建一个huggingface文件夹:
然后执行如下命令:
export HF_ENDPOINT=https://hf-mirror.com
cd ~/software/rkllm/rknn-llm-release-v1.1.4/rkllm-toolkit/examples/huggingface/
再新建一个文件夹deepseek-r1-1.5b,进入该文件夹下:
mkdir deepseek-r1-1.5b && cd deepseek-r1-1.5b
再执行命令并下载DeepSeek-R1-Distill-Qwen-1.5B模型到对应文件夹中:
huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --local-dir . --local-dir-use-symlinks False
我们已经提供了下载好的deepseek-r1 1.5b/7b原始huggingface模型在网盘,想要自己转换的可以自行下载转换模型。
4、deepseek转换rkllm模型
4.1、转换deepseek_1.5b版本的脚本
进入到前面解压的rkllm-toolkit工具里的rkllm-toolkit/examples目录,将开发板光盘C盘-大模型资料\1、程序源码\3、导出rkllm脚本里面的三个文件均放在rkllm-toolkit/examples目录下,并在在当前目录打开终端并进入conda环境。
from rkllm.api import RKLLM
import os
#os.environ['CUDA_VISIBLE_DEVICES']='0'
modelpath = './huggingface/deepseek-r1-1.5b'
llm = RKLLM()
# Load model
# Use 'export CUDA_VISIBLE_DEVICES=0' to specify GPU device
# options ['cpu', 'cuda']
ret = llm.load_huggingface(model=modelpath, model_lora = None, device='cpu')
if ret != 0:
print('Load model failed!')
exit(ret)
# Build model
dataset = "./data_quant.json"
qparams = None
ret = llm.build(do_quantization=True, optimization_level=1, quantized_dtype='w8a8',
quantized_algorithm='normal', target_platform='rk3588', num_npu_core=3,
extra_qparams=qparams,dataset=dataset)
if ret != 0:
print('Build model failed!')
exit(ret)
# Export rkllm model
ret = llm.export_rkllm(f"./deepseek-1.5b-w8a8-rk3588.rkllm")
if ret != 0:
print('Export model failed!')
exit(ret)
1、在命令行中执行以下命令,进入conda环境
conda activate RKLLM-Toolkit
2、转换deepseek-r1-1.5b模型时,执行以下python脚本进行转换模型。
python3 export_deepseek_1.5b_rkllm.py
当出现INFO: Model has been saved to ./deepseek-1.5b-w8a8-rk3588.rkllm!,即转换模型成功。
4.2、转换deepseek_7b版本的脚本
from rkllm.api import RKLLM
import os
#os.environ['CUDA_VISIBLE_DEVICES']='0'
modelpath = './huggingface/deepseek-r1-7b'
llm = RKLLM()
# Load model
# Use 'export CUDA_VISIBLE_DEVICES=0' to specify GPU device
# options ['cpu', 'cuda']
ret = llm.load_huggingface(model=modelpath, model_lora = None, device='cpu')
if ret != 0:
print('Load model failed!')
exit(ret)
# Build model
dataset = "./data_quant.json"
qparams = None
ret = llm.build(do_quantization=True, optimization_level=1, quantized_dtype='w8a8',
quantized_algorithm='normal', target_platform='rk3588', num_npu_core=3,
extra_qparams=qparams,dataset=dataset)
if ret != 0:
print('Build model failed!')
exit(ret)
# Export rkllm model
ret = llm.export_rkllm(f"./deepseek-7b-w8a8-rk3588.rkllm")
if ret != 0:
print('Export model failed!')
exit(ret)
1、转换deepseek-r1-7b模型时,执行以下python脚本进行转换模型。
python3 export_deepseek_7b_rkllm.py
将模型拷贝到部署模型目录下,编译部署程序。
注意!!!转换deepseek-r1-7b及以上规模(包含7b,8b,14b甚至32b等)rkllm模型对PC设备要求比较高,如果想要自己另外转换更大规模的rkllm模型,请确保虚拟机的运行内存充足,如果内存不足,可以通过使用存储来配置交换内存来作为临时内存使用。
一般我们的电脑的运行内存转换huggingface模型为rkllm模型时都不够用,在转换时很容易出现无法转换直接杀死进程的情况,转换前可以创建交换分区,使用硬盘的空间作为运存,在ubuntu下创建10g的交换分区(可根据实际内存创建更大的swap分区),执行以下命令进行创建。
sudo dd if=/dev/zero of=/tmp/swapfile bs=1M count=10240
使用chmod权限
sudo chmod 0600 /tmp/swapfile
创建swap分区文件系统
sudo mkswap /tmp/swapfile
开启swap分区
sudo swapon /tmp/swapfile
查看分区情况
swapon -s
5、编译deepseek部署程序
5.1、安装编译器
将r8的编译器拷贝到ubuntu中,编译器在资料盘开发板光盘A盘-基础资料\05、开发工具\03、交叉编译工具目录下的atk-dlrk3588-toolchain-aarch64-buildroot-linux-gnu-x86_64_5_10_r8_20250120-v1.1.run。
在当前目录打开终端,执行以下命令安装。
chmod a+x atk-dlrk3588-toolchain-aarch64-buildroot-linux-gnu-x86_64_5_10_r8_20250120-v1.1.run
./atk-dlrk3588-toolchain-aarch64-buildroot-linux-gnu-x86_64_5_10_r8_20250120-v1.1.run
当提示“Enter target directory for toolchain (default: /opt/atk-dlrk3588-toolchain):”时, 表示是否选择默认安装在/opt/atk-dlrk3588-toolchain 目录下,建议直接选择默认安装路径(注意!!!!这里会把原先安装的编译器给覆盖,所以原先的编译器还有用处请修改路径, 或者下次需要用到再重新安装原先的编译器),直接按下回车键即可。当提示“You are ab out to install the toolchain to "/opt/atk-dlrk3588-toolchain". Proceed[Y/n]?”时,直接按下 “Y”回车即可。输入 ubuntu 密码回车后,当弹出提示“$. source /opt/atk-dlrk3588-toolchain/environment-setup”时,表示已经安装完成。
5.2、编译部署程序
将提供的deepseek例程压缩包解压,位置在开发板光盘C盘-大模型资料\1、程序源码\2、板端部署程序里的atk_deepseek_demo.zip,解压后将资料盘中的rkllm文件或者转换好的文件拷贝到rkllm_model目录中,打开终端,执行以下命令执行编译部署程序的脚本。
./build-linux.sh
等待编译完成后,需要拷贝rkllm和libgomp库到开发板的usr/lib目录下,可通过adb或者scp工具传输到rk3588开发板上。
#传输一些库到开发板中
adb push lib/libgomp/libgomp.so /usr/lib/libgomp.so.1
adb push lib/librkllm_api/librkllmrt /usr/lib
#将编译好的可执行文件和模型传输到开发板中
adb push install/atk_deepseek_rkllm_demo/ /
6、运行测试
6.1、烧录R8版本镜像
正点原子ATK-DLRK3588开发板准备,请参考资料盘开发板光盘A盘-基础资料\10、用户手册\03、辅助文档\31【正点原子】ATK-DLRK3588出厂镜像烧录指导V1.1.pdf烧录r8系统镜像。
EEWORLDIMGTK3
6.2、运行测试
运行测试时建议连接网线,开发板使用ssh登录,否则会不断打印npu切换iommu信息
此处请注意,4+32g版本rk3588目前仅支持deepseek-R1-1.5b版本运行,7b版本在8+64g的rk3588需要创建swap分区才能运行,创建方法如下。
执行以下命令会比较慢
dd if=/dev/zero of=/userdata/swapfile bs=1M count=10240
使用chmod权限
chmod 0600 /userdata/swapfile
创建swap分区文件系统
mkswap /userdata/swapfile
开启swap分区
swapon /userdata/swapfile
查看分区情况
free -mh
所有内存版本rk3588均使用以下命令进行部署测试。
打开RK3588板端shell(建议ssh登录),执行以下命令进行测试。
cd /atk_deepseek_rkllm_demo
运行deepseek-R1-1.5b程序
./atk_deepseek_demo rkllm_model/deepseek-1.5b-w8a8-rk3588.rkllm 5000 5000
运行deepseek-R1-7b程序
./atk_deepseek_demo rkllm_model/deepseek-7b-w8a8-rk3588.rkllm 5000 5000
等待加载完毕后,可以在里面进行提问,或者输入预设序号进行提问,deepseek-r1-1.5b和deepseek-r1-7b测试结果分别如下。
root@ATK-DLRK3588:/atk_deepseek_rkllm_demo# ./atk_deepseek_demo rkllm_model/deepseek-1.5b-w8a8-rk3588.rkllm 5000 5000
rkllm init start
W rkllm: Warning: Your rknpu driver version is too low, please upgrade to 0.9.7.
I rkllm: rkllm-runtime version: 1.1.4, rknpu driver version: 0.9.6, platform: RK3588
rkllm init success
**********************可输入以下问题对应序号获取回答/或自定义输入********************
[0] 现有一笼子,里面有鸡和兔子若干只,数一数,共有头14个,腿38条,求鸡和兔子各有多少只?
[1] 有28位小朋友排成一行,从左边开始数第10位是学豆,从右边开始数他是第几位?
*************************************************************************
user: 请问你能做些什么
robot:
您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。有关模型和产品的详细内容请参考官方文档。
user: 能写一首关于春天的诗吗
robot:
嗯,用户想要一首关于春天的诗。首先,我得考虑春天的特点,比如花开、绿草、鸟鸣这些元素。然后,可能需要一些意象来表达春天的美好和变化。
也许可以从自然景象入手,比如柳树在春风中摇曳,这样的画面很生动。接着,可以加入一些动态的元素,比如蝴蝶在花间翩翩起舞,这样能增加诗的活力。
再想想季节的变化,春天来了,万物复苏,所以可以用“春”字来表达整体的主题。同时,要让诗句流畅自然,避免生硬的连接。
可能还需要一些比喻或者拟人化的手法,让文字更有画面感。比如把花朵比作小精灵,或者把蝴蝶比作舞者,这样能让读者更容易想象出春天的美好场景。
最后,确保整首诗有节奏感和韵律,这样读起来更顺口,也更有感染力。可能需要调整句子的长度和用词,让每一句都能传达出春天的不同方面。
总的来说,这首诗应该包含自然景象、动态元素以及季节的变化,通过生动的意象和比喻来展现春天的美好和生机。
## 《春日》
柳絮飘飘
在春风中摇曳
蝴蝶翩翩
在花间起舞
花开得正盛
绿草如茵
小精灵们
正朝向春天奔走
我看见
春天的影子
正在阳光下
慢慢升起
root@ATK-DLRK3588:/atk_deepseek_rkllm_demo# ./atk_deepseek_demo rkllm_model/deepseek-7b-w8a8-rk3588.rkllm 5000 5000
rkllm init start
W rkllm: Warning: Your rknpu driver version is too low, please upgrade to 0.9.7.
I rkllm: rkllm-runtime version: 1.1.4, rknpu driver version: 0.9.6, platform: RK3588
rkllm init success
**********************可输入以下问题对应序号获取回答/或自定义输入********************
[0] 现有一笼子,里面有鸡和兔子若干只,数一数,共有头14个,腿38条,求鸡和兔子各有多少只?
[1] 有28位小朋友排成一行,从左边开始数第10位是学豆,从右边开始数他是第几位?
*************************************************************************
user: 0
现有一笼子,里面有鸡和兔子若干只,数一数,共有头14个,腿38条,求鸡和兔子各有多少只?
robot:
设鸡的数量为x,兔子的数量为y。
根据题意,头的总数是14,可以得到方程:
x + y = 14
腿的总数是38,鸡有2条腿,兔子有4条腿,因此可以得到第二个方程:
2x + 4y = 38
将第一个方程解为x = 14 - y,并代入第二个方程中:
2(14 - y) + 4y = 38
28 - 2y + 4y = 38
2y = 10
y = 5
然后,将y的值代入x = 14 - y中:
x = 14 - 5 = 9
因此,鸡有9只,兔子有5只。
设鸡的数量为 \( x \),兔子的数量为 \( y \)。
根据题意,可以列出以下两个方程:
\[
\begin{cases}
x + y = 14 \\
2x + 4y = 38
\end{cases}
\]
**步骤如下:**
1. **解第一个方程求 \( x \):**
\[
x = 14 - y
\]
2. **将 \( x = 14 - y \) 代入第二个方程:**
\[
2(14 - y) + 4y = 38 \\
28 - 2y + 4y = 38 \\
2y = 10 \\
y = 5
\]
3. **将 \( y = 5 \) 代入 \( x = 14 - y \):**
\[
x = 14 - 5 = 9
\]
**最终答案:**
鸡有 \(\boxed{9}\) 只,兔子有 \(\boxed{5}\) 只。
至此部署测试完毕
测试硬件为ATK-DLRK3588开发板16+128版本
- 2024-09-12
-
发表了主题帖:
《DNK210使用指南 -CanMV版 V1.0》第六章 Kendryte K210固件烧录
第六章 Kendryte K210固件烧录
本章将为读者介绍Kendryte K210的固件烧录,以及Kendryte K210外部NOR Flash的空间分布。
本章分为如下几个小节:
6.1 外部NOR Flash的空间分布
6.2 Ubuntu下的固件烧录
6.3 Windows下的固件烧录
6.1 外部NOR Flash的空间分布
Kendryte K210的内部没有用户Flash,因此Kendryte K210需要外挂NOR Flash,才能烧录用户固件,Kendryte K210上电后会将保存在外部NOR Flash中0偏移地址的固件加载到内部的SRAM中执行,因为Kendryte K210内部有6MB通用SRAM,因此外部NOR Flash中0~固件大小(最大6MB)地址范围的空间使用与存放应用固件的,剩余的外部NOR Flash空间则为用户空间。
若假设外部NOR Flash的大小为16MB,应用固件的大小为6MB,则此时外部NOR Flash的空间分布,如下表所示:
空间
起始地址
结束地址
大小
应用固件
0x000000
0x5FFFFF
0x600000
用户空间
0x600000
0xFFFFFF
0xA00000
表6.1.1 外部NOR Flash空间分布表(存在假设条件)
在CanMV中,CanMV将用户空间中的一部分NOR Flash空间作为文件系统使用,默认情况下,CanMV使用的文件系统占用的是NOR Flash中偏移地址为0xD00000且长度为0x300000的空间,因此,若假设外部NOR Flash的大小为16MB,CanMV应用固件的大小为6MB,则此时外部NOR Flash的空间分布,如下表所示:
空间
起始地址
结束地址
大小
应用固件
0x000000
0x5FFFFF
0x600000
用户空间
0x600000
0xCFFFFF
0x700000
CanMV文件系统
0xD00000
0xFFFFFF
0x300000
表6.1.2 CanMV下外部NOR Flash空间分布表(存在假设条件)
6.2 Ubuntu下的烧录固件
Kendryte K210固件的烧录需要借助kflash工具,kflash是一个开源的项目,其项目仓库的地址为:https://github.com/vowstar/kflash.py.git,建议读者在使用kflash前,先访问kflash的项目仓库并仔细阅读其README.md文件,了解kflash的用法。
在使用kflash烧录CanMV固件前,需要让Kendryte K210与Ubuntu进行连接,首先需将Kendryte K210的UARTHS通过USB转UART芯片与USB数据线连接至电脑主机的USB端口,接着在虚拟机的VMware Workstation Player窗口中的Playerà可移动设备下找到USB转UART芯片对应的USB设备,将其设置为与虚拟机连接。
连接成功后,在Ubuntu下查找设备:
# Linux
ls /dev/tty*
在列出的设备中找到对应的设备,例如:/dev/ttyACM6。
接着便可使用kflash烧录上一小节中编译出的CanMV固件至Kendryte K210:
# Linux
kflash -p /dev/ttyACM6 canmv.bin
6.3 Windows下的烧录固件
在Windows下烧录CanMV固件的方法依然是借助kflash工具,因此需要先在Windows下安装kfalsh(该工具依赖Python和pip,因此需要先安装Python和pip):
# Windows
pip install kflash
接着按照上一小节介绍的方式连接Kendryte K210与电脑主机,但注意不要让虚拟机连接到对应的USB设备,否则Windows会找不到对应的USB设备。
连接成功后,在Windows下找到对应的端口号:
# Windows
Get-WmiObject Win32_SerialPort | select-Object Name
在列出的端口中找到对应的端口号,例如:COM6。
接着便可使用kflash烧录上一小节中编译出的CanMV固件至Kendryte K210:
# Windows
kflash -p COM6 canmv.bin
- 2024-09-06
-
发表了主题帖:
《DNK210使用指南 -CanMV版 V1.0》第五章 编译CanMV固件
第五章 编译CanMV固件
上一章节中已经搭建好了基于CanMV的C开发环境,这么一来便可以进行基于C语言和FreeRTOS的应用开发或者编译基于MicroPython语法的应用开发方式所需的CanMV固件,本章就将带领读者体验一下CanMV固件的编译流程。
本章分为如下几个小节:
5.1 CanMV固件编译说明
5.2 获取CanMV源码
5.3 编译CanMV源码
5.1 CanMV固件编译说明
CanMV固件可由CanMV项目编译得到,如果读者对CanMV固件有裁剪或自定义功能的需求,那么可根据本章介绍的内容,亲自编译CanMV固件。
但对于大部分读者,编译CanMV固件并不是必须的,因为在A盘à软件资料à软件àCanMV固件中提供了编译好的固件,读者可以直接使用。
因此,需不需要读者自行编译CanMV固件,完全由读者的实际情况决定,若以提供的固件不能满足读者的使用需求,那遍需要自行编译CanMV固件。当然,自行编译CanMV固件,也能对CanMV项目有更多的了解。
5.2 获取CanMV源码
CanMV项目的开源地址为:https://github.com/kendryte/canmv.git,因此可以使用Git工具获取CanMV,在新安装的Git工具使用前需要先配置用户名和用户邮箱地址:
# Linux
git config --global user.name "Your user name"
git config --global user.email "Your user email"
使用Git工具获取CanMV项目源码仓库:
# Linux
git clone https://github.com/kendryte/canmv.git $WORKSPACE/canmv/
cd $WORKSPACE/canmv/
git submodule update --init --recursive
获取到CanMV项目源码仓库后,查看仓库的Tag:
# Linux
git tag -l
在列出的所有Tag中,找到最新的Tag,然后切换到该Tag,以v1.0.5为例:
# Linux
git checkout v1.0.5
至此,已经成功获取到最新发布的CanMV源码了,若读者后续有修改CanMV源码并提交修改的需求,可以在此基础上创建一个分支:
# Linux
git switch -c dev
为方便读者使用,在A盘à软件资料à软件àCanMV项目仓库压缩包中提供了CanMV项目仓库的仅克隆无修改的压缩包(可能不是最新版本)。
关于Git工具软件的使用介绍不是本教程文档的重点,请读者在使用中遇到问题时,善用搜索引擎。
5.3 编译CanMV源码
关于CanMV源码的编译,建议读者先详细阅读CanMV仓库下的build.md文档。
编译CanMV源码前,需要先安装一下Python依赖库:
# Linux
cd $WORKSPACE/canmv/
pip install -r requirements.txt
随后,读者请根据使用的板子,进入对应的工程目录下,对工程进行配置:
# Linux
cd projects/canmv_atk_dnk210/
python project.py \
--toolchain $TOOLS/kendryte-toolchain/bin \
--toolchain-prefix riscv64-unknown-elf- \
config
以上的配置,主要是配置编译工程所使用的工具链,如果读者有对CanMV固件功能裁剪或自定的的需求,可以执行一下命令,然后对工程进行更加详细的配置:
# Linux
python3 project.py menuconfig
工程配置完成后,便可对工程进行编译:
# Linux
python project.py build
编译完成后,将在工程的build目录下生成canmv.bin文件,即CanMV固件。
- 2024-09-04
-
发表了主题帖:
《DNK210使用指南 -CanMV版 V1.0》第四章 基于CanMV的C开发环境搭建
第四章 基于CanMV的C开发环境搭建
不论是使用CanMV提供的基于C语言和FreeRTOS的应用开发方式开发应用程序或是编译CanMV固件,都需要搭建基于CanMV的C开发环境,用于编译CanMV源码。
本章分为如下几个小节:
4.1 开发环境搭建说明
4.2 安装VMware Workstation Player
4.3 创建虚拟机并安装Ubuntu
4.4 开启SSH服务并进行远程连接
4.5 创建工作目录
4.6 运行开发环境搭建脚本
4.1 开发环境搭建说明
CanMV提供了基于C语言和FreeRTOS的应用开发方式以及基于MicroPython语法的应用开发方式,其中基于C语言和FreeRTOS的应用开发方式依靠直接编译CanMV源码和应用代码来生成应用程序的可执行文件,而基于MicroPython语法的应用开发方式则是需要先编译CanMV源码并得到CanMV固件,然后在目标芯片上运行CanMV固件,以此来解析并运行MicroPython脚本的应用程序。
可以发现,无论使用那种开发方式进行CanMV的应用开发,都是需要编译CanMV的源码,因此本章介绍的开发环境实际上就是CanMV源码的编译环境,因此在搭建好CanMV的源码编译环境后,便可使用基于C语言和FreeRTOS的应用开发方式开发应用程序以及编译CanMV固件。
在CanMV项目仓库源码编译相关的文档(build.md)中有这么一句话,如下所示:
Only support Linux(recommend) and macOS
那么,这意味着CanMV源码的编译只能在Linux或macOS操作系统下完成,在Windows下是无法完成CanMV源码编译的,并且也推荐在Linux操作系统下进行CanMV源码的编译。为此本教程文档将选用Linux操作系统来搭建CanMV的编译环境,具体选用的Linux发行版本是Ubuntu Server 20.04.6。当然,对于具有能够解决所遇到问题的能力的读者,也可以选用其他Linux发行版本或macOS。
至此,确定了使用Ubuntu Server 20.04.6作为开发环境的操作系统,但是可能大部分读者的电脑安装的都是Windows操作系统,身边并没有装有Ubuntu Server 20.04.6操作系统的电脑,那怎么办呢?以下列出一个解决方案:
以购买、租借等方式新增一台安装Ubuntu Server 20.04.6操作系统的电脑
使用Windows下的WLS(适用于Linux的Windows子系统)
使用VMware Workstation Player等应用程序在Windows下创建虚拟机,并运行Ubuntu Server 20.04.6操作系统
其他
本教程文档将就以上解决方案中的第三点(使用VMware Workstation Player等应用程序在Windows下创建虚拟机,并运行Ubuntu Server 20.04.6操作系统)提供详细的教程步骤,具体将介绍在Windows操作系统下使用VMware Workstation Player 17.0.0创建虚拟机并安装运行Ubuntu Server 20.04.6操作系统。
除此了操作系统之外,CanMV源码编译的开发环境,还需要Python、pip、Git、CMake、适用于目标芯片的Toolchain和kflash等软件的支持,下面列出了本教程文档使用的部分软件的版本信息:
软件
版本
Window环境
Windows 10
-
VMware Workstation Player
17.0.0
Visual Studio Code
-
Linux环境
Ubuntu Server
20.04.6
openssh-server
-
Python
3.8.10
pip
23.3.1
Git
-
CMake
v3.28.0-rc2
Kendryte GNU Toolchain
v8.2.0-20190409
kflash
1.1.6
表4.1.1 本教程文档所使用部分软件的版本信息
从本章节开始,将会有很多命令行操作,为了方便读者区分是在Window环境下的命令行操作还是Linux环境下的命令行操作,在此约定,下文中出现的命令都将以所需操作系统环境的名称作为命令的注释,且放置在首行。
例如,Windows环境下的命令行操作,如下所示:
# Windows
echo "Hello, World"
Linux环境下的命令行操作,如下所示:
# Linux
echo "Hello, World"
4.2 安装VMware Workstation Player
本教程使用的VMware Workstation Player版本为17.0.0,VMware Workstation Player是一个能够在Windows操作系统下创建虚拟机并在所创建虚拟机上运行Ubuntu Server 20.04.6操作系统的程序软件,该软件的下载地址为https://www.vmware.com/cn/products/workstation-player.html,读者也可以在A盘à软件资料à软件àVMware Workstation Player安装程序下找到该软件的安装程序。
在Windows操作系统下双击打开VMware Workstation Player 17.0.0的安装程序运行安装程序,并根据提示点击“下一步”按钮,如下图所示:
图4.2.1 VMware Workstation Player 17.0.0安装程序
认真阅读该软件的“最终用户许可协议”,确认无误后,即可勾选“我接受许可协议中的条款”复选框,随后点击“下一步”按钮,如下图所示:
图4.2.2 VMware最终用户许可协议
若提示“更改Windows功能的兼容性设置”,则根据需要勾选“自动安装 Windows Hypervisor Platform (WHP)”复选框,随后点击“下一步”按钮,如下图所示:
图4.2.3 更改Windows功能的兼容性设置
接着自定义安装选项,包括软件的位置、是否安装增强型键盘驱动程序、是否将软件的控制台工具添加到系统环境变量,配置好这些自定义安装选项后,点击“下一步”按钮,如下图所示:
图4.2.4自定义安装选项
接着是一些用户体验的配置项,读者可根据自己的喜好进行配置,配置好后点击“下一步”按钮,如下图所示:
图4.2.5 用户体验设置选项
再接着就是配置是否创建快捷方式的界面,读者可根据需要进行配置,配置好后点击“下一步”按钮,如下图所示:
图4.2.6 快捷方式配置选项
接下来,点击“安装”按钮,安装程序便会自动安装VMware Workstation Player,如下图所示:
图4.2.7 确认安装VMware Workstation Player
随后安装程序便会自动安装VMware Workstation Player,静静等待安装完成即可,如下图所示:
图4.2.8 正在安装VMware Workstation Player
安装程序完成VMware Workstation Player安装后,读者若拥有软件的许可证密钥,可点击“许可证”按钮添加许可证木密钥,若无软件的许可证密钥,直接点击“完成”按钮即可,如下图所示:
图4.2.9 完成安装VMware Workstation Player
至此,VMware Workstation Player安装完成,读者可在软件的安装路径中找到并运行软件,或通过安装程序创建的快捷方式运行软件,如下图所示:
图4.2.10 VMware Workstation Player主界面
4.3 创建虚拟机并安装Ubuntu
要使用VMware Workstation Player创建虚拟机并安装Ubuntu Server 20.04.6操作系统,请读者先根据4.2小节在Windows主机下正确安装VMware Workstation Player。
安装Ubuntu Server 20.04.6操作系统需要使用Ubuntu Server 20.04.6的系统安装镜像文件,该镜像文件可前往其官方的发布网站进行下载,网址为:https://releases.ubuntu.com/focal,进入网站后,在“Select an image”处选择“Server install image”进行下载,如下图所示:
图4.3.1 发布网站下载镜像文件
读者也可以在A盘à软件资料à软件àUbuntu Server安装镜像下找到Ubuntu Server 20.04.6的系统安装镜像文件。
准备好镜像文件后,打开VMWare Workstation Player并点击“创建新虚拟机(N)”按钮打开新建虚拟机向导,如下图所示:
图4.3.2 新建虚拟机向导
打开新建虚拟机向导后,选择“安装程序光盘映像文件(iso)(M)”,并浏览选中Ubuntu Server 20.04.6的系统安装镜像文件,如下如所示:
图4.3.3 选择映像文件
点击“下一步”按钮后,填写简易安装信息,如下图所示:
图4.3.4 填写简易安装信息
简易安装信息的说明,如下表所示:
项目
描述
全名
Ubuntu虚拟机的主机名
用户名
Ubuntu虚拟机中用户的用户名
密码
Ubuntu虚拟机中用户的密码
确认
重复输入确认“密码”
表4.3.1 简易安装信息说明
点击“下一步”按钮后,填写虚拟机的名称和位置,如下图所示:
图4.3.5 填写虚拟机信息
点击“下一步”按钮后,填写虚拟机的磁盘容量等信息,如下图所示:
图4.3.6 配置虚拟机磁盘信息
虚拟机的磁盘将占用虚拟机安装位置磁盘的空间,因此确保主机的磁盘空间足够。读者可以根据自己的实际情况来确定虚拟机的磁盘大小,另外,虚拟机的磁盘大小是可以在创建好虚拟机后再次调整的。
点击“下一步”按钮后,自定义虚拟机的硬件信息,如下图所示:
图4.3.7 自定义硬件信息
主要自定义的硬件信息有内存、处理器、网络适配器,其余的硬件信息,读者也可以根据实际情况进行调整。
硬件信息中的内存、处理器、网络适配器说明,如下表所示:
项目
描述
内存
内存大小根据主机的内存大小进行分配,建议不小于1GB
处理器
处理器内核数量根据主机的处理器内核数量进行分配
网络适配器
建议选择桥接模式,虚拟机将分配到独立的IP地址
表4.3.2 部分硬件信息说明
点击“完成”按钮后,虚拟机创建完毕,勾选“创建后开启此虚拟机”复选框,虚拟机将自动开启。
开启虚拟机后,Ubuntu Server 20.04.6的安装程序将自动运行,安装程序启动后,首先进入“选择语言”界面,读者可根据实际情况选择语言,但建议选择“English”,如下图所示:
图4.3.8 选择语言
回车确认后,若此时安装程序已经连接网络,且检测到有新发布的Ubuntu Server安装程序,则弹出更新界面,建议选择“Continue without updating”,如下图所示:
图4.3.9 不更新安装程序
回车确认后,进入键盘配置界面,键盘配置一般保持默认即可,如下图所示:
图4.3.10 配置键盘
回车确认后,进入网络配置界面,读者请根据实际的网络情况配置网络,或等待DHCP服务器自动分配IP地址,如下图所示:
图4.3.11 配置网络
回车确认后,进入网络代理配置界面,读者请根据实际情况配置网络代理,若无需网络代理,留空即可,如下图所示:
图4.3.12 配置网络代理
回车确认后,进入软件镜像源配置界面,读者可以根据实际的网络情况填写软件镜像源,也可保持默认,如下图所示:
图4.3.13 配置软件镜像源
常用的软件镜像源,如下表所示:
软件镜像源
镜像地址
Ubuntu官方中国镜像
http://cn.archive.ubuntu.com/ubuntu
清华大学开源软件镜像站
https://mirrors.tuna.tsinghua.edu.cn/ubuntu
阿里巴巴开源镜像站
https://mirrors.aliyun.com/ubuntu
表4.3.3 常用软件镜像源
回车确认后,进入磁盘分区布局的选择界面,读者可根据实际情况进行选择,一般保持默认即可,如下图所示:
图4.3.14 磁盘分区布局
回车确认后,进入磁盘分区界面,读者可根据实际情况进行分区配置,一般保持默认即可,如下图所示:
图4.3.15 配置磁盘分区
回车确认后,弹出磁盘分区确认提示,磁盘分区会擦除磁盘且无法恢复,确认无误后,选择“Continue”并回车,如下图所示:
图4.3.16 确认磁盘分区
随后进入系统信息配置界面,读者可根据实际情况配置系统信息,如下图所示:
图4.3.17 配置系统信息
系统配置信息的说明,如下表所示:
项目
描述
Your name
名字
Your server’s name
Ubuntu服务器名
Pick a username
用户名
Choose a password
密码
Confirm your password
确认密码
表4.3.4 系统配置信息说明
回车确认后,进入SSH配置界面,SSH服务用于远程连接Ubuntu Server,本教程将在Ubuntu Server安装完成后手动安装SSH服务,因此这里无需重复配置,如下图所示:
图4.3.18 配置SSH
回车确认后,进入热门软件安装界面,读者可自行选择安装与否,如下图所示:
图4.3.19 安装热门软件
回车确认后,安装程序便自动开始安装Ubuntu Server,如下图所示:
图4.3.20 Ubuntu Server安装中
等待安装程序安装Ubuntu Server完成后,会出现“Reboot Now”选项,如下图所示:
图4.3.21 Ubuntu Server安装完成
选中“Reboot Now”并回车后,虚拟机会重新启动,直到弹出Ubuntu Server的登录界面后,根据提示输入上文系统信息配置中输入的“Your name”和“Choose a password”分别作为用户名和用户密码登入Ubuntu Server系统,如下图所示:
图4.3.22 登入Ubuntu Server
至此,完成Ubuntu操作系统在虚拟机上的安装,由于在创建虚拟机的时候选择了Ubuntu Server 20.04.6的系统安装镜像文件,因此虚拟机在每次开机时都会加载该镜像文件,为了避免在之后的虚拟机开机时再次自动进入Ubuntu Server的安装程序,导致无法正常进入已安装好的Ubuntu Server 20.04.6操作系统,因此需要关闭系统安装镜像文件的“启动时连接”,具体方法为:在VMware Workstation Player软件中选择创建好的Ubuntu虚拟机并依次点击菜单栏的“Playerà可移动设备àCD/DVD 2(SATA) à设置”,如下图所示:
图4.3.23 打开系统安装镜像设置
接着找到并取消勾选“启动时连接”复选框后点击“确认”按钮,如下图所示:
图4.3.24 取消勾选“启动时连接”复选框
4.4 开启SSH服务并进行远程连接
为了方便开发操作以及主机与虚拟机之间的文件传输,建议在Ubuntu Server下开启SSH服务,这样一来,并可在Windows下使用Visual Studio Code、Windows Terminal等软件访问Ubuntu Server。
首先在Ubuntu Server下安装openssh-server:
# Linux
sudo apt update
sudo apt install openssh-server -y
安装好openssh-server后便自动开启了SSH服务,这么一来,同局域网的SSH客户端便可通过Ubuntu Server的IP地址与Ubuntu Server建立SSH连接。
查看Ubuntu Server的IP地址:
# Linux
hostname -I
接下来便可在Windows主机下通过Windows PowerShell、Windows Terminal、Visual Studio Code等软件的终端与Ubuntu Server建立SSH连接:
# Windows
# ssh user@host
ssh alientek@192.168.6.666
其中“user”是Ubuntu Server中用户的用户名,“host”是Ubuntu Server的IP地址,若Ubuntu Server的SSH服务配置正确且网络连接正常,便会提示输入“password”,即Ubuntu Server中用户的密码,成功连接后,如下图所示:
图4.4.1 使用Windows PowerShell进行SSH连接
关于Windows PowerShell、Windows Terminal、Visual Studio Code等工具软件的安装和使用介绍不是本教程文档的重点,请读者在使用中遇到问题时,善用搜索引擎。
至此,便可在Windows下通过SSH服务直接访问Ubuntu Server,非常方便操作
4.5 创建工作目录
Ubuntu Server 20.04.6安装完成后,便可在Ubuntu Server 20.04.6下安装相关的软件以搭建CanMV的开发环境,但为了方便文件管理,本教程文档将创建三个目录来存放CanMV,具体如下表所示:
目录路径
描述
~/Kendryte_K210/Resources
资源目录,用于存放下载的文件等资源
~/Kendryte_K210/Tools
工具目录,用于存放编译工具链、CMake等开发工具
~/Kendryte_K210/Workspace
工作空间目录,用于存放CanMV等工程项目源码
表4.5.1 工作目录说明
创建以上三个目录:
# Linux
mkdir -p ~/Kendryte_K210/Resources
mkdir -p ~/Kendryte_K210/Tools
mkdir -p ~/Kendryte_K210/Workspace
为了方便访问这三个目录,接着将这三个目录的路径添加到环境变量:
# Linux
echo 'export RESOURCES='"$HOME"'/Kendryte_K210/Resources' >> ~/.bashrc
echo 'export TOOLS='"$HOME"'/Kendryte_K210/Tools' >> ~/.bashrc
echo 'export WORKSPACE='"$HOME"'/Kendryte_K210/Workspace' >> ~/.bashrc
source ~/.bashrc
这么一来,便可在命令行中直接使用“$RESOURCES”、“$TOOLS”、“$WORKSPACE”来分别访问以上三个目录了,例如:
# Linux
cd $RESOURCES
4.6 运行开发环境搭建脚本
为方便开发环境的搭建,本教程文档是使用脚本程序来搭建开发环境,读者可在A盘à软件资料à软件àCanMV固件开发环境搭建脚本中找到该脚本文件,脚本文件的文件名为“canmv_dev_env_setup.sh”。
该脚本文件是在Ubuntu Server下运行的脚本程序,因此首先需要将该脚本文件传输到Ubuntu Server的文件系统中。主机与虚拟机之间传输文件的方法有很多,本文档教程将介绍使用SSH的方式进行文件传输。
在Windows环境下可以借助scp命令发送文件至SSH服务器或从SSH服务器复制文件,使用起来就和cp命令一样方便。将脚本文件从Windows的文件系统传输到Ubuntu Server的文件系统,如下:
# Windows
# scp source ... target
scp ./canmv_dev_env_setup.sh alientek@192.168.6.666:/tmp
接着到Ubuntu Server下运行该脚本程序:
# Linux
chmod +x /tmp/canmv_dev_env_setup.sh
/tmp/canmv_dev_env_setup.sh
rm /tmp/canmv_dev_env_setup.sh
脚本程序运行过程中可能需要输入用户密码,脚本程序运行完毕后,需重启以生效所有配置:
# Linux
sudo reboot
至此,基于CanMV的C开发环境基本搭建完成。
下面列出脚本程序的运行流程:
检查脚本运行环境
更新软件源和软件
创建python软链接
安装pip
安装Git
安装CMake
安装Toolchain
安装kflash
安装build-essential
有能力的读者可以自行阅读该脚本文件,有需要的话也可以根据需求修改该脚本文件。
- 2024-09-03
-
发表了主题帖:
《DNK210使用指南 -CanMV版 V1.0》第三章 CanMV简介
第三章 CanMV简介
本章将对CanMV进行简单介绍
本章分为如下几个小节:
3.1 初识CanMV
3.2 CanMV的应用开发方式
3.1 初识CanMV
CanMV是嘉楠科技针对AIOT编程的独立开源项目,其源代码在GitHub上开源(https://github.com/kendryte/canmv.git),可在例如Kendryte K210等强大的嵌入式AI SoC上运行,CanMV提供了基于MicroPython语法的应用开发方式,但同时也支持使用基于C语言和FreeRTOS的应用开发方式。
3.2 CanMV的应用开发方式
CanMV提供了基于C语言和FreeRTOS的应用开发方式和基于MicroPython语法的应用开发方式。
当使用CanMV提供的基于C语言和FreeRTOS的方式进行应用开发时,开发过程使用C或C++语言进行开发,与使用裸机SDK的裸机开发方式一样,这种开发方式要求开发者了解目标芯片的各种参数信息和特性,但相较于使用裸机SDK的裸机开发方式,CanMV提供了移植好的FreeRTOS操作系统,以便开发者能够完成更加复杂多任务应用的开发。
虽然使用C语言的裸机或操作系统的开发方式往往能使应用具有较高的运行效率和性能,但需涉及目标芯片底层寄存器的配置并同时对开发者的嵌入式开发能力有一定要求,但如果是为了初步了解目标芯片的功能、快速地进行一些功能验证或是完成一些相对简单的功能开发,那CanMV提供的基于MicroPython语法的开发方式就是再合适不过的选择了。使用CanMV提供的基于MicroPython语法的应用开发方式,开发者可以快速且便捷地完成应用开发,以下是两个基于MicroPython语法的简单应用示例:
寻找I2C设备示例:
from machine import I2C
i2c = I2C(I2C.I2C0, freq=100000, scl=28, sda=29)
devices = i2c.scan()
print(devices)
拍照示例:
import sensor
import image
import lcd
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
while True:
img = sensor.snapshot()
lcd.display(img)
AI人脸检测示例:
import sensor
import image
import lcd
from maix import KPU
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
anchor = (
0.1075, 0.126875, 0.126875, 0.175, 0.1465625, 0.2246875,
0.1953125, 0.25375, 0.2440625, 0.351875, 0.341875, 0.4721875,
0.5078125, 0.6696875, 0.8984375, 1.099687, 2.129062, 2.425937
)
face_detecter = KPU()
face_detecter.load_kmodel('/sd/face_detect_320x240.kmodel')
face_detecter.init_yolo2(
anchor, anchor_num=9,
img_w=320, img_h=240,
net_w=320, net_h=240,
layer_w=10, layer_h=8,
threshold=0.5, nms_value=0.2, classes=1
)
while True:
img = sensor.snapshot()
face_detecter.run_with_output(img)
faces = face_detecter.regionlayer_yolo2()
for face in faces:
img.draw_rectangle(face[0], face[1], face[2], face[3], color=(0, 255, 0))
可以看到,使用CanMV提供的基于MicroPython语法的开发方式,仅需少量的几行代码便可实现一些简单的功能。
CanMV的源码本质上是一套基于C的软件开发框架,CanMV可谓是站在巨人的肩膀上实现的一套软件框架,为什么这么说呢?这是因为CanMV集成了许多现成的软件库,例如裸机SDK、FreeRTOS、MicroPython、OpenMV的图像处理库等一系列软件库,其中裸机SDK提供了CanMV驱动Kendryte K210底层硬件的能力,FreeRTOS为CanMV实现多核多任务的任务调度以及移植MicroPython成为可能,MicroPython让CanMV的应用可以以类似Python脚本的方式进行开发,OpenMV的图像处理库让CanMV的应用程序可以快速地对图像进行各种包括但不限于元素绘制、图像滤波、特征检测、色块追踪、图像对比和码识别的处理。
- 2024-08-30
-
发表了主题帖:
《DNK210使用指南 -CanMV版 V1.0》第二章 Kendryte K210简介
本帖最后由 嵌入式正点原子 于 2024-8-30 17:25 编辑
第二章 Kendryte K210简介
本章将对Kendryte K210进行简单的介绍,带领读者了解Kendryte K210是什么?有什么资源?能做什么?让读者对Kendryte K210有一个基本的了解。
本章分为如下几个小节:
2.1 初识Kendryte K210
2.2 Kendryte K210资源简介
2.1 初识Kendryte K210
Kendryte K210(勘智K210)是嘉楠科技(Canaan)于2018年9月发布的一款人工智能芯片,集成了机器视觉与机器听觉的能力,定位于人工智能与边缘计算领域。Kendryte K210使用台积电(TSMC)超低功耗的28纳米制程,具有双核64位处理器,拥有较好的功耗性能、稳定性与可靠性。
Kendryte K210的特点主要有以下几个方面:
1,具备机器视觉能力。
2,具备机器听觉能力。
3,更好的低功耗视觉处理速度与准确率。
4,具备卷积人工神经网络硬件加速器KPU,可高性能进行卷积人工神经网络运算。
5,TSMC 28nm先进制程,温度范围-40℃到125℃,稳定可靠。
6,支持固件加密,难以使用普通方法破解。
7,独特的可编程IO阵列,使产品设计更加灵活。
8,低电压,与相同处理能力的系统相比具有更低功耗。
9,3.3V/1.8V双电压支持,无需电平转化,节约成本。
Kendryte K210具备机器视觉能力,通过嘉楠科技完全自主研发的神经网络加速器IP,可以在超低功耗下进行高速卷积神经网络计算,以独立且实时地实现基于卷积神经网络的目标检测或图像分类,以及人脸检测和人脸识别等机器视觉任务。
同时Kendryte K210也具备了机器听觉能力,其芯片上自带高性能麦克风阵列音频处理器,可以在不占用CPU资源的前提下,对实时声源定向与波束成形等的计算进行硬件加速,从而实现声源定向、声场成像、波束成形、语音唤醒和语音识别等功能。
Kendryte K210的图片,如图2.1.1所示:
图2.1.1 Kendryte K210
此外,Kendryte K210也是一颗性能强劲的MCU,它包含了RISC-V 64位双核CPU(Central Processing Unit,中央处理器),主频高达400MHz(可超频至600MHz),并且每个核心都内置了独立的FPU(Floating Point Unit,浮点运算单元)。Kendryte K210包含的用于加速计算卷积人工神经网络的KPU和用于处理麦克风阵列输入的APU是其机器视觉与机器听觉这两大核心功能的基础。同时Kendryte K210还具备了快速傅里叶变换加速器,可以进行高性能复数FFT计算。
因此对于大多数机器学习算法,Kendryte K210都具备高性能的处理能力。
2.2 Kendryte K210资源简介
Kendryte K210采用了BGA144的封装,在8x8x0.953mm的体积下封装了丰富的引脚资源和外设资源,Kendryte K210的硬件资源,如表2.2.1所示:
表2.2.1 Kendryte K210硬件资源表
从上表中可以看出,Kendryte K210不仅拥有强劲的性能,并且还拥有丰富的硬件资源,这些硬件资源大大地扩展了Kendryte K210上两颗RISC-V 64位CPU的应用场景。
在机器视觉、机器听觉与机器学习算法的应用场景下,KPU、APU和FFT可以针对应用场景下的专门计算作硬件加速,这使得Kendryte K210可以高性能且低功耗地胜任这些应用场景。
在安全加密的应用场景下,Kendryte K210包含的AES和SHA256可以相对于软件,以极快的速度完成ECB、CBC、GCM模式下等多种Key长度的加解密运算和SHA-256的计算。
在音视频采集与音频输出的应用场景下,DVP和I2S将为其提供相应的硬件接口。其中,DVP采集到的图像数据可以直接一并或单独地转发给AI模块或者内存,以实现高效的机器视觉处理。
在控制与通讯的应用场景下,Kendryte K210包含了众多控制与通讯的外设,例如:UART、UARTHS、GPIO、GPIOHS、I2C、SPI、TIMER,这些外设提供了Kendryte K210在控制与通讯应用场景下的能力。
此外,Kendryte K210包含的SRAM、FPIOA、WDT、RTC和DMAC等外设也为Kendryte K210在各个应用场景下灵活、稳定且高效的运行提供了保障。
关于Kendryte K210更详细的介绍,可以查看Kendryte K210的数据手册仓库(仓库链接),读者可以在A盘àKendryte K210参考资料àKendryte K210数据手册中找到这个仓库的存档。
- 2024-08-29
-
发表了主题帖:
《DNK210使用指南 -CanMV版 V1.0》第一章 本书学习方法
第一章 本书学习方法
为了让读者更好地学习和使用本书,本章将为读者介绍本书的学习方法,包括:本书的学习顺序、编写规范、代码规范、资料查找和学习建议等内容。
本章分为如下几个小节:
1.1 本书学习顺序
1.2 本书参考资料
1.3 本书编写规范
1.4 本书代码规范
1.5 例程资源说明
1.6 学习资料查找
1.7 给初学者的建议
1.1 本书学习顺序
为了让读者更好地学习和使用本书,我们做了以下几点考虑:
坚持循序渐进的思路讲解,从基础到入门,从简单到复杂;
将知识进行分类介绍,简化学习过程;
将板卡硬件资源介绍独立成一个文档《DNK210硬件参考手册.pdf》。
因此,读者在学习本书的时候,我们建议:先通读一遍《DNK210硬件参考手册.pdf》,对板卡的硬件资源有个大概的了解,然后从本书的基础篇开始,再到实验篇,循序渐进,逐一攻克。
对于初学者,更是要按照以上建议的学习路线进行学习,不要跳跃式学习,因为本书中的知识是环环相扣的,如果没有掌握前面的知识,就去学习后面的知识,就会学的非常吃力。
对于已经有了一定单片机基础的读者,就可以跳跃式地学习,学习效率,当然了,若是遇到不懂的知识点,也得查阅前面的知识点进行巩固。
1.2 本书参考资料
本书主要参考的资料有如下两份文档:
《Kendryte 规格书》(链接)
《CanMV 文档》(链接)
这两份文档均是嘉楠科技针对Kendryte K210提供的文档,前者是Kendryte K210的技术规格书,该规格书主要向硬件设计者提供Kendryte K210的硬件参数信息,当然,软件开发者也是有必要了解这些参数信息的。
后者是嘉楠科技针对CanMV项目提供的文档,该文档非常详细地对CanMV的应用开发进行介绍和讲解,并提供了丰富的例程以及API介绍,是CanMV应用开发者入门必看的文档之一。
以上提及的两份文档也是读者在学习本书的过程中必不可少的参考资料,读者可以在A盘àKendryte K210参考资料中找到这两份文档。
1.3 本书编写规范
本书通过数十个例程,为读者详细介绍了Kendryte K210和CanMV的绝大多数功能,按照知识结构,本书分为两大篇章:基础篇和实验篇。
基础篇,共八章,主要是一下基础知识介绍,包括芯片、软件库介绍以及开发环境搭建等,这些章节在结构上没有共性,但相互有关联,即:必须先学习前面的知识,才能更好地学习后面的知识。
实验篇,共三十九章,主要介绍了在CanMV环境下如何在Kendryte K210上各种功能的使用和应用的开发。这些章节在结构上比较有共性,一般分为四个部分,如下:
1,功能介绍
2,硬件设计
3,程序设计
4,运行验证
功能介绍,简单介绍具体实验章节使用到的硬件外设或CanMV中的软件模块,让读者对实验章节中涉及的软硬件原理有一个基本的了解,便于后面的程序设计。
硬件设计,包括实验例程实现的功能说明、使用的硬件资源及其原理图。读者可以清晰地了解实验章节中的实验例程要实现什么功能、用到的哪些硬件资源、各个硬件资源之间的连接原理图如何。这样有利于程序的设计与实现。
程序设计,主要介绍本章实验例程中的程序部分,包含了例程程序用到的关键软件模块介绍、例程程序的程序流程图和主要的代码讲解,让读者深入了解整个程序代码。
运行验证,是实验章节中的实践部分,在完成程序设计之后,运行设计的程序,并观察是否能够按照预期的现象进行功能,形成一个闭环。
1.4 本书代码规范
本书提供的试验例程代码均为Python脚本,因此代码也是严格遵循Python的语法要求进行编写的。
总结几个规范的关键点:
1,使用有意义的变量名和函数名;
2,使用简洁明了的注释介绍代代码的功能和目的;
3,每个代码块都需要以4个空格为一个缩进等级进行缩进,以表达明确的代码层级关系并且方便代码的阅读;
4,方法、函数和代码块两两之间有且只有一个空行;
5,必须严格遵循Python语法进行脚本程序的设计和编写。
1.5 例程资源说明
DNK210开发板的配套资料中提供的CanMV版实验例程多达39个,这些实验例程均是基于CanMV进行编写的,因此也只能在CanMV环境下运行。这些例程大部分都是原创,并且有着非常详细的注释,代码风格统一、内容循序渐进,非常适合初学者入门学习。
DNK210开发板的CanMV版实验例程如下表所示:
表1.5.1 DNK210 CanMV版例程表
从上表中可以看出,正点原子DNK210开发板的CanMV版例程基本上涵盖了CanMV环境下Kendryte K210上能实现的大部分基础功能。
并且按照上表中的实验名称可以看出,实验例程的安排都是循序渐进的,从简单且基础的功能开始,一步一步地深入,从简单到复杂,这样更有利于读者学习和掌握,也正因此,正点原子的DNK210开发板是非常适合初学者的。
1.6 学习资料查找
有关Kendryte K210和CanMV的相关学习资料,可以尝试从以下五个途径进行获取:
1,嘉楠开发者社区资料下载页面的资料
在嘉楠开发者社区中的资料下载中心,提供了Kednryte K210的部分相关资料,链接,在该链接里提供了Kendrryte K210的软件SDK、硬件设计参考、编程指南、编译工具链和IDE等资料,如下图所示:
图1.6.1 嘉楠开发者社区的资料下载页面
2,嘉楠开发者社区文档页面的资料
嘉楠开发者社区中也针对Kendryte K210提供了CanMV的在线文档,链接,该在线文档主要介绍CanMV在Kendryte K210上的使用,文档中也提供了一些简单的示例,并且有着对CanMV中API详细的介绍等,如下如所示:
图1.6.2 嘉楠开发者社区的CanMV文档页面
3,Kendryte GitHub主页的资料
Kendryte K210官方的很多软件、文档等资料都在Github上开源,链接,在Kendryte的GitHub主页里可以找到许多Kendryte K210相关的软件、文档等相关的开源仓库,如下图所示:
图1.6.3 Kendryte的GitHub主页