打印
[其他ST产品]

【正点原子K210连载】第五章 Kendryte K210固件烧录-《DNK210使用指南-SDK版》

[复制链接]
583|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第五章 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 Flash0偏移地址的固件加载到内部的SRAM中执行,因为Kendryte K210内部有6MB通用SRAM,因此外部NOR Flash0~固件大小(最大6MB)地址范围的空间使用与存放应用固件的,剩余的外部NOR Flash空间则为用户空间。
若假设外部NOR Flash的大小为16MB,应用固件的大小为6MB,则此时外部NOR Flash的空间分布,如下表所示:
空间
起始地址
结束地址
大小
应用固件
0x000000
0x5FFFFF
0x600000
用户空间
0x600000
0xFFFFFF
0xA00000
表5.1.1 外部NOR Flash空间分布表(存在假设条件)

5.2 CH343驱动安装
DNK210开发板搭载了一颗CH343P串口通信芯片用于Kendryte K210和电脑主机的通信,安装CH343串口驱动,以便我们使用电脑通过USBKendryte 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,这里需要注意的是:不同电脑可能不一样,你的可能是COM4COM5等,但是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-FlashGUI程序烧录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引脚通过USBUART芯片与USB数据线连接至电脑主机的USB端口,因此需要先在Windows下安装kflash(该工具依赖Pythonpip,因此需要先安装Pythonpip,没安装先自行安装),使用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-FlashGUI程序更多功能,下一步用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固件,下一章开始我们进入实验例程的讲解。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

93

主题

94

帖子

2

粉丝