第3章 物端开发实验 3.1实验环境配置 3.1.1硬件环境概述 物联网感知层的核心设备是开发板,这类设备通常由芯片、通信模组、操作系统等模块组成。本章立足于国产技术和产品,基于华为LiteOS介绍开发实验,因此芯片和通信模组的选择也应与LiteOS适配。 华为LiteOS支持多种芯片架构,包括ARM的CortexM0、CortexM0+、CortexM3、CortexM4、CortexM7、CortexA7、CortexA9、CortexA53系列、ARM64的CortexA72系列、RISCV的RV32系列、CSKY的CK802系列等。一般来讲,嵌入式设备不仅芯片差异大、外设种类多,而且资源有限,因此物联网操作系统(如LiteOS)无法像计算机操作系统(如Windows、Linux等)那样,适配并集成所有驱动,通常的做法是对部分开发板完成适配,而对其他开发板进行操作系统的移植。 为了将目标聚焦于物联网系统的开发而无须考虑系统移植的问题,本章选择已适配且应用较为广泛的小熊派系列开发板作为实验硬件,该开发板具有简单易用、生态良好、模块集成度高等优点。需要说明的是,本章的实验参考了小熊派开发板的用户手册。以下对该开发板进行简单介绍。 小熊派高性能物联网开发板由南京小熊派智能科技有限公司与华为技术有限公司联合出品。该开发板基于STM32L431RCT6设计,从物联网的感知层角度来讲,具有设备多样性和可延展性,可以为开发者提供一个评估和设计物联网产品的平台。 1. 开发板的功能 将小熊派开发板进行功能区的划分,如图31所示。 其中: (1) SD card。指示SD卡卡槽区域,可插SD卡。 (2) Flash。指示存储器区域,可存储程序等。 (3) STlink。指示单片机的下载器区域。 (4) USB Power supply。指示USB接口区域,可在下载、调试代码时提供电源。 (5) Power LED。指示LED区域,可根据上电、下载、用户定义状态等亮灯。 (6) E53 interface。指示E53接口区域,可兼容具有E53接口的传感器扩展板。 (7) UART SW。指示串口开关区域,可用来调试通信模块。 图31小熊派开发板的功能区划分图片来源于网络。 (8) LCD。指示显示屏区域。 (9) WAN Module interface。指示通信扩展接口区域,可接入NBIoT、2G、WiFi等采用不同通信方式的通信扩展板。 (10) MCU:STM32L431RCT6。指示采用了STM32L系列单片机。 (11) Reset Key。指示系统的Reset按键,可实现系统的自动复位重启功能。 (12) Users Key。指示功能键区域,可通过F1、F2按键实现定义的功能。 物联网技术基础实验指导 第 3 章 物端开发实验 2. 开发板的框架 小熊派开发板的系统框图如图32所示。 图32小熊派开发板的系统框图图片来源于网络。 其中,各部件的连接关系为: (1) 开发板经由USB 5V供电并通过内置DCDC(直流电源变换器)降压至3.3V进行系统内部供电。 (2) STLink通过SWD(串行线调试接口)接口与MCU互连。 (3) 8MB Flash通过QSPI(4线串行外设接口)与MCU互连。 (4) SD卡通过3线SDMMC与MCU互连。 (5) E53扩展支持SPI(串行外设接口)、I2C、UART(通用异步收发器)协议。 (6) 1.44英寸的LCD(液晶显示器) 通过SPI与MCU互连。 (7) 通信模块扩展接口支持SPI、UART协议。 (8) LED、按键部件直连MCU的GPIO(通用输入/输出)。 3. 主要外设接口 基于后续实验的需要,下面介绍MCU主板的主要外设接口,包括USB接口、按键、E53接口、通信扩展接口、SPI接口和预留接口。 1) USB接口 开发板含有一个USB接口,为USB STLink接口,作为软件下载、调试和系统供电的输入口。USB STLink接口除了给系统提供电源之外,还是开发板的下载接口,与STM32F103的USB接口相连接,用USB数据线连接至PC之后会映射出一个COM口设备,用来进行开发板和PC端之间的交互,打印开发板的调试信息,下载MCU程序,调试通信模组。 2) 按键 开发板带有两个功能按键和一个系统Reset按键。功能按键可以提供给开发者进行功能定义开发,均使用GPIO口,方向为输入,低电平有效。Reset按键是直接接入STM32F103和MCU的硬件复位Pin,按下Reset按键,系统将自动重启复位。 3) E53接口 开发板设计有E53接口的传感器扩展板接口,该接口可兼容所有E53接口的传感器扩展板,实现不同案例场景的快速搭建。该接口可接入UART、SPI、I2C、ADC(模拟数字转换器)等通信协议的传感器。 4) 通信扩展接口 开发板设计有通信扩展板的扩展接口,该接口可接入NBIoT、2G、WiFi等采用不同通信方式的通信扩展板,以满足不同场景下运行的需求。 5) SPI SPI是LCD显示屏的接口,开发板板载一个FPC材质的LCD屏幕,屏幕的分辨率为240×240dpi。 6) 预留接口 预留接口有一组UART和一组I2C接口以及两个通用I/O口,可供开发者自定义开发使用。 3.1.2软件环境概述 软件的编辑需要文本编辑器,编译需要编译器,汇编需要汇编器,链接需要链接器,可执行文件需要软件工具来加载文件,同时软件还需要一些函数库、中间件等。为了使开发更便捷、简单,几乎所有的MCU芯片都会有对应的集成开发环境(IDE),该环境囊括了软件开发从编辑到可执行文件的所有工具,同时还包括常用的库、调试工具、在线调试工具链等。 STM32开发主流的集成开发环境有两种: MDK(微控制器开发套件)和IAR(Systems公司的一款IDE),此外,华为自研的LiteOS Studio也是一个不错的选择,下面简要介绍这三种集成开发环境。 1. MDKARM MDKARM软件是Keil公司推出的一款产品,为基于CortexM、CortexR4、ARM7、ARM9处理器的设备提供了一个完整的开发环境。MDKARM专为微控制器应用而设计,不仅易学易用,而且功能强大,能够满足大多数苛刻的嵌入式应用需求。MDKARM有四个可用版本,分别是MDKLite、MDKBasic、MDKStandard、MDKProfessional。所有版本均提供一个完善的C /C++开发环境,其中MDKProfessional还包含大量的中间库。 2. IAR for ARM IAR for ARM全名为IAR Embedded Workbench for ARM,是一款由瑞典IAR Systems公司推出,专为微处理器开发的优秀集成开发环境,能够支持ARM、AVR、MSP430等多种芯片内核平台。 3. IoT Studio 华为IoT Studio是华为LiteOS提供的一款Windows下的图形化开发工具。它以Visual Studio Code的社区开源代码为基础,根据C语言编程特点和华为LiteOS嵌入式系统软件的业务场景开发。它提供了代码编辑、组件配置、编译、烧录、调试等功能,可以对系统关键数据进行实时跟踪、保存与回放。 小熊派开发板使用STLink作为烧录器,因此需要提前下载安装STLink驱动,根据PC的系统选择对应的安装程序,以64位安装程序为例,如图33所示。 图33开发板安装包 安装完驱动后,将开发板通过 MicroUSB 线与 PC 连接,打开 Windows 的设备管理器,如果在设备管理器中能找到 ST 端口,证明驱动安装成功,如图34所示。 图34驱动安装成功示意图 3.1.3IoT Studio的使用 IoT Studio是华为公司研发的,用于支持 LiteOS 嵌入式系统进行软件开发的工具,提供了代码编辑、编译、烧录及调试等一站式开发功能,支持C、C++、汇编等多种开发语言,可让开发者快速、高效地进行物联网开发。具体安装步骤如下。 1. 华为IoT Studio下载安装 华为IoT Studio的下载地址为https://developer.obs.cnnorth4.myhuaweicloud.com/idea/IoTStudio.zip。完成安装后会提示是否安装STLink驱动及JLINK调试器,可以选择程序自动安装或后续手动安装。 2. 安装STLink驱动 小熊派开发板使用STLink来进行程序读写、烧录等操作,因此需要安装STLink驱动才能使计算机识别并使用小熊派开发板。 3. 安装JLINK调试器 华为IoT Studio需要使用JLINK调试工具进行链接及调试,需要保证计算机上已成功安装JLINK调试器。 4. 安装OpenOCD及GNU Make OpenOCD是小熊派烧录程序,GNU Make是程序编译程序,可以自行在官网找到对应自己机器平台及架构的版本,或使用安装工具自动安装,安装工具的默认安装位置为“~/openSourceTools”。 注: 安装工具也会自动安装STLink驱动及JLINK调试器。 5. 链接小熊派开发板 使用MicroUSB数据线连接小熊派开发板的MicroUSB口及计算机的USB接口。若驱动正确安装,在计算机的“设备管理器”中可以成功识别开发板,如图35所示。 图35在“设备管理器”中成功识别小熊派开发板 调试程序时,请确保AT拨块拨至ATMCU位置,如图36所示。 图36WIFI8266模块 当使用串口终端调试外接模块(如图36的WIFI8266模块)时,可将拨块拨至ATPC位置,因本实验不涉及,在实验中请始终保持拨块位于ATMCU。 3.2实验一 Hello World初体验 本章实验基于简单的hello_world案例,对华为LiteOS设备开发初步体验,在实验开始之前请确保实验环境搭建成功。 (1) 实验目标: 通过使用小熊派开发板,完成简单的Hello World信息打印功能。 (2) 实验准备: 硬件采用小熊派BearPi IoT开发板和WIFI8266通信模组,软件推荐采用IoT Studio。 3.2.1搭建环境 1. 连接硬件 如图37所示,连接好WIFI8266通信模组,注意通信模组标记朝外,不要遮盖住开发板的LED显示屏。如图37和图38所示,将开发板右上角的拨块拨至ATMCU位置,使用可传输数据的USB线将开发板与主机相连。 图37小熊派BearPi IoT开发板(左)和WIFI8266通信模组(右) 图38开发板与主机连接 2. 创建项目 基于小熊派开发板创建LiteOS的工程项目。如图39所示,选择“创建工程”命令进入“新建IoT工程”对话框,其中“工程名称”和“工程目录”可以自由选择,但注意不要有空格、中文等特殊符号,例如本实验使用的硬件平台是STM32L431_BearPi,实验内容是Hello World项目,故工程名称为STM32L431_BearPi_HelloNpuers,“SDK版本”选择IoT_LINK_1.0.0,“硬件平台”选择STM32L431_BearPi,选择“基于示例工程构建”的hello_world_demo。 图39“新建IoT工程”对话框 注意,在创建项目后,需要对相关设置进行检查和确认,具体步骤为: 进入创建好的LiteOS工程,选择“文件”→“首选项”命令,查看Studio设置是否正确。 3. 管理SDK “SDK管理”页面如图310所示,SDK的默认选择为创建项目时选择的IoT_LINK_1.0.0,其中路径为程序自动从计算机上读取SDK的安装路径,不需要手动设置。 图310“SDK管理”页面 在“SDK管理”页面中查看SDK版本是否需要更新,“状态”栏中若出现“更新”,则选中需更新的版本。单击右下角的“安装/更新”按钮,安装完后会显示“已安装”。更新后关闭当前工程,然后基于新的SDK创建新的工程。 4. 依赖工具 如图311所示,在“依赖工具”页面可以查看依赖项,单击“JLink下载”或者“STLink/V2驱动下载”可进行依赖下载,这里不需要重复安装。 图311“依赖工具”页面 5. 工具链路径 “工具链路径”页面如图312所示,其中“JLink目录”和“OpenOCD路径”会默认选择计算机上安装的路径,不需要手动设置。 进入创建的项目工程,可以看到最上方的菜单栏(见图313的方框区域)从左到右依次为编译、重新编译、停止编译、烧录、重启开发板、启动调试、停止调试。 其中,编译指对当前打开的工程进行编译,并生成编译后的文件。重新编译指删除上一次编译生成的文件,再次执行编译。停止编译即停止正在进行的编译。烧录指将程序烧录至目标开发板。重启开发板即对开发板进行重启操作,注意在重新启动开发板之后,需要再次烧录代码。启动调试可启动或继续进行代码调试。停止调试后调试终止,调试信息会清空,但断点信息会保留。 3.2.2工程配置 (1) 选择菜单栏中的“工程”→“工程配置”命令进入“工程配置”对话框,如图314所示。进入“串口配置”页面,选择“端口”为COM3(也有可能为COM4,与个人计算机有关)、“波特率”为115200。 图312“工具链路径”页面 图313工具栏 图314“工程配置”对话框