RTX操作系统在STM32RBT6芯片中的移植与应用

来源 :课程教育研究·中 | 被引量 : 0次 | 上传用户:sqno1
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】本文介绍了MDK软件自带的基于时间轮转的RTX操作系统在STM32F103RB芯片上的移植方法,并详细描述了具体的移植过程和使用方法。并用一个LED轮换闪烁的实例演示了其具体应用方法并对其操作系统函数库做了简单介绍。最后通过与其他同类操作系统的横向比较,分析了其优缺点及应用范围。
  【关键词】RT?鄄RTX STM32 嵌入式操作系统 MDK Cotex?鄄M3 ARM
  【中图分类号】G64 【文献标识码】A 【文章编号】2095-3089(2015)12-0248-02
  RL?鄄RTX操作系统是MDK官方内置的一个实时操作系统。其内核是一个基于时间片轮转的实时操作系统,可以同时运行多函数或是任务。在嵌入式系统中嵌入实时操作系统是现在硬件开发的趋势,对比前后台循环方案与状态机方案其优点在于既增加了程序的可读性,同时又提高了系统运行的效率。
  1.RL-RTX操作系统介绍
  RL?鄄RTX操作系统可以自由地调度系统资源,比如CPU和内存,并且提供一种任务间通信机制。 RTX内核是一个强大的实时操作系统,可以很容易地使用和运行基于 ARM7?鄄TDMI、ARM9 或是 Cortex?鄄M3 CPU 内核的微控制器。
  RTX程序使用标准的C结构编写,运用RealViewR 编译器进行编译。在RTX.H头文件定义了RTX函数以及宏,可以让轻松地声明任务并达到实时操作系统所有特性。
  RL?鄄RTX操作系统内核大致可分为任务管理、任务调度器、阻塞管理,任务间通讯管理,定时器管理,设备底层驱动6个部分。
  2.STM32F103RBT6芯片介绍
  STM32系列处理器是为高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex?鄄M3内核芯片。本文应用的STM32F103RBT6芯片为64脚LQFP64封装。其工作频率可高达72MHZ,具有128KB flash, 20KB SRAM 1个CAN总线,1个USB2.0接口,2个SPI,2个I2C接口,资源较为丰富。
  3.RL?鄄RTX操作系统在STM32F103RBT6芯片上的移植
  本次操作系统移植是基于RL?鄄RTX 4.05版进行的。移植操作系统使用软件编译环境为Keil MDK 4.12版。下面对移植过程做详细介绍。
  1)安装MDK软件
  从官网下载Keil MDK 4.12版并注册安装。
  2)下载STM32固件库工程
  在ST官网下载STM32F10x_StdPeriph_Lib_V3.5.0,使用其中工程作为工程模版。
  3)建立GPIO工程
  依据ST官方库的例子,建立一个GPIO/IOToggle 工程。修改IO端口配置与实际使用电路板的IO端口相对应。编译并运行成功。
  4)移植RTX_Kernel
  RTX_Kernel操作系统移植步骤如下:
  3.1在main.c最前头文件引用列中加入“#include”,调用rl.h头文件。此头文件包含RTX操作系统中运行代码。
  3.2项目选项里,在Target下,Operating system选择 RTX Kernel。
  3.3复制C:\Keil\ARM\Boards\ST\STM32F10X_EVAL\
  RTX_Blinky\RTX_Config.c文件到项目目录下,并将RTX_Config.c添加到项目中。(MDK安装在默认目录C盘)
  3.4在RTX_Config.c根据硬件条件配置操作系统参数
  操作系统参数有很多,在C文件中寻找修改较为复杂,MDK4.12中可以通过向导来配置操作系统的各个参数,其步骤为:①打开RTX_Config.c文件,文件编辑框下方有一个Configuration Wizard选项,点击它可以看到任务参数选项。如图1所示。
  图 1 任务参数配置向导
  ①Number of concurrent running tasks 设置运行任务数
  此选项范围为0~250个任务,默认为6个运行任务。该数值定义了可同时运行的最大任务数量,若设置任务超过此数量,则最后一个创建的任务不会运行。
  ②Number of tasks with user?鄄provided stack 用户定义堆栈的任务数量
  此选项范围为0~250个任务,默认为0。此选项可定义一些需要开启更大堆栈区域的任务。
  ③Task stack size 任务堆栈区域大小设置
  范围为200~4096字节,默认堆栈大小为200字节。此选项为每个任务分配独立的堆栈区域空间,RTX_Kernel为私有堆栈任务系统,每个任务有自己私有堆栈区域,并非像RTX51一样为公有堆栈任务系统。若在系统运行中出现堆栈区域溢出的情况则需要增大此参数。
  ④Check for the stack overflow 检查堆栈溢出
  注:开启堆栈溢出检查的话,会使系统性能降低,建议调试时开启,程序调试完毕后关闭此选项。
  ⑤Run in privileged mode运行在特权模式
  ⑥Timer clock value设置当前MCU运行频率
  范围为1?鄄1000000000HZ,默认为6MHz,由于在本系统中使用时钟频率为48MHz,所以设置其为48000000。
  ⑦Timer tick value为RTX时间片时间
  范围为1?鄄1000000us,默认为10000us,即10ms一个时间片,可以修改此参数来改变任务轮转的速度。   ⑧Round?鄄Robin Task switching 任务时间片耗尽自动切换开关
  默认为开启。开启RTX操作系统在某一任务时间片耗尽后会自动保存本任务堆栈并切换到其他任务中去。可点开此选项前的“+”号,在弹出的Round?鄄Robin Timeout 为任务设置自动切换时间,默认为5个时间片即50ms。
  ⑨Number of user timers 用户定时器使用数
  范围为0~250个,定义可使用的系统定时器数量。
  3.5由于RTX操作系统用到了本芯片中的一些中断向量,所以要移植RTX操作系统必须在中断程序stm32f10x_it.c中屏蔽以下三个中断函数。其分别是:PendSV_Handler(void),SysTick_Handler(void),SVC_Handler(void)。
  至此,RTX系统移植完毕,接下去就能编写操作系统代码了。
  4.操作系统应用实例
  图 2 系统运行流程与操作系统运行流程对比
  操作系统的使用能提高程序编写的效率,特别是对一些时效管理与系统延时处理方面。使用前后台循环编程方式与操作系统运行流程对比如图 4所示。
  本次系统移植目标是让两个LED以不同频率交替闪烁,要完成此目标并让任务正常运行必须在main.c中添加初始化操作系统的代码:
  1)先在main( )函数中添加系统初始化函数os_sys_init (init_task);。用来开启系统任务并结束main函数的运行。此时程序转入init_task任务中。
  2)建立初始化任务函数init_task(void)。在程序中编写初始化函数init_task( ),区别于普通的子程序,任务前需要添加前缀”__task”。在初始化任务中使用os_tsk_create( )命令创建task1与task2两个任务,并定义两个OS_TID型任务变量id1,id2记录开启任务的返回值。最后使用os_tsk_delete_self ( );命令删除init_task任务本身。此时task1,与task2任务被开启。操作系统会根据任务轮询机制依次进入task1任务和task2任务。
  3)建立两个任务函数task1,与task2。
  编译上述代码,将其下载到目标板中,如果LED1与LED2两个发光二极管能以不同的频率闪烁发光说明移植成功了。
  RTX 操作系统的API比较简单,它是基于时间片来进行任务间轮转调度的,即相同任务优先级每个任务分得一定的时间片运行时间,运行完时间片后保存现场进行任务切换。而其他实时操作系统中uC/OS?鄄II是不支持时间片轮转的,从uC/OS-III开始才支持时间片轮转调度。
  5.RTX操作系统函数库简介
  图 4 RTX 任务系统组成图
  RTX任务系统组成图如图 4所示。为了深入了解RTX操作系统,对下面对每个模块及其系统函数做简单介绍。
  (1)任务创建与调度:
  创建任务:os_tsk_create ( );创建指定任务。
  删除任务:os_tsk_delete_self ( );删除任务本身。
  延时: os_dly_wait( ),延时指定数目的系统节拍事件。
  任务切换:os_tsk_pass( ),跳出当前正在运行的任务。
  (2)事件管理:os_evt_wait_and( ), os_evt_wait_or( ), os_evt_set(),isr_evt_set( )
  让一个进程等待一个事件,这个事件可以由其它进程和中断触发。
  (3)邮箱管理:os_mbx_declare( ), os_mbx_init( ),os_mbx_wait( ),os_mbx_send( ), isr_mbx_send( ),建立一个邮箱,里面可以存放一定数目的消息(比如20条)。进程可以等待邮箱队列,如果邮箱里有消息,则取出,进程继续执行;如果邮箱为空,则继续等待。
  (3)互斥管理:os_mut_init ( ),os_mut_wait( ) //上锁,os_mut_release( )//解锁
  设置进程独占资源,加锁,别的进程需要等待本进程,本进程不会被时间轮转切换。
  (4)信号量管理:os_sem_init( ), os_sem_send( ), os_sem_wait( ), isr_sem_send( )
  信号量与事件类似,进程等待的信号量大于0时,进程继续执行,信号量-1。发送信号量时,信号量+1.
  6.RTX操作系统与其他几种操作系统需求对比
  FLASH和RAM的需求对比
  RTX是一款优秀的基于时间轮转片的微内核操作系统,适合FLASH和ROM资源不是很足的芯片,特别适合是对成本有要求,无扩展ROM和RAM芯片的单片系统中使用。
  RTX的使用要比uC/OS容易,如果在Cortex?鄄M3芯片中使用实时操作系统的话,其优势较为明显。
  参考文献:
  [1]《STM32自学笔记》蒙博宇编著, 北京市:北京航空航天大学出版社, 2012.
  [2]《STM32嵌入式微控制器快速上手》陈志旺等编著, 北京市:电子工业出版社, 2012.
其他文献
【摘要】为了使民族地区职业教师能适应社会发展的需要,所以对其自身素质的培养又提出了更高的要求,从理想、信念到对教育事业的奉献和对学生的关爱程度等,都充分体现了在新的经济浪潮中要想立于不败之地,必须要从自我做起,努力提高自身的素质。  【关键词】民族地区职业教师自身素质提高培养重视  【中图分类号】G451.2【文献标识码】A 【文章编号】2095-3089(2014)2-0214-02  随着科学
【摘要】与学生谈心沟通是班主任工作中的重要内容,从某种意义上说,没有谈心,就谈不上班主任工作,也不是一个合格的班主任。在与学生的沟通中,班主任了解了学生个人的思想;在谈话中,班主任了解了学生的个人兴趣和爱好;在家常式的谈话中,班主任了解了整个班级取得的成绩,存在的问题。  【关键词】班主任 谈心 艺术  【中图分类号】G635【文献标识码】A 【文章编号】2095-3089(2014)2-0218
【摘要】"爱"是教育的核心。教育家陶行知先生说:"真的教育是心心相映的活动,唯独从心里发出来的,才能打到心的深处。"作为教师,我认为没有爱就没有成功的教育。  【关键词】爱教育   【中图分类号】G620【文献标识码】B 【文章编号】2095-3089(2014)2-0217-01  有人把教师比作红烛,燃烧着自己,照亮别人。师爱更多地温润在平凡的日子里,"随风潜入夜,润物细无声",却铸就了永恒的
期刊
【摘要】汽车整车电路检测综合实验项目繁多,不利于开展教学方法的创新与实践,同时对教师教学与学生学习造成很大的困扰。本文结合卓越工程师教育培养计划的精神,探索了企业与高校深度合作,创新地在一门综合实验课程中,开设必学综合实验模块与选学实验模块,兼顾了理论与实践的协调开展,强化了培养学生的工程能力与创新能力。  【关键词】 综合实验 汽车电路检测 构建 探索  【基金项目】上海市高校本科重点教学改革项
在国家大力号召“大众创业,万众创新”的大背景下,给了大学生创业更多的机会和挑战.高职涉农专业女生由于受到专业、学历、性别等的限制,其创业中将面临更多的考验.从涉农专
一是来自于国民经济运行的稳定性。从我国经济运行情况来看,特别是2012年至2014年,经济波动幅度只有0.3个百分点,呈现出超强的稳定性,未来中国经济仍将呈现稳定增长趋势。二
1 消毒供应的职业危害因素rn在医院有这么一个地方,它是污染医疗器械和用品的集中处理场所,也是非常容易发生交叉感染危险的科室,它就是医院的消毒供应室.在消毒供应室内的工
期刊
班主任不合理批评不利于学生的心理健康成长,而且也对教师的教学管理工作制造了难题和阻力。本文分析了班主任不合理批评产生的原因,及教师如何及时发现不合理批评产生的师生
【摘要】随着国家经济发展结构调整和经济全球化趋势,给高职院校的校企合作带来了新的机遇和挑战,企业科学、可持续发展对高职院校培养高质量可持续发展的高技能人才提出新的要求,为深化校企合作催生了内在动力,也为校企合作丰富内容,创新形式带来了机遇。  【关键词】高职院校 校企合作 实践探索  【中图分类号】G71【文献标识码】A 【文章编号】2095-3089(2014)02-0238-02  2010年
建构科学规范、行之有效的教学质量评价体系,有利于保障以工作过程为导向的行动教学法在物流核心课程的展开。本文通过设立调查问卷,采用信度分析证实问卷可靠性及稳定性,运