物联操作技术应用 1_第1页
物联操作技术应用 1_第2页
物联操作技术应用 1_第3页
物联操作技术应用 1_第4页
物联操作技术应用 1_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章移植LiteOS到STM32Chapter2PortingLiteostoStm32《物联网操作系统技术与应用》制作人张亚军

本章将介绍HuaweiLiteOS实验所需的开发环境及基本配置。硬件使用浙江华为NB-Iot全栈实验实训箱,该实训箱主控板采用STM32开发板;在软件方面,通过STM32CubeMX软件配置生成STM32开发板初始化裸机工程代码,在此基础上再使用Keil5集成开发环境(IDE)编辑、编译并移植LiteOS到STM32。前言01040302学习目标能够描述LiteOS实验所需的软硬件环境能够安装及配置STM32CubeMX和Keil5能够分析LiteOS源码的目录结构及其主要作用能够修改LiteOS移植过程中的相应配置文件目录开发环境IDE概述 STM32开发板简介LiteOS源码文件夹内容介绍2.12.22.3CONTENTS开发环境IDE概述2.1IDEOverview

集成开发环境(IntegratedDevelopmentEnvironment)简称IDE,是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。IDE集成了代码编写、分析、编译、调试等功能,是一体化的开发软件。所有具备这一特性的软件或者软件套(组)都可以称作集成开发环境。目前,市场上常用的STM32微处理器开发的IDE有Eclipse、IAR、LiteOSStudio、KeiluVision5等,本书使用KeiluVision5作为开发IDE,用于编辑、编译、链接、调试程序代码,并烧录程序到STM32开发板。另外,为生成STM32开发板初始化代码,还需要使用STM32CubeMX软件。2.1

开发环境IDE概述KeiluVision5是Keil公司(ARM公司之一)推出的KeilMDKv5,该版本使用uVision5IDE集成开发环境,是目前针对ARM微控制器,尤其是基于ARMCortex-M内核的微控制器最佳的一款集成开发工具。KeiluVision5主界面如图2-1所示:2.1

开发环境IDE概述图2-1KeiluVision5主界面STM32CubeMX是意法半导体(ST)推出的STM32芯片图形化配置工具,是基于java环境运行的一个插件(安装STM32CubeMX软件之前,需要先安装java运行环境),用于STM32产品的配置及使用图形化向导生成C初始化代码,可大大减少开发工作的时间和成本。STM32CubeMX主界面如图2-2所示:2.1

开发环境IDE概述图2-2STM32CubeMX主界面STM32CubeMX配置流程:1)选择芯片系列、型号、封装引脚,新建工程;2)配置SYS、RCC、USART等引脚信息;3)时钟配置;4)设置工程名称、路径,编程环境,芯片和固件包等信息;5)生成C初始化代码,可以在KEIL、IAR、GCC等开编译器中使用。2.1

开发环境IDE概述任务描述安装STM32CubeMX和KeiluVision5软件,搭建IDE开发环境,掌握STM32CubeMX和KeiluVision5的基本配置能力。任务2-1开发环境IDE安装及配置STM32开发板简介IntroductiontoSTM32DevelopmentBoard2.22.2

STM32开发板简介

开发板是用来进行嵌入式系统开发的电路板,STM32开发板以STM32系列微控制器(MCU)为主控芯片,集成了存储器、输入设备、输出设备、数据通路/总线和外部资源接口等一系列硬件组成。华为NB-Iot全栈实验实训箱主控板采用STM32开发板,如图2-34所示,MCU型号为STM32L431VCTb,该芯片的最大时钟频率为80MHz,LQFP100封装,程序存储器大小为256K,数据RAM大小为64K,数据RAM类型为SRAM。图2-34华为NB-Iot全栈实验实训箱主控板

任务描述

通过配置STM32CubeMX软件,生成STM32开发板裸机工程代码。

说明:裸机工程可以为之后移植物联网操作系统LiteOS提供硬件配置文件和外设驱动文件,同时可以测试开发板的基本功能。任务2-2生成STM32的裸机工程模板LiteOS源码文件夹内容介绍LiteOSSourceCodeFolders2.32.3

LiteOS源码文件夹内容介绍

华为LiteOS源码有develop和master两个版本,由于master版本是最稳定的发布版本,华为官方建议使用master版本。

打开LiteOS源码文件夹,可以看到其中又包含了很多文件及文件夹,下面来了解主要文件夹及其子文件夹的作用。LiteOS源码核心文件夹的主要内容如表2-1所示。1.arch文件夹arch文件夹存放LiteOS支持的硬件体系结构相关的接口文件,通常由汇编语言和C语言联合编写。这些接口文件与硬件密切相关,不同的硬件对应不同的接口文件,编写这些接口文件的过程称为移植,移植的过程通常由LiteOS和MCU原厂人员来完成,移植好的接口文件存放在arch文件夹中。本章所讲的“移植”其实是“使用LiteOS官方的移植”。2.kernel文件夹kernel文件夹中存放LiteOS基础内核代码,是LiteOS内核的核心。3.components文件夹components文件夹存放除内核之外的第三方组件,如:agent_tiny、lwip、lwm2m等。4.demos文件夹demos文件夹中存放的是供开发人员测试LiteOS内核的demo,是内核功能测试相关的例程代码。2.3

LiteOS源码文件夹内容介绍

5.targets文件夹targets文件夹中存放板级工程代码,含原厂芯片驱动。LiteOS已经为一些半导体厂商的评估板写好程序,这些程序被放在targets文件夹中。表2-1LiteOS源码核心文件夹的主要内容介绍

任务描述登录HuaweiLiteOS官方网站获取LiteOS源码,并将其移植到STM32开发板芯片中,实现芯片/开发板与外设驱动程序的适配。说明:对于嵌入式设备,由于资源有限,且芯片型号和外设差异较大,所以物联网操作系统无法像Windows/Linux那样适配集成所有驱动,因此通常会先适配部分芯片/开发板。为了让操作系统运行在其他芯片/开发板上,此时就需要移植。移植时不需要把整个LiteOS源码都放到工程文件中,只需把源码中的核心部分单独提取出来,否则工程的代码量会太大。LiteOS有两种移植方案:接管中断和非接管中断方式。接管中断的方式,是由LiteOS创建和管理中断,需要修改stm32启动文件,移植比较复杂。STM32的中断管理做的很好,用不着由LiteOS管理中断,所以下边的移植方案,是非接管中断的方式的。中断的使用,跟在裸机工程时一样。在target_config.h文件中,LOSCFG_PLATFORM_HWI宏定义为NO,即为不接管中断方式。任务2-3LiteOS的移植谢谢观看THANKYOUFORWATCHING任务2-1开发环境IDE安装及配置Task2-1InstallingandConfiguringIDE《物联网操作系统技术与应用》制作人张亚军任务描述安装STM32CubeMX和KeiluVision5软件,搭建IDE开发环境,掌握STM32CubeMX和KeiluVision5的基本配置能力。任务实现1.STM32CubeMX软件安装1)下载安装java开发工具包JDK,并配置环境变量登录Oracle官网(/),点击搜索按钮,如图2-3所示:任务2-1开发环境IDE安装及配置图2-3Oracle官网(/)搜索jdk,如图2-4所示,点击JavaDownloadCentral下方链接,进入下载中心界面,根据自己的系统选择合适的版本(以JavaSE11为例),点击JDKDownload,如图2-5所示,进入JavaSEDevelopmentKit11Downloads下载页面,找到jdk-11.0.10_windows-x64_bin.exe,进行下载。任务2-1开发环境IDE安装及配置图2-4搜索jdk图2-5点击JDKDownload双击打开JDK安装程序,根据安装向导安装,点击“下一步”,如图2-6所示。

选择“开发工具”,点击“下一步”,如图2-7所示。任务2-1开发环境IDE安装及配置图2-6JDK安装向导图2-7选择“开发工具”等待安装完成,点击“关闭”,如图2-8所示。

接下来配置环境变量。右键单击桌面上的“计算机”图标,在弹出的右键菜单中选“属性”,打开属性窗口,选择“高级系统设置”,如图2-9所示。任务2-1开发环境IDE安装及配置图2-8点击“关闭”图2-9选择“高级系统设置”进入“系统属性”界面,点击“高级”选项卡下的“环境变量”按钮,如图2-10所示。

进入设置环境变量界面,在“系统变量”下方点击“新建”按钮,在新建系统变量界面输入变量名:JAVA_HOME,变量值:C:\ProgramFiles\Java\jdk-11.0.10(变量值与JDK安装路径必须保持一致),然后点击“确定”按钮,如图2-11所示。任务2-1开发环境IDE安装及配置图2-10点击“环境变量”按钮

图2-11新建JAVA_HOME环境变量选择系统变量Path,点击“编辑”按钮,在编辑系统变量界面的变量值后添加“%JAVA_HOME%\bin;”,点击“确定”按钮,如图2-12所示。

测试JDK是否安装成功。点击桌面左下角“开始”按钮,在弹出的开始菜单中点击“运行”按钮,然后键入“cmd”,在提示符下输入命令:java-version,出现如图2-13所示信息,说明环境变量配置成功。任务2-1开发环境IDE安装及配置图2-12编辑环境变量Path图2-13测试JDK是否安装成功2)下载安装STM32CubeMX软件登录ST官网(/content/st_com/en.html)。搜索STM32CubeMX,如图2-14所示:任务2-1开发环境IDE安装及配置图2-14ST官网搜索STM32CubeMX图2-15点击“GetSoftware”按钮

下载完后解压安装包,双击打开安装程序

,按照安装向导,点击“Next”进行安装,如图2-16所示。等待安装完成,点击“Done”,如图2-17所示。任务2-1开发环境IDE安装及配置图2-16STM32CubeMX安装向导图2-17点击“Done”完成安装3)下载安装STM32MCU软件开发包

双击打开STM32CubeMX软件,进入主界面。选择“Help”->“Manageembeddedsoftwarepackages”,如图2-18所示。任务2-1开发环境IDE安装及配置图2-18Manageembeddedsoftwarepackages根据STM32开发板所用芯片型号选择合适的软件开发包进行安装。本书实验开发板芯片型号属于STM32L4系列,因而选择“STM32CubeMCUPackages”下的“STM32L4”,勾选最新版本软件开发包,单击“InstallNow”进行下载,如图2-19所示。任务2-1开发环境IDE安装及配置图2-19下载安装STM32CubeMCUPackage

下载安装完成后如图2-20所示。任务2-1开发环境IDE安装及配置图2-20STM32CubeMCUPackage安装完成4)STM32CubeMX软件安装环境检查

双击STM32CubeMX软件图标

,打开STM32CubeMX软件,在主界面窗口中点击“ACCESSTOMCUSELECTOR”,如图2-21所示。图2-21点击“ACCESSTOMCUSELECTOR”

在随后出现的界面的左侧列表中勾选:“core”->“ARMCortex-M4”,“Series”->“STM32L4”,“Line”->“STM32L4x1”,“Package”->“LQFP100”,然后双击右侧芯片型号STM32L431VC,新建工程,如图2-22所示。任务2-1开发环境IDE安装及配置图2-22选择STM32L431VC型号芯片出现如图2-23所示界面,表示工程创建成功,STM32CubeMX软件环境安装无误。任务2-1开发环境IDE安装及配置图2-23成功创建工程2.KeiluVision5软件安装1)下载安装KeiluVision5软件登录Keil官方网站的DownloadProducts页面(/download/product/),单击“MDK-Arm”,如图2-24所示。任务2-1开发环境IDE安装及配置图2-24Keil官方网站的DownloadProducts页面

在随后弹出的页面中,填写个人信息并提交,即可看到下载链接。单击“MDK533.EXE”按钮,如图2-25所示。任务2-1开发环境IDE安装及配置图2-25单击“MDK533.EXE”按钮

下载完成后,双击Keil安装包,根据安装向导进行安装,如图2-26所示。接受协议,选择安装目录,填写个人信息之后进入安装,当出现弹窗提示是否要安装通用串行总线控制器时,选择“安装”,如图2-27所示。任务2-1开发环境IDE安装及配置图2-26Keil安装向导图2-27安装通用串行总线控制器

最后点击“Finish”完成安装,如图2-28所示。

2)下载安装KeiluVision5芯片pack包

在浏览器地址栏输入网址/pack/Keil.STM32L4xx_DFP.2.5.0.pack,下载STM32L431VC的pack包Keil.STM32L4xx_DFP.2.5.0.pack并安装,如图2-29所示。任务2-1开发环境IDE安装及配置图2-28安装完成图2-29安装Keil.STM32L4xx_DFP.2.5.0.pack3)KeiluVision5软件安装环境检查

在KeiluVision5界面点击“Project”菜单下的“NewuVisionProject”,如图2-30所示。

选择工程保存路径,填写工程名称,点击保存,如图2-31所示。任务2-1开发环境IDE安装及配置图2-30新建工程图2-31选择工程保存路径

选择芯片pack包型号,点击“OK”,如图2-32所示。

出现如图2-33界面,表示已经创建生成一个基础工程,KeiluVision5环境安装无误。任务2-1开发环境IDE安装及配置图2-32选择芯片pack包型号图2-33创建生成一个基础工程谢谢观看THANKYOUFORWATCHING任务2-2生成STM32的裸机工程模板Task2-2GeneratingaSTM32Bare-MetalProjectTemplate《物联网操作系统技术与应用》制作人张亚军

任务描述

通过配置STM32CubeMX软件,生成STM32开发板裸机工程代码。

说明:裸机工程可以为之后移植物联网操作系统LiteOS提供硬件配置文件和外设驱动文件,同时可以测试开发板的基本功能。

任务实现1.打开STM32CubeMX软件,新建工程(方法见任务2-1中“STM32CubeMX软件安装环境检查”部分)。任务2-2生成STM32的裸机工程模板

2.引脚配置

1)配置烧录调试方式引脚。在“Pinout&Configuration”界面中左侧列表选择“SyetemCore”->“SYS”,在出现的Mode界面中Debug选项下拉选择“SerialWire”,即SWD接口,该接口适用于STLink和JLink。如图2-35所示。任务2-2生成STM32的裸机工程模板图2-35配置SYS

2)配置时钟引脚。左侧列表选择“SyetemCore”->“RCC”,在出现的Mode界面中HighSpeedClock(HSE,外部高速时钟)选项下拉选择“Crystal/CeramicResonator(晶振/陶瓷谐振器)”,即采用外部晶振作为HSE的时钟源。如图2-36所示。任务2-2生成STM32的裸机工程模板图2-36配置RCC

3)配置串口引脚。左侧列表选择“Connectivity”->“USART1”,在出现的Mode界面中Mode选项下拉选择“Asynchornous”,以同样的方法配置“USART2”和“USART3”,如图2-37所示。任务2-2生成STM32的裸机工程模板图2-37配置UART

4)配置LED灯引脚。左侧列表选择“SyetemCore”->“GPIO”,点击右侧芯片上方的PD2(接开发板上的LED4),在弹出的下拉菜单中选“GPIO_Output”,以相同的方法配置PD3、PD4、PD5引脚(分别接开发板上的LED3、LED2、LED1),如图2-38所示。任务2-2生成STM32的裸机工程模板图2-38配置LED灯引脚

5)配置KEY引脚。点击右侧芯片下方的PA4(接开发板上的KEY1),在弹出的菜单中选“GPIO_Input”,然后在“GPIOPull-up/Pull-down”后选择“Pull-up”,再以相同的方法配置PA5、PA6、PA7引脚(分别接开发板上的KEY2、KEY3、KEY4),如图2-39所示。任务2-2生成STM32的裸机工程模板图2-39配置KEY引脚

3.时钟配置

单击进入“ClockConfiguration”界面,根据图2-40所示方式配置时钟信号。最高时钟频率为80MHz,在HCLK处输入80。任务2-2生成STM32的裸机工程模板图2-40时钟配置

4.工程设置

点击进入“ProjectManager”界面,选择“Project”,填写工程名称和保存路径,IDE环境选择“MDK-ARMV5”进行工程配置,如图2-41所示。任务2-2生成STM32的裸机工程模板图2-41工程设置选择“CodeGenerator”->”Generatefiles”,勾选如图2-42所示选项,完成工程配置。任务2-2生成STM32的裸机工程模板图2-42CodeGenerator配置5.生成初始化代码点击“GENERATECODE”,在弹出的对话框中点击“OpenProject”,如图2-43所示。任务2-2生成STM32的裸机工程模板图2-43OpenProject

随后自动弹出Keil5软件界面,在Keil5中打开名为TEST的工程,检查工程文件是否完整无误,如图2-44所示。任务2-2生成STM32的裸机工程模板图2-44Keil5中打开TEST工程点击“Build”按钮进行编译,查看运行结果。任务2-2生成STM32的裸机工程模板图2-45查看运行结果根据图2-45的输出信息,0Error(s),0Warning(s)表示编译成功,说明初始化代码生成无误。(只要输出为0Error(s),即表示编译成功)。谢谢观看THANKYOUFORWATCHING任务2-3LiteOS的移植Task2-3PortingLiteOS《物联网操作系统技术与应用》制作人张亚军

任务描述登录HuaweiLiteOS官方网站获取LiteOS源码,并将其移植到STM32开发板芯片中,实现芯片/开发板与外设驱动程序的适配。说明:对于嵌入式设备,由于资源有限,且芯片型号和外设差异较大,所以物联网操作系统无法像Windows/Linux那样适配集成所有驱动,因此通常会先适配部分芯片/开发板。为了让操作系统运行在其他芯片/开发板上,此时就需要移植。移植时不需要把整个LiteOS源码都放到工程文件中,只需把源码中的核心部分单独提取出来,否则工程的代码量会太大。LiteOS有两种移植方案:接管中断和非接管中断方式。接管中断的方式,是由LiteOS创建和管理中断,需要修改stm32启动文件,移植比较复杂。STM32的中断管理做的很好,用不着由LiteOS管理中断,所以下边的移植方案,是非接管中断的方式的。中断的使用,跟在裸机工程时一样。在target_config.h文件中,LOSCFG_PLATFORM_HWI宏定义为NO,即为不接管中断方式。任务2-3LiteOS的移植

任务实现

1.移植前的准备工作

登录HuaweiLiteOSgithub网站(/liteos/liteos),单击“tags”进入如图2-46所示页面,选择“LiteOSV200R001C50B038”进行下载(由于LiteOS在不断更新,本书以LiteOSV200R001C50B038”为例)。任务2-3LiteOS的移植图2-46下载LiteOS源代码压缩文件

解压LiteOSV200R001C50B038.zip压缩包,查看解压后的文件夹,如图2-47所示。任务2-3LiteOS的移植图2-47解压后的文件夹

使用STM32CubeMX软件构建裸机工程(裸机工程即指STM32CubeMX配置生成的初始化代码,详见任务2-2,裸机工程界面如图2-44所示)。2.拷贝LiteOS内核源码及测试相关代码从LiteOS中拷贝如图2-48所示的四个文件夹。图2-48从LiteOS中拷贝四个文件夹

在裸机工程中创建Middlewares/LiteOS文件夹,把如上四个文件拷贝进去,如图2-49所示。在源码文件夹路径“targets\STM32F103VET6_NB_GCC”下拷贝OS_CONFIG文件夹,如图2-50所示。任务2-3LiteOS的移植图2-49拷贝到Middlewares/LiteOS文件夹图2-50拷贝OS_CONFIG文件夹

复制到裸机工程中,如图2-51所示。任务2-3LiteOS的移植图2-51拷贝到裸机工程中

3.添加源文件目录

在裸机工程项目中,单击“Project”->“Manage”->“ProjectItems...”,进入“ManageProjectItems”界面,如图2-52所示。

点击新建按钮

,创建“Middlewares/LiteOS/arch”文件夹,选择”AddFiles”添加文件,如图2-53所示。任务2-3LiteOS的移植图2-52“ManageProjectItems”界面图2-53创建“Middlewares/LiteOS/arch”

按图2-54添加需要的文件,文件路径为:“裸机工程名\Middlewares\LiteOS\arch\arm\arm-m\src”。不关闭此窗口,返回到目录”arch->arm->arm-m->cortex-m4->keil”,继续添加如图2-55所示文件。任务2-3LiteOS的移植图2-54添加los_hw.c、los_hw_tick.c和los_hwi.c文件图2-55添加los_dispatch_keil.S文件

继续创建“Middlewares/LiteOS/kernel”文件夹,如图2-56所示。

在Middlewares\LiteOS\kernel文件夹下添加Los_init.c文件以及base文件夹下core、ipc、misc、om目录下的全部.c文件,如图2-57所示。任务2-3LiteOS的移植图2-57添加Los_init.c等文件图2-56创建“Middlewares/LiteOS/kernel”

进入”kernel->base->mem”文件夹,添加bestfit_little、common、membox文件夹下的所有文件,如图2-58所示。

添加目录“kernel->extended->tickless”下所有文件,如图2-59所示。任务2-3LiteOS的移植图2-58添加bestfit_little等目录下的文件图2-59添加“kernel->extended->tickless”下所有文件

添加完成后的效果如图2-60所示。

创建“Middlewares/LiteOS/cmsis”文件夹。添加目录”Middleware->LiteOS->osdepends->liteos->cmsis”下的cmsis_liteos.c文件,如图2-61所示。任务2-3LiteOS的移植图2-60添加完成后的效果图2-61添加cmsis_liteos.c文件

添加OS_CONFIG头文件。创建“OS_CONFIG”文件夹,添加工程目录下OS_CONFIG文件夹的.h文件。添加后结果如图2-62所示。任务2-3LiteOS的移植图2-62添加OS_CONFIG文件夹的.h文件

4.头文件设置

单击工程界面“OptionsforTarget”按钮,在弹出的窗口中选择“C/C++”,再选择“IncludePaths”添加头文件路径,如图2-63所示。任务2-3LiteOS的移植图2-63添加头文件

添加如图2-64所示文件夹路径。任务2-3LiteOS的移植图2-64添加头文件的路径5.修改target_config.h

修改OS_CONFIG目录下的target_config.h文件,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论