基于ARM7内核的UCOS-II移植研究

来源 :企业技术开发·中旬刊 | 被引量 : 0次 | 上传用户:mibaoaiai
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:嵌入式操作系统的移植是设计开发的重要一环,文章从全局和细节上分别研究了UCOS-II移植过程中的技术要点,并着重从移植后代码的可靠性、健壮性和通用性等方面进行了研究。
  关键词:嵌入式;操作系统移植;UCOS
  中图分类号:TP316文献标识码:A文章编号:1006-8937(2012)05-0068-01
  由于基于ARM7内核的各种芯片之间有着很大的差异,这些差异主要表现在存储系统不同、片内外设不同、中断源不同等。这就造成了嵌入式操作系统移植的不可避免性,而嵌入式操作系统移植效果的优劣直接影响着目标系统的整体质量。文中采用LPC2000系列ARM7微控制器以及ADS编译器对UCOS-II的移植过程进行了测试研究。
  1UC/OS-II的移植步骤
  UC/OS-II是一个占先式的实时多任务内核,由ANSI C语言编写,包含小部分汇编代码供不同架构的处理器使用,能够管理64个任务,主要系统功能包括:内存块管理、任务管理、消息队列管理、信号量、互斥信号量、事件标志组、消息邮箱等。从移植UCOS-II的过程来看,逻辑上可分作三大组成部分:与处理器无关的内核代码、与处理器有关的核心代码、与软硬件环境设置有关的配置代码。其中与处理器无关的内核代码主要包括OS_CORE.C、OS_FLAG.C、OS_MBOX.C、OS_MEM.C、OS_MUTEX.C、OS_Q.C、OS_SEM.C、OS_TASK.C、OS_TIME.C、UCOS_II.C、UCOS_II.H,它们主要实现任务管理、信号量、内存管理、消息队列、系统调度等功能;与处理器有关的核心代码主要包括OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C,它们主要与操作系统的移植相关;与软硬件环境设置有关的配置代码主要包括OS_CFG.H、INCLUDES.H,它们主要用于剪裁和设置操作系统。以上文件名为UCOS-II的默认设置,无须严格按照上述名称命名文件。
  由UCOS-II的逻辑结构可以看出,其移植工作主要集中在与处理器有关的核心代码部分。实际测试中遵循了如下步骤。第一,对OS_CPU.H进行移植,这部分工作主要包括:首先定义与处理器有关的数据类型,如BOOLEAN、INT8U、INT8S等;其次进行与处理器有关的宏定义主要包括OS_ENTER_CRITICAL以及OS_EXIT_CRITICAL;再次编写软中断函数主要包括OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。第二,对OS_CPU_A.ASM进行移植,依据ADS编译器扩展名规则将文件名改为OS_CPU_A.S,主要工作是编写4个汇编语言函数,名称为OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OSTickISR()。USOS-II启动时调用OSStart(),而OSStart()又调用OSStartHighRdy()运行优先级最高的任务。第三,移植OS_CPU.H。在OS_CPU_C.C文件中,需要编写以下10个C函数,名称分别为OSTaskStkInit()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskIdleHook()、OSTaskStatHook()、OSTaskTickHook()、OSInitHookBegin()、OSInitHookEnd()、OSTCBInitHook()。任务堆栈初始化函数OSTaskStkInit的定义按照移植时规定的堆栈结构进行,其他九个函数按照设计要求编写,或者为空。
  2UCOS-II移植的技术要点
  2.1数据类型的处理
  在C语言中常用的int、short等数据类型与处理器类型密切相关,这就意味着采用上述类型定义后的程序本身具有不可移植性,为此在代码编写中需要采用移植性强的数据类型进行替换,因此这些数据类型定义也便成了代码移植工作的一部分,当然依编译器的选择不同也会略有差异,在ADS编译器中部分相关参考代码如下:
  typedef unsigned char BOOLEAN;
  typedef unsigned char INT8U;
  typedef signed char INT8S;
  typedef unsigned short INT16U;
  typedef signed short INT16S;
  typedef unsigned int INT32U;
  typedef signed int INT32S;
  2.2任务与函数调用的封装
  ARM7内核具有7中工作模式,带T后缀的具有两套指令集,在提升处理器功能和效率的同时也带来了复杂性。在移植过程中应设法编制接口函数将底层复杂性与操作系统层的管理和应用隔离开,为了达到这个目的可以采用软件终端SWI(software interruption),而且在ADS编译器中也提供了相应的支持,即__swi关键字。采用该关键字声明一个莫须有的函数,调用时则在该处插入SWI指令,且可以设定中断功能编号,以及完成参数传递等。比如:
  __swi(0x00) void OS_TASK_SW(void)/*任务切换函数*/
  __swi(0x00) void _ OSStartHighRdy(void) /*运行顶级优先任务*/
  __swi(0x00) void _ OS_ENTER_CRITICAL (void) /*关中*/
  
  __swi(0x00)void_OS_EXIT_CRITICAL(void)/*开中*/
  2.3中断服务的切换
  如果在OS_CPU.H做过相应的声明,采用OS_TASK_SW函数切换任务,则函数OSCtxSw是可以省略的,所以通常情况下OSCtxSw并不是移植初期需要关注的要点。前文提到基于ARM7的不同芯片之间的中断系统存在差异,这就要求移植后的操作系统要保证目标机的中断系统稳定运行保障系统的可靠性。而在中断服务程序中切换任务时需要调用函数OSIntCtxSw,因此OS_CPU_A.S的移植要点在与保证OSIntCtxSw准确性,其代码主要任务包括保护现场、将当前任务堆栈指针保存到对应的任务控制块TCB(task control block)、获取新任务的堆栈指针等。OS_CPU_A.S中的__ OSStartHighRdy()与之存在调用关系,OSStartHighRdy()须在OS_CPU_C.C中定义。部分相关代码如下:
  OSIntCtxSw_OSHR
  获取新任务堆栈指针
  LDR R4,[R6]
  ADD SP,R4,#68;
  LDR LR,[SP, #-8]
  MSR CPSR_c,#(NoInt|SVC32Mode);切换至管理模式
  MOV SP,R4;设置堆栈指针
  LDMFD SP!,{R4, R5};CPSR,关中次数
   恢复新任务的关中计数器
  LDR R3,=IECounter;为关中计数器分配寄存器
  STR R4,[R3]
  MSR SPSR_cxsf,R5;恢复CPSR
  LDMFD SP!,{R0-R12, LR, PC }^;运行新任务
  关中计数器为全局变量,不同的任务由各自的关中计数器,在任务切换时分别堆栈互不影响,从而隔离了任务切换时可能造成的相互影响。
  3结语
  嵌入式操作系统的移植往往是影响全局且复杂性较强的工作。这类系统的移植也必然要建立在移植者对整体软硬件系统有深入准确的掌握基础之上。文中针对UCOS-II结合ARM7内核处理器以及ADS编译器测试并总结了移植的步骤和部分技术要点,此类工作需要丰富的实践和理论研究才能日臻完善。文中所论有很多不足之处和不全面的地方,需要在日后的实践中不断更正总结。
  参考文献:
  [1] 武国平,史仪凯.ARM7处理器Bootloader的设计与实现[J].
   微处理机,2010,(5).
  [2] 周立功.ARM嵌入式系统基础教程[M].北京:北京航空航
   天大学出版社,2006.
  [3] 宁杰城,王春,周新志.ARM7内核上的uC/OS—II嵌入式系
   统移植[J].中国测试技术,2005,(2).
其他文献
摘要:咨詢行业的发展,带动很多中小民营咨询公司的规模扩张,但较高的人员流失率成为这些中小民营咨询公司的发展瓶颈。文章以案例的形式,分析了中小咨询公司高人员流失率的原因,及一些改进措施。  关键词:人员流失;薪酬;职业生涯通道  中图分类号:F272.92 文献标识码:A文章编号:1006-8937(2012)08-0068-02
期刊
摘要:从目前的情况上看,城市土地日趋紧张,城市建设规划只能朝高层、超高层发展,这也就意味着地下车库、地下用房等不斷增多,而由此带来的地下室渗漏现象也相当普遍。文章结合近几年的施工实践中,浅析地下防水堵漏的施工技术。  关键词:地下工程;防水堵漏;抹面施工技术  中图分类号:TU761.11文献标识码:A文章编号:1006-8937(2012)08-0134-02
期刊
摘要:供电设备选择是变电所电气设计的主要内容之一,正确选择电气设备是保证电气主接线和配电装置达到安全、经济运行的重要条件。在进行电气设备选择时,应根据工程实际情况,在保证安全、可靠的前提下,积极而稳妥地采用新技术,并注意节省投資、选择合适的电气设备,文章从高压开关柜的选择、高压断路器的选择、高压隔离开关的选择等方面进行阐述,为相关工作者提供参考。  关键词:35 kV;高压电器;继电保护设计  中
期刊
摘 要:随着旅游业的快速发展,导游人员的服务质量逐渐成为旅游业讨论的焦点。由于我国导游人员素质差别比较大,导致导游服务质量良莠不齐,而导游服务质量直接关系到旅游业的健康稳定的发展。导游人员是旅游业的灵魂,在旅游接待服务中,导游服务贯穿旅游活动的始终,其地位举足轻重。但是,目前导游服务质量却不容乐观。  关键词:导游服务质量;旅游市场;提升策略  中图分类号:F592.3 文献标识码:A
期刊
摘 要:企业在发展中会遭遇各种风险,其中管理者往往会忽视组织惰性风险。文章从企业文化这个方面分析一些落后企业产生组织惰性的原因以及对企业发展的不利影响,通过组织惯性和组织惰性的比较研究,提出克服組织惰性风险的途径。  关键词:组织惯性;组织惰性;组织情性克服  中图分类号:F272 文献标识码:A 文章编号:1006-8937(2012)11-0005-02  1 组织惰性
期刊
摘 要:近年来,北部湾经济区在经济高速发展的同时,人地矛盾却日益紧张。转变农业发展方式,走一条以低能耗、低排放和低污染为特征的低碳农业发展之路迫在眉睫。文章运用能值分析理论和方法,并结合生态经济学的又一重要理论——生态足迹理论,以人地矛盾问题为研究的切入点,从中揭示北部湾经济区发展低碳农业的紧迫性,同时也为政府提供解决问题的新思路。  关键词:人地矛盾;生态足迹;能值分析;北部湾经济区  中图分
期刊
摘 要:如何认识和防范中央企业经营者的职业道德风险一直是深化国有企业改革中的一个重大难题,科学地解决这一问题有重大理论和现实意义。文章运用委托——代理理论的基本框架,分析了央企经营者职业道德风险的成因,并在此基础上提出了解决这些矛盾的对策,以期为国有资产管理部门防范中央企业经营者的职业道德风险提供理论参考。  关键词:中央企业经营者;职业道德风险;成因;委托——代理  中图分类号:F270 文献标
期刊
计算机和互联网的普及使得人机交互成为日常生活的重要组成部分。随着计算机的处理能力越来越强,人们开始探索符合人类交流习惯的自然人机交互技术。基于视觉的手势识别符合人的自然交流习惯,并且可以进行远距离、非接触的交互,成为自然人机交互研究中的热门方向。
   论文首先简单介绍了手势识别技术的研究背景和研究意义,归纳总结了基于视觉的手势识别技术的研究现状。然后提出一种基于多信息融合的手势检测定位方法,采用自适应更新的肤色建模方法进行肤色检测,利用Running Average方法不断更新背景,采用背景减除
互联网中含有大量的有用信息,且其信息量每天都在以很高的速度增长着。互联网为人们提供了一个极具价值的信息源。但是由于互联网信息的海量性、异构性、易变性、非语义性等特点,人们要快速准确地在信息海量中寻找到所需的信息并不容易,因此人们迫切需要一种自动化的工具来帮助我们有效的获取互联网上信息。
  因此网站的自动分类有着广阔的应用前景,然而目前国内外对网站分类的研究还比较少。有很多方法的都是将网页表示成普通的文本,然后利用文本分类的方法来对网站进行分类。但是,不同于普通的文本,网站是一个由大量网页通过超级链
摘要:现场总线技术,以其智能化和先进性,成为自动化控制系统的发展主流。文章重点讨论了现场总线在宁夏鲁能鸳鸯湖电厂的具体应用原则,并以ABB公司的DCS系统为例,介绍了现场总线在火电厂600MW空冷超临界机组的具体应用。  关键词:现场总线;宁夏鲁能鸳鸯湖电厂;控制系统  中图分类号:TM621.2文献标识码:A文章编号:1006-8937(2012)05-0034-02  现场总线技术,即采用总线
期刊