第三章 裸机SDK开发环境搭建
本章将对裸机编程开发进行简单介绍 本章分为如下几个小节: 3.1 SDK介绍 3.2 CMake安装 3.3 Toolchain安装 3.4 使用裸机SDK编译一个工程
3.1 SDK介绍 嘉楠科技针对K210共提供了两种官方SDK,一种是带有FreeRTOS的SDK,另外一种是本教程介绍的裸机SDK,其源代码在GitHub上开源(https://github.com/kendryte/kendryte-standalone-sdk),官方SDK是开发K210的基础,里面带有芯片的各种驱动,帮助我们快速完成外设的驱动和实现AI应用的开发,这些驱动基本都是用C语言编写,具有较高的运行效率和性能,支持在Linux、OSX和Windows下开发。 本节我们将详细介绍裸机SDK在Windows 10下的开发环境搭建过程,我们先从上面的GitHub链接下载我们所需的裸机SDK,下载后我们先解压,可以放在任意目录上,注意存放路径不要带有中文即可,为了方便我们可以先放在桌面,SDK内部文件结构如下图所示: 图3.1.1 裸机SDK文件架构 我们还需要安装CMake和Toolchain这两个工具来搭建所需的开发环境。接下来先介绍CMake的安装。 3.2 CMake安装 CMake是一个安装(编译)工具,具有跨平台,跨编译器等特性,是一种非常实用的Make工具。 CMake官方下载地址:https://cmake.org/download/,我们这里以Win 10 64位系统安装CMake的过程为例,如下图所示: 图3.2.1 CMake官方下载选项 我们这里介绍下文件后缀.msi和.zip的区别:.msi文件是安装程序,与普通安装程序差不多,后缀.zip是CMake的程序文件,不需要安装,只需要解压后放到某个路径下,再把路径添加到系统的环境变量就可以使用。 我们选择下载后缀.zip的文件,然后在D盘根目录下新建K210文件夹(其他路径也可以),我们将其解压到该文件夹中,如下图所示: 图3.2.2 CMake解压路径 接着是添加路径到系统的环境变量中,我们返回到桌面,找到‘此电脑’,右击桌面‘此电脑’图标,依次选择属性à高级系统设置à环境变量,双击系统变量下的 Path,如下图所示: 图3.2.3 环境变量设置路径 点击新建后,我们点击浏览,然后找到我们存放的CMake文件目录,选择文件夹下的bin文件,然后点击确认,此处的路径是:D:\K210\cmake-3.28.1-windows-x86_64\bin,如下图所示: 图3.2.4 设置CMake环境变量 设置完成之后我们要检查验证CMake,使用Win+R打开运行窗口,在运行窗口输入cmd打开命令行界面,输入cmake -version可以看到自己安装的CMake版本,表示CMake已经安装成功,如下图所示: 图3.2.5 CMake安装成功界面 CMake的安装就到此结束了,接下来我们介绍交叉编译器Toolchain的安装。 3.3 Toolchain安装 交叉编译器Toolchain是用于调试开发板的工具和相关库组合起来的集合,也称为工具链。一般内附有编译器(compiler),如GCC,可以进行程式编译、跨平台编译工作。 我们到嘉楠开发者社区下载(https://developer.canaan-creative.com/resource),依次点击资料下载àK210,选择我们要下载的kendryte-toolchain-win-amd64,如下图所示: 图3.3.1 嘉楠资料下载界面 我们将工具链文件下载解压到和CMake同个文件夹下面(其他路径也可以,不过我们放在一起方便管理和查找),接着和CMake一样,也需要添加环境变量,方法和CMake相同,这里不再叙述,可以参考上一小节,同样也是选择到Toolchain文件夹内的bin文件,添加完成后如下图所示: 图3.3.2 设置Toolchain环境变量 设置完成之后我们还需要验证交叉编译器Toolchain,我们根据上一节方法进入命令行界面,输入:make -v按回车,能够看到GNU Make版本号,表示交叉编译器Toolchain已经安装成功,如下图所示: 图3.3.3 Toolchain安装成功界面 到此我们的裸机SDK开发环境就搭建完成了,接下来我们将尝试编译一个程序。 3.4 使用裸机SDK编译一个程序 首先我们可以打开GitHub上的链接:https://github.com/kendryte/kendryte-standalone-sdk,下拉到下方README,可以看到有Linux、OSX和Windows下的编译示例,如下图所示: 图3.4.1 编译示例 这里我们只需要看Windows下的方法,前面下载安装和设置系统环境变量部分我们都完成了,我们按示例介绍进入SDK的src文件夹,发现有一个hello_world文件夹,如下图所示: 图3.4.2 src文件夹目录 我们点击进入文件夹,可以看到有个main.c文件,我们打开文件,即可看到程序源码,源码内容如下: #include <bsp.h> #include <sysctl.h> int core1_function(void *ctx) { uint64_t core = current_coreid(); printf("Core %ld Hello world\n", core); while(1); } int main(void) { sysctl_pll_set_freq(SYSCTL_PLL0, 800000000); uint64_t core = current_coreid(); int data; printf("Core %ld Hello world\n", core); register_core1(core1_function, NULL); /* Clear stdin buffer before scanf */ sys_stdin_flush(); scanf("%d", &data); printf("\nData is %d\n", data); while(1) continue; return 0; } 这个程序就是使用双核打印输出Hello world,有一个核心额外执行读取外部输入整形数据再打印,这里我们先不多介绍,我们现在要将它编译输出一个.bin文件,我们用命令cd进入到hello_world文件夹,如下图所示: 图3.4.3 进入程序文件内 然后使用mkdir build命令创建build文件夹,用来存放我们的编译信息和Bin文件,接着输入:cd build进入文件中,如下图所示: 图3.4.4 创建build文件夹 接下来我们输入:cmake -G "MinGW Makefiles" ../../..(这里示例中有点错误)按回车,将文件关联起来,等待CMake完成后如下图所示: 图3.4.5 完成CMake 接着输入make,按回车开始编译,编译需要一段时间,耐心等待,如有错误会出现红色字体导致编译不成功,等待编译到100%,提示Built target hello_world,说明编译已经完成了,如下图所示: 图3.4.6 编译成功 编译完成后,我们输入命令:dir,可以看到与程序文件名一样的.bin文件,如下图所示: 图3.4.7 生成的BIN文件 至此,本章的内容就介绍完了,下载烧录的内容我们后续再介绍。
|