1 概述
本文介绍如何在 Windows 上搭建 LiteOS 的开发调试环境。基于的硬件平台采用的是华为官方推荐的 IoT 开发板 - 小熊派(BearPi)。本文将首先介绍开发板与 Windows 连接所需的驱动安装,再介绍用于开发 LiteOS 系统级别软件的集成开发环境(IDE)。LiteOS 开发可以使用两种 IDE 开发环境,分别是华为提供的 LiteOS Studio 和 Keil 公司提供的 MDK。本文将主要介绍华为目前自研主推的 LiteOS Studio,并通过一个简单的用例演示如何使用 LiteOS Studio 创建一个工程,并对其进行编译、烧录和设备在线调试的具体操作步骤。
2 准备环境2.1 小熊派(BearPi)介绍小熊派(BearPi)是一款基于 STM32L431RCT6 设计的高性能物联网开发板。具有强大的可扩展性,提供给开发者评估及快速设计相关物联网的应用产品。
下图展示了 BearPi 核心板的构成:
图 1 - BearPi 的核心板
出于演示多种物联网解决方案的目的,以及扩展性的需要,整个 BearPi 套件除了核心板外还提供有多款外扩扩展板插件,整体上这些外扩插件板分为两大类:
一类扩展板上集成了多种 “传感(Sensor)” 设备和 “动作(Actuator)” 设备,“Sensor” 的主要职能是负责从周边环境中采集信息并由MCU(图 2 中标号为 “2” 的黄色线框部分)进行读取,譬如温度传感器可以采集周边环境的温度值、光照传感器可以采集周边环境的光照值等等;而 “Actuator” 则指的是一些可以接受控制指令进行动作的元器件,譬如马达用于执行旋转功能、灯泡可以发光,蜂鸣器可以发出声音等等。这些 “Sensor” 和 “Acurator” 根据不同的应用场景组合后集成在一系列的扩展板上,可以通过标准的插口以插件的形式和 BearPi 的核心板进行连接。参考 图 2 中标号为 1 的红色线框部分。另一类扩展板上集成了各种通讯芯片和射频单元,譬如 NB-IoT 发射单元、Wi-Fi 发射单元等,这些扩展板主要负责在 MCU 的控制下实现网络连接,实现 BearPi 和网络云端设备的互联互通。这些负责网络通讯的扩展板同样通过标准的插口以插件的形式连接在 BearPi 的核心板上。参考 图 2 中标号为 “3” 的绿色线框部分。图 2 - BearPi 的三大组成部分
2.2 安装驱动BearPi 开发板通过 Micro USB 线与 PC 连接,所以在具体开发调试前首先要在 PC 上为开发板安装 USB 驱动。BearPi 已经提供了配套的驱动和 LiteOS Studio 安装包,不做特殊说明,以下安装包采用的都是 BearPi 套件自带的版本。
驱动的安装比较简单,解压 “小熊派开发板资料\01软件资料” 目录下的 “STLINK驱动.zip” 压缩包,双击与自己系统对应的安装程序即可, 如 图 3 所示,32 位系统选择 X86 安装程序,64 位系统选择 64 位安装程序,并根据安装程序提示安装驱动(也可以直接运行stlink_winusb_install.bat 这个批处理安装脚本文件)。这里要注意的是,由于后面安装的 LiteOS Studio 软件包只支持 64 位的版本,所以建议大家开发调试时使用 Windows 7 版本以上 64 位的系统,本文演示所使用的环境就是 Windows 7 的 64 位系统。
图 3 - STLINK驱动的安装
安装完驱动后,将开发板通过 Micro USB 线 与 PC 电脑连接,同时打开 Windows 的 设备管理器。如果在设备管理器中能找到如图四所示的 COM 端口,证明驱动安装成功。具体是 “COM3” 还是 “COM4”,这个值在不同的电脑上显示的可能不同,记住这个值,后面使用 LiteOS Studio 设置串口参数的时候会有用。
图 4 - STLINK 虚拟串口
但有时候插上 USB 线加载驱动会碰到问题,驱动提示安装不成功。
图 5 - 驱动提示安装不成功
同时设备管理器中出现恼人的黄色感叹号,并提示 “ST-Link VCP Ctrl”。
图 6 - 设备管理器提示 “ST-Link VCP Ctrl” 失败
这个问题据说多半是由于使用了非正版的 Windows 系统所致。具体的解决方法百度了一下,可以参考这篇 “[干货分享] 【趁热打“帖”】ST-Link串口驱动安装--ST-Link VCP Ctrl驱动安装失败解决(Win7 64bits)” :https://bbs.huaweicloud.com/forum/thread-23929-1-1.html。
3 LiteOS Studio 开发环境搭建LiteOS Studio 是华为基于 LiteOS 嵌入式系统软件开发的工具,支持 C、 C++、汇编等多种开发语言,提供代码编辑、编译、烧录及调试等一站式开发体验。目前支持 ARM Cortex-M0、Cortex-M4、Cortex-M7、Cortex-A7 和 ARM926EJ-S 等芯片架构。
LiteOS Studio 目前已经适配了多种开发板,其中包括 ST、HiSilicon、Fudan Microelectronics 等主流厂商的开发板。BearPi 基于 ST 的芯片方案,很方便地可以得到 LiteOS Studio 的支持。
3.1 安装 LiteOS Studio解压 “小熊派开发板资料\01软件资料” 目录下的 “LiteOS_IDE.zip” 压缩包 ,双击安装程序,如 图7 所示, 根据提示进行安装。
安装过程中注意以下几点:
安装路径不能有中文路径,否则即使安装成功程序运行也会异常。目前 IDE 只支持 Win7 以上的 64 位操作系统,所以安装前请先确认 Windows 系统版本是否满足。图 7 - 安装 LiteOS Studio
3.2 创建 LiteOS Studio 工程
打开 LiteOS Studio软件,在首页上单击 “创建LiteOS Studio工程”。
图 8 - 创建 LiteOS Studio 工程
然后 LiteOS Studio 会弹出 “配置工程界面”,此时可以对新创建的工程进行基本配置。
我们采用最简单的方式进行演示,依次配置如下信息,参考 图 9 的红色线框标识:
图 9 - 配置 LiteOS Studio 工程信息
LiteOS SDK 版本:即本工程基于的 LiteOS 的内核和中间件的版本,对于 LiteOS 这样的嵌入式系统,应用和内核是一起参与编译的。这里我们使用缺省版本,即 LiteOS Studio 安装时自带的一份 SDK 模版。
工程名称:自己定义,本文填写为 demo。工程目录:工程的父目录,请选择一个本机存在的目录即可,本文填写为 D:\ws\iot-dev。工程类型:选择 “端云最佳实践”,这里 LiteOS Studio 自带了一份配合 BearPi 的样例工程,我们直接使用即可。配置好后直接点击 “完成”,需要一些时间,完成后打开 IDE 的界面如下。
图 10 - LiteOS Studio 界面布局
同时在你指定的 “工程目录” 下创建名为 demo 的工程子目录并拷贝了相应的 SDK 和样板工程的代码在工程目录里。
图 11 - 创建的工程目录
3.3 配置 LiteOS Studio 工程工程打开后先不要急着编译,正常流程中还需要先配置一下。菜单选择 “工程” -> “工程配置”,或者直接点击工具栏中的图标如下图所示。
图 12 - 配置 LiteOS Studio 工程
弹出如下 “工程配置” 对话框。由于这里我们使用的是样板工程,这些内容已经都给我们配置好了,所以可以直接忽略这一步。
图 13 - LiteOS Studio 工程配置界面
3.4 编译 LiteOS Studio 工程菜单选择 “工程” -> “编译” 或者点击工具栏上的图标如下图所示。
图 14 - 编译 LiteOS Studio 工程
编译会需要一点时间,但相对于 Linux 那样的大型系统来说还是很快的。编译完成后显示 “编译成功” 以及编译花费的时间。
图 15 - 编译成功
3.5 烧录 LiteOS Studio 工程无论是运行还是调试,都需要将编译好的程序先下载(习惯上称之为 “烧录”)到开发板上去。这里我们先确保使用 Micro USB 线将 BearPi 开发板和 PC 连接好,确保设备管理器上的虚拟串口加载完成(即设备管理器中出现 COM 端口,如 图 4 所示),然后菜单选择 “工程” -> “烧录”,或者直接点击工具栏中的图标如下图所示。
图 16 - 烧录 LiteOS Studio 工程
等待烧录完成,界面的控制台中会输出整个烧录过程信息,直到完成后显示 “烧录成功”。
图 17 - 烧录成功
3.6 调试 LiteOS Studio 工程这里简单介绍一下如何在 LiteOS 工程中通过串口打印实现日志跟踪以及如何使用在线调试单步跟踪。
3.6.1 串口打印调试手段中最基本的就是加打印输出,LiteOS 也支持通过串口输出跟踪信息。下面介绍一下如何配置串口。
注意:如果要确保下面的步骤中能够在 “串口终端” 中看到打印输出,需要检查 BearPi 的 AT 开关,确保其拨到 MCU 一侧,如下图所示。
图 18 - AT 开关
采用 LiteOS Studio 自带的串口终端即可接收 MCU 发送的信息。第一次安装后缺省不显示串口终端,通过菜单选择 “查看” -> “串口终端” 可以将该终端窗口显示出来。
图 19 - 显示串口终端
串口终端显示后还需要对 LiteOS Studio 做一些串口的基本配置才可以接收串口信息。
点击下图中左上侧的 “齿轮” 图标。
图 20 - 配置串口终端
再次打开 “工程配置” 对话框,选择 “串口配置” 项后配置如下信息:
图 21 - 配置串口终端界面
端口:这里选择在安装驱动时看到的 COM 的端口值,我这里选择 COM3。
波特率:115200,缺省不变。数据位:8,缺省不变。停止位:1,缺省不变。奇偶(校验):None,缺省不变。流控:None,缺省不变。此外还可以勾选是否自动将串口输出的内容保存到日志文件中并指定日志文件的存放路径。
点击 “确认” 后保存串口配置,但此时串口并未开始工作,需要继续参考下图将端口打开使能。这样以后我们就可以看到 “串口终端” 中开始有内容输出了,左边显示的是可读的 ASCII 字符信息,右边显示的是对应的十六制输出。之所以存在输出是因为我们这里演示采用的例子中已经有一些调用 printf() 函数的输出,以后我们在实验中也可以通过类似操作在这里查看程序的执行过程。
图 22 - 打开串口
3.6.2 单步跟踪 LiteOS Studio 工程LiteOS Studio 也支持在线单步调试程序。方法很简单。首先确保 BearPi 开发板通过 Micro USB 线连接 PC(这也是我们称之为 “在线调试” 的原因),并已将需要调试的程序下载烧录到开发板中,然后菜单选择 “调试” -> “开始/继续”,或者直接点击工具栏中的图标如下图所示。
图 23 - 调试 LiteOS Studio 工程
此时调试器会自动加载对应代码并暂停在整个系统程序的入口处,接下来的操作和我们操作其他的 IDE 类似,这里就不赘述了。
图 24 - LiteOS Studio 工程调试界面