实时操作系统mbedOS启动流程剖析
2020-10-19刘长勇王宜怀蔡闯华蒋建武
刘长勇,王宜怀 ,蔡闯华,蒋建武
1.武夷学院 数学与计算机学院,福建 武夷山 354300
2.苏州大学 计算机科学与技术学院,江苏 苏州 215006
3.认知计算与智能信息处理福建省高校重点实验室,福建 武夷山 354300
1 引言
2014 年ARM 公司推出了mbedOS,它是一种专为物联网(IoT)中的“物体”设计的开源嵌入式实时操作系统(Real-Time Operating System,RTOS)[1-2],能提供精确的实时控制,以保证系统的实时性需求[3],具有线程管理与调度、内存管理、时间管理、队列管理等基本功能要素,在协议栈和IP 网络组件[4]、通信技术和安全访问服务机制[5]、物联网设备平台[6]等方面得到广泛应用。基于RTOS 的嵌入式开发,对应用系统的稳定性、实时性和启动时间等都有严格的要求,在启动过程中要完成栈空间、堆空间、线程栈大小、时间嘀嗒、线程调度机制等方面的设置[7],具有启动时间短且复杂性高的特点。因此,充分理解RTOS 的启动流程,有助于开发人员设计出响应速度快、稳定性强的嵌入式系统。目前,有关操作系统启动的研究集中在Android 操作系统[8]、MQX 操作 系 统[9]、μC/OS-III 操 作 系 统[10]、Linux 操 作 系 统[11]、MTX 操作系统[12]以及ARM 嵌入式系统的启动过程[13]等方面,但对mbedOS的启动剖析研究方面缺乏相关资料。为此,本文将利用苏州大学与ARM 公司联合出品的嵌入式开发集成开发环境AHL-GEC-IDE 和金葫芦AHL-A 系列Cortex-M0+内核的KL36 微控制器[14](即AHL-AN100VL 型号开发板),基于SD-mbedOS 工程框架对mbedOS的启动流程进行分析,剖析其从芯片上电启动,到main函数,最终进入mbedOS启动的全过程,结合关键代码、宏定义函数、流程图、SVC中断[15]等分析其实现的原理,可为mbedOS的应用研究和在不同微控制器上的移植提供基础,也可为其他RTOS的启动分析提供借鉴参考。……
