# 目录结构

部署包deployment_source.zip解压后得到canmv和evb两个目录，两个目录中均有example_code_k230目录，如果使用的evb开发板则拷贝evb目录下的example_code_k230目录进行开发，如果使用canmv开发板则拷贝canmv目录下的example_code_k230目录进行开发，两者只有CMakeLists.txt中的内容存在差异。

```
example_code_k230 #示例代码，用于完成编译生成可执行文件main.elf
	--cmake
	--k230_deploy
	--build_app.sh
	--CMakeLists.txt
*.kmodel #kmodel文件
deploy_config.json #部署配置文件
```

# 编译示例代码

编译环境搭建请参考链接：https://github.com/kendryte/k230_sdk


将example_code_k230文件拷贝到k230_sdk目录下的src/big/nncase下，执行build_app.sh

```
./build_app.sh
```

在example_code_k230下的k230_bin中得到编译的main.elf

# 开发板推理

在开发板sharefs目录下，新建一项目目录，如example。将得到的main.elf、*.kmodel、deploy_config.json、inference.jpg（待推理图片）拷贝到该新建目录下。在大核进入相同目录，执行推理命令：

```
main_*.elf deploy_config.json inference.jpg 0
# deploy_config.json:部署配置文件
# inference.jpg:待推理图片，若使用摄像头则为None
# 0: 是否需要调试，0、1、2分别表示不调试、简单调试、详细调试
```

静态图推理在该目录下会生成result_*.jpg显示推理结果，摄像头推理会将结果实时显示在屏幕上。

# 快速开始

如果您不想自己搭建编译环境编译部署代码，您可以使用我们提供的文件进行部署。

准备好如下文件：

```shell
|-*.kmodel							   #  kmodel
|-deploy_config.json		#  部署配置文件
|-elf文件                                  # 可在软件目录AI Cube下的onboard中elfs子目录下找到，分为evb类型开发板和canmv类型开发板。
|-sdcard镜像                         # 可在软件目录AI Cube 下的onboard中的images子目录下找到，分为evb/canmv/micropython三类镜像。
|-测试图片
|-任务相关文件                     # 比如ocr识别任务需要dict.txt, dict_16.txt, Asci0816.zf, HZKf2424.hz文件用于将绘制ocr结果绘制在屏幕上；比如异常检测任务需要memory.bin文件
```

首先在sdcard上烧录选择的镜像，开发板上电启动，将其他准备好的文件拷贝到开发板上，可以使用网络拷贝，也可以使用读卡器拷贝。参考：https://github.com/kendryte/K230_training_scripts/tree/main/end2end_cls_doc 文件传输配置章节。

然后使用开发板进行推理。

# 版本适配

| nncase&nncase_kpu | K230_sdk | k230_canmv(micropython支持) | AI Cube |
| ----------------- | -------- | --------------------------- | ------- |
| 2.3.0             | 1.0.1    | --                          | 1.0     |
| 2.4.0             | 1.1      | 0.2                         | 1.1     |

