第五章 Kendryte K210固件烧录 本章将为读者介绍Kendryte K210的固件烧录,以及Kendryte K210外部NOR Flash的空间分布。 本章分为如下几个小节: 5.1 外部NOR Flash的空间分布 5.2 CH343驱动安装 5.3使用官方K-Flash程序烧录固件 5.4使用VSCode烧录固件 5.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的空间分布,如下表所示: 表5.1.1 外部NOR Flash空间分布表(存在假设条件)
5.2 CH343驱动安装 DNK210开发板搭载了一颗CH343P串口通信芯片用于Kendryte K210和电脑主机的通信,安装CH343串口驱动,以便我们使用电脑通过USB和Kendryte K210进行串口通信。我们先用一根Type-C口的数据线连接我们的开发板,再插入电脑主机的USB口,测试下电脑是否已经安装CH343驱动,如果端口出现新的端口号,说明电脑已经安装驱动,那么就可以跳过本小节内容,如出现下图情况,说明我们电脑主机未安装驱动,则需要按照本节教程安装CH343驱动。 图5.2.1 主机未安装CH343驱动 接下来我们介绍CH343驱动安装过程,其驱动我们已经放在开发板的如下路径:A盘à软件资料à软件à CH343驱动安装程序,如图5.2.2所示: 图5.2.2 CH343驱动 双击CH343SER.EXE进行安装,安装完成后,如图5.2.3所示: 图5.2.3 CH343驱动安装成功 在驱动安装成功之后,将开发板的USB接口通过USB连接到电脑,此时电脑就会自动给其安装驱动了。在安装完成之后,可以在电脑的设备管理器里面找到USB串口(如果找不到,则重启下电脑),如图5.2.4所示: 图5.2.4 设备管理器显示CH343 USB虚拟串口 在图5.2.4中可以看到,我们的USB虚拟串口被识别为COM20,这里需要注意的是:不同电脑可能不一样,你的可能是COM4、COM5等,但是USB-Enhanced-SERIAL CH343,这个一定是一样的。如果没找到USB串口,则有可能是你安装有误,或者系统不兼容。 在安装完CH343 USB虚拟串口以后,我们就可以使用串口调试助手,比如XCOM,和我们的开发板,通过串口进行通信了,这个我们在后续内容再给大家介绍。接下来就介绍本章重点内容,K210的固件烧录。
5.3 使用官方K-Flash程序烧录固件 Kendryte K210固件的烧录需要借助K-Flash工具,这里推荐一个在windows下使用的K-Flash程序,是一个开源的项目,其项目仓库的地址为:https://github.com/kendryte/kendryte-flash-windows,建议读者在使用K-Flash前,先访问K-Flash的项目仓库并仔细阅读其README.md文件,了解K-Flash的用法,这个程序我们已经打包好了,放在 A盘资料中,安装包存放路径是:A盘à软件资料à软件àK-Flash。 我们在A盘资料找到K-Flash,解压到当前目录,如下图所示: 图5.3.1 K-Flash 我们将开发板与电脑主机连接好,然后双击打开K-Flash.exe程序,选择我们K210连接对应的端口,然后在Firmvare选择上一章编译生成的bin文件,如下图所示: 图5.3.2 K-Flash烧录 然后点击Flash,等待开发板自动进入ISP模式,开始烧录固件,如下图所示: 图5.3.3 固件下载 等待下载完成之后,电脑会自动跳出终端,打印输出信息,如下图所示: 图5.3.4 终端打印输出 至此,我们在Windows下使用K-Flash的GUI程序烧录K210的固件的方法就介绍完毕了,但是这个烧录方式存在不能擦除、使用不方便的问题。 接下来我们介绍一种更好的烧录方式,直接在VSCode实现烧录,编写好代码就能完成编译、烧录,非常方便。
5.4 使用VS Code烧录固件 使用VSCode烧录Kendryte K210固件同样借助K-Flash工具,这里使用另外一款kflash工具,是一个开源的项目,其项目仓库的地址为:https://github.com/vowstar/kflash.py.git,建议读者在使用kflash前,先访问K-Flash的项目仓库并仔细阅读其README.md文件,了解kflash的用法。 在使用kflash烧录固件前,首先需将Kendryte K210的ISP引脚通过USB转UART芯片与USB数据线连接至电脑主机的USB端口,因此需要先在Windows下安装kflash(该工具依赖Python和pip,因此需要先安装Python和pip,没安装先自行安装),使用Win+R打开运行窗口,输入cmd打开Windows命令行终端输入pip install kflash后按回车。 # Windows pip install kflash 等待安装完成,如下图所示: 图5.4.1 kflash工具安装完成 出现上图内容,表示kflash已经安装成功了,也可以输入:kflash -v验证下是否安装成功,这里就不多介绍了,我们输入:kflash –help,可以查看kflash功能,如下图所示: 图5.4.2 kflash功能介绍 可以看到,里面有一些下载和擦除的方法,比K-Flash的GUI程序更多功能,下一步用VSCode打开我们的SDK工程,首先我们进入到SDK的根目录,直接双击kendryte-standalone-sdk.code-workspace打开,如下图所示: 图5.4.3 固件下载配置步骤一 进入VSCode后,按下图步骤进入VSCode任务配置。 图5.4.4 固件下载配置步骤二 然后点击CMake:安装,如下图所示: 图5.4.5 固件下载配置步骤三 点击确认后,在SDK的根目录的.vscode文件夹下生成一个tasks.json文件,内容如下图所示: 图5.4.6 固件下载配置步骤四 接下来我们需要重新编写这个文件里的内容,我们在windows命令行终端输入:kflash –help,可以获取固件下载所需的串口端口、波特率、开启终端等指令,这个文件内容就是依据这个编写的,这里就不再叙述,修改后的内容如下。 { "version": "2.0.0", "inputs": [ { "id": "Project", "type": "promptString", "description": "Enter project's name, like 'hello_world'", "default": "${fileDirnameBasename}" }, { "id": "Port", "type": "promptString", "description": "Enter the port of device, like 'COM0' or '/dev/tty0'", "default": "COM9 }, { "id": "Baudrate", "type": "promptString", "description": "Enter the UART baudrate in bps for uploading firmware", "default": "2000000" } ], "tasks": [ { "label": "Flash", "type": "shell", "problemMatcher": [], "command": "kflash", "args": [ "-p", "${input:Port}", "-b", "${input:Baudrate}", "${workspaceFolder}/src/${input:Project}/build/${input:Project}.bin" }, { "label": "Flash with terminal", "type": "shell", "problemMatcher": [], "command": "kflash", "args": [ "-p", "${input:Port}", "-b", "${input:Baudrate}", "-t", "", "${workspaceFolder}/src/${input:Project}/build/${input:Project}.bin" } } 这里简单介绍下输入部分内容,如下图所示: 图5.4.7固件下载配置步骤五 到这一步配置就已经完成了,接下来我们介绍使用VSCode固件烧录,如下图所示: 图5.4.8固件烧录步骤一 然后选择烧录后是否启动终端,这个和我们上面编写的tasks.json文件内容相关,我这里选择启动终端。 图5.4.9固件烧录步骤二 之后除了端口选择外(默认端口是否是开发板连接电脑的端口号),其他按默认选择即可,我们直接按回车,接着自动进入下载,下载完成会跳出终端,打印输出,如下图所示: 图5.4.10固件烧录步骤三 若下载失败检查开发板是否正常连接电脑、端口号是否正确或bin文件是否存在。 本章内容到此就已经介绍完了,我们日常使用推荐使用第二种速度更快、更加方便的方法烧录K210固件,下一章开始我们进入实验例程的讲解。
|