近年来,物联网(Internet of Things,IoT)的应用得到普及,物联网市场发展迅猛,嵌入式设备的联网已成大势所趋。终端联网使软件复杂性大幅增加,传统的RTOS内核越来越难以满足市场需求。在这种情况下,物联网操作系统(IoT OS)的概念应运而生。物联网操作系统是指以操作系统内核(可以是RTOS、Linux等)为基础,包括诸如文件系统、图形库等较为完整的中间件,具备低功耗、安全、通信协议栈和云端连接能力的软件平台。RT-Thread就是一个IoT OS。
本书实例的开发环境为:PC的处理器为2 GHz的Pentium双核处理器、内存大小为4 GB、操作系统为64位的Windows7及以上版本,开发软件为RT-Thread Studio开发软件,硬件开发平台为嵌入式原型机ZI-ARMEmbed。
本节的要求如下:
➲ 学习RT-Thread的基础知识。
➲ 了解RT-Thread的架构。
➲ 掌握RT-Thread的基本开发方法。
1.2.1.1 RT-Thread的架构
RT-Thread与其他RTOS(如FreeRTOS、μC/OS)的主要区别之一是,它不仅是一个实时的嵌入式操作系统,还具备丰富的中间件,其架构如图1.3所示。
图1.3 RT-Thread的架构
RT-Thread主要包括以下部分:
(1)内核层:RT-Thread内核是内核层的核心部分,包括内核系统中对象的实现,如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件/板级支持包)与硬件密切相关,由外设驱动程序和CPU移植代码构成。
(2)组件和服务层:组件是基于RT-Thread内核之上的软件,如虚拟文件系统(DFS)、FinSH控制台、网络框架、设备框架等。RT-Thread采用模块化设计,实现了组件内部的高内聚、组件之间的低耦合。
(3)软件包:运行在RT-Thread内核之上,主要包括面向不同应用领域的通用软件(通常由描述信息、源代码或库文件组成)。RT-Thread提供了开放的软件包,软件包中存放的是RT-Thread官方或开发者提供的软件,为用户提供了众多可重用的软件,是RT-Thread生态的重要组成部分。
1.2.1.2 RT-Thread的硬件开发平台
1)ZI-ARMEmbed
本书使用的嵌入式原型机是ZI-ARMEmbed。ZI-ARMEmbed是中智讯(武汉)科技有限公司推出的RT-Thread原型机,获得了RT-Thread官方(上海睿赛德电子科技有限公司)的认证。ZI-ARMEmbed实物如图1.4所示,该原型机采用的是STM32F407微控制器(基于ARM Cortex-M4内核)。
图1.4 ZI-ARMEmbed实物
ZI-ARMEmbed的部分模块或传感器如表1.1所示。
表1.1 ZI-ARMEmbed的部分模块或传感器
续表
2)STM32系列微控制器
ZI-ARMEmbed采用的微控制器是STM32F407,属于STM32系列微控制器。STM32系列微控制器的型号、内核和特点如表1.2所示。
表1.2 STM32系列微控制器的型号、内核和特点
1.2.1.3 ZI-ARMEmbed的连接
1)ARM仿真器的连接
通过ARM调试接口可以连接ARM仿真器与ZI-ARMEmbed,如图1.5所示。
2)串口的连接
(1)使用MiniUSB线可以连接ZI-ARMEmbed与PC。串口连接如图1.6所示。
图1.5 ARM仿真器与ZI-ARMEmbed的连接
图1.6 串口连接
(2)右键单击“我的电脑”,在弹出的右键菜单中选择“管理”可进入“计算机管理”界面。
(3)单击“设备管理器”,找到“端口(COM和LPT)”,查看串口的端口号。例如,COM5(每台计算机的端口号可能不一样)。若没有找到端口则有两种可能:第一种是没有按照实验要求使用MiniUSB线连接硬件与PC(重新检查连接即可);另一种是没有安装串口驱动(串口在第一次使用时需要安装驱动程序,只需要根据相应提示即可安装驱动程序)。串口驱动程序分为CP210x_Drivers.zip或者CH340_Drivers.zip,用户可根据实际的硬件来选择不同的驱动程序。
情况1:安装CP210x_Drivers.zip的结果如图1.7所示。
图1.7 安装CP210x_Drivers.zip的结果
情况2:安装CH340_Drivers.zip的结果如图1.8所示。
图1.8 安装CH340_Drivers.zip的结果
1.2.1.4 串口工具MobaXterm
1)串口设置
(1)安装MobaXterm。双击MobaXterm.exe文件(见图1.9)即可安装MobaXterm。
图1.9 MobaXterm.exe文件
(2)启动MobaXterm后单击“Session”可打开“Session settings”对话框,在该对话框中单击“Serial”按钮,在“Serial port”中选择对应的端口号(本书选择COM5,不同的计算机可能不一样)。将串口的波特率(Speed)、数据位(Data bits)、停止位(Stop bits)、校验位(Parity)、流控制(Flow control)分别设置为“115200”“8”“1”“None”“None”,设置完成之后单击“OK”按钮即可。串口设置如图1.10所示。
图1.10 串口设置
2)串口使用
(1)为ZI-ARMEmbed上电。
(2)进入FinSH控制台(见图1.11)后,在MobaXterm的串口终端可以看到启动消息。
图1.11 FinSH控制台
1.2.1.5 烧写工具J-Flash ARM
1)J-Flash ARM的安装
烧写工具J-Flash ARM可将hex文件烧写到ARM内核的单片机(如STM32F407)中。双击安装包文件,即可默认安装该工具。特别说明:在安装J-Flash ARM时,如果已经安装了IAR for ARM等其他烧写工具,会弹出如图1.12所示的提示框。
图1.12 安装了其他烧写工具的提示框
该提示框提示用户是否换掉IAR for ARM安装路径下的JLinkARM.dll文件。单击“Select All”按钮,勾选“IAR Embedded Workbench for ARM(DLL V4.62 in“D:\install\IAR\ARM\bin”)”选项后,单击“OK”按钮即可按照安装向导来完成J-Flash ARM的安装。
2)J-Flash ARM的设置
(1)安装J-Flash ARM后,单击开始菜单栏中“SEGGER”下的J-Flash ARM软件,即可启动J-Flash ARM。
(2)在J-Flash ARM界面中,用户可根据实际的硬件需要进行设置。选择“Options”→“Project settings”可进入“Project settings”界面,如图1.13所示。
图1.13 选择“Options”→“Project settings”
在“Project settings”界面中选择“Target Interface”选项卡,在第一个下拉框列表中选择“SWD”,如图1.14所示。
图1.14 选择“SWD”
选择“CPU”选项卡,选中“Device”选项,在下面的下拉框列表中选择“ST STM32F407VE”(如果要烧写的设备是RF2无线模组,则选择“ST STM32F103CB”),如图1.15所示。
图1.15 选择“ST STM32F103CB”
(3)设置完成后选择“Target”→“Connect”可测试PC与J-Flash ARM的连接是否正常,如图1.16所示。
图1.16 选择“Target”→“Connect”
连接成功后,J-Flash ARM界面的下方会提示“Connected successfully”,如图1.17所示。
图1.17 连接成功的提示
3)通过J-Flash ARM烧写固件(hex文件)
(1)在J-Flash ARM界面中选择“File”→“Open data file”,打开要烧写到ZI-ARMEmbed的hex文件,如图1.18所示。
图1.18 选择要烧写的hex文件
(2)选择“Target”→“Erase chip”,擦除MCU的Flash扇区,擦除完成后的提示如图1.19所示。
图1.19 擦除完成后的提示
(3)选择“Target”→“Program&Verify”,将选中的hex文件烧写到ZI-ARMEmbed的MCU中,烧写完成后的提示如图1.20所示。
图1.20 烧写完成后的提示
本项目使用J-Flash ARM烧写hex文件,使用ZI-ARMEmbed的LCD显示人机交互界面,K1~K4四个功能按键用来和ZI-ARMEmbed进行交互。
1.2.3.1 硬件部署
(1)准备ZI-ARMEmbed、ARM仿真器、MiniUSB线。
(2)完成仿真器、串口和12 V电源之间的连接。
(3)使用MobaXterm工具创建串口终端,将串口的波特率、数据位、停止位、校验位、流控制分别设置为115200、8、1、None、None。
1.2.3.2 程序下载
(1)运行J-Flash ARM,选择要烧写的hex文件。
(2)选择J-Flash ARM界面中的“Target →Program&Verify”,将hex文件烧写到ZI-ARMEmbed的STM32F407中。
(3)拔掉ARM仿真器,按下复位键启动ZI-ARMEmbed。
1.2.3.3 验证效果
1)ZI-ARMEmbed
程序下载成功之后,ZI-ARMEmbed的LCD点亮,并显示传感器状态信息。用户可以通过K1~K4四个功能按键与ZI-ARMEmbed进行交互,K1用于翻页,K2用于选择和取消选择,K3和K4用于上、下移动。ZI-ARMEmbed的LCD显示的页面如图1.21所示。
图1.21 ZI-ARMEmbed的LCD显示的页面
2)FinSH控制台
(1)启动MobaXterm后,可在串口终端看到启动消息,进入FinSH控制台。
(2)在MobaXterm串口终端的FinSH控制台输入“help”命令(输入之前需要把输入法切换到英文)后按Enter键,可输出ZI-ARMEmbed的命令,通过这些命令可得到不同的输出信息。
本节首先介绍了RT-Thread的架构、J-Flash ARM烧写工具,然后使用ZI-ARMEmbed的LCD显示人机交互页面。