物联网任务2-3 LiteOS的移植_第1页
物联网任务2-3 LiteOS的移植_第2页
物联网任务2-3 LiteOS的移植_第3页
物联网任务2-3 LiteOS的移植_第4页
物联网任务2-3 LiteOS的移植_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

任务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文件,该文件主要用于配置MCU驱动头文件、RAM大小、内核功能等,需要根据自己的环境进行修改。1)根据使用的MCU,修改对应的头文件。

将#include"stm32f1xx.h"改为#include"stm32l4xx.h";2)根据使用的MCU芯片的最大时钟频率,修改OS_SYS_CLOCK。

将#defineOS_SYS_CLOCK(SystemCoreClock)改为#defineOS_SYS_CLOCK(80000000);3)根据使用的MCU芯片SRAM大小,修改BOARD_SRAM_SIZE_KB。

将#defineBOARD_SRAM_SIZE_KB40改为#defineBOARD_SRAM_SIZE_KB64。任务2-3LiteOS的移植6.移除Systick和pendsv中断

打开stm32l4xx_it.c,找到SysTick_Handler和PendSV_Handler两个函数,将这两个中断处理函数屏蔽掉,如图2-65所示。否则会出现编译错误。

说明:LiteOS内核使用到了systick和pendsv这两个中断,并在内核代码中有对应实现。任务2-3LiteOS的移植图2-65屏蔽SysTick_Handler和PendSV_Handler两个函数7.编译工程

编译移植后的工程,结果如图2-66所示表明编译成功。任务2-3LiteOS的移植

图2-66编译成功

8.程序下载

使用ST-LinkV2连接开发板主板与PC机,安装ST-Link驱动程序,安装完成后可在设备管理器中看到串口已经接入,如图2-67所示。

单击工程界面“OptionsforTarget”按钮,在弹出的窗口中选择“Debug”,再点击“Settings”,如图2-68所示时,说明ST-Link配置正常。任务2-3LiteOS的移植图2-68查看ST-Link配置是否正常图2-67查看ST-Link驱动是否安装成功

下载程序到开发板。在工程界面点击“Download”按钮

进行下载,如图2-69所示表示下载成功。任务2-3LiteOS的移植图2-69下载程序到开发板

温馨提示

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

评论

0/150

提交评论