Nucleus PLUS操作系统在TMS320C81 68上的移植及TD-LTE中的应用*
2016-03-24陈发堂主父文刚童庆
[陈发堂 主父文刚 童庆]
Nucleus PLUS操作系统在TMS320C81 68上的移植及TD-LTE中的应用*
[陈发堂 主父文刚 童庆]
摘要
针对Nucleus PLUS 操作系统在ARM Cortex-A8架构双核处理器上的移植及在TD-LTE中的应用问题,以TMS320C8168为例,从堆栈分配、中断设置、任务调度等方面详细介绍了Nucleus PLUS操作系统在TMS320C8168以及TD-LTE无线综合测试仪上的移植,并根据无线综合测试仪的设计要求,详细介绍了Nucleus PLUS系统板级初始化、功能组件初始化、循环调度等在TD-LTE上的应用。此移植具有较强的独立性和稳定性,在CCS5上编译调试后通过了联机验证,优化了系统资源利用率,满足TD-LTE无线终端中对原语跟踪实时性与数据完整性的要求。
关键词:Nucleus PLUS 操作系统 移植 TMS320C8168 TD-LTE
陈发堂
重庆邮电大学重庆市移动通信技术重点实验室。1999年毕业于北京邮电大学应用数学专业,获硕士学位,研究员;主要从事TD-SCDMA移动通信系统开发及TDLTE系统开发。
主父文刚
重庆邮电大学重庆市移动通信技术重点实验室。现为重庆邮电大学电子与通信工程在读硕士研究生,主要从事移动通信系统及嵌入式系统开发的研究。
童庆
重庆邮电大学重庆市移动通信技术重点实验室。在读硕士研究生,研究方向:移动通信、嵌入式系统。
1 引言
Nucleus PLUS 操作系统是业界最受欢迎的、支持微处理器种类最多的实时多任务操作系统之一,其可拓展性与移植性很强,目前基于ARM9与ARM11(Advanced RISC Machines)的关于Nucleus PLUS 操作系统移植的文献有不少[1],但是基于ARM Cortex-A8处理器的移植较为缺乏,大都仅限于简单CPU的Nucleus PLUS 移植。本文在堆栈分配、中断设置、任务调度等方面详细介绍了Nucleus PLUS 操作系统在ARM Cortex-A8双核处理器TMS320C8168以及TD-LTE无线综合测试仪上的移植,并简单介绍了Nucleus PLUS 操作系统在TD-LTE无线综合测试仪中的应用。
2 Nucleus PLUS 基本架构
Nucleus PLUS 基本架构包括3部分,分别为板级初始化、功能组件及应用初始化[2]。首先板级初始化为整个系统硬件平台进行必要的初始化,如堆栈分配、时钟初始化等,在此基础上终端验证系统才能针对Nucleus PLUS进行组件初始化,组件初始化是应用初始化的准备和前提,当在应用初始化模块中完成内存配置、协议栈各层任务与系统高级中断建立后系统便进入到线程调度模块,其中在内存、任务及高级中断的初始化中又要调用相应功能组件及板级初始化接口。Nucleus PLUS 基本架构如图1所示。
图1 Nucleus PLUS 基本架构图
由于板级初始化及任务调度部分由汇编语言开发且与底层平台息息相关,所以这两部分是Nucleus PLUS 在TMS320C8168平台上移植的主要工作之所在。
3 Nucleus PLUS 移植整体流程
Nucleus PLUS 内核在TMS320C8168上的移植主要是根据ARM Cortex-A8内核特点[3,4]和Nucleus PLUS 基本构成进行的。移植的整体流程如图2所示。
图2 Nucleus PLUS 移植整体流程
3.1 板级初始化移植
无论是架构组成还是功能实现,板级初始化都是Nucleus PLUS 移植的第一步,该过程各功能与硬件平台启动代码所完成功能类似,主要完成与底层硬件相关的初始化配置。Nucleus PLUS板级初始化是通过INT_ Initialize函数来实现的,这是内核最先被执行的函数。INT_Initialize函数负责完成TMS320C8168对应硬件的初始化,包括寄存器、系统堆栈、中断向量表、全局的C数据元素和一些Nucleus PLUS变量等。INT_Initialize函数在int.s文件中定义。
板级初始化完成后,系统堆栈分配如图所示。堆栈加载起始地址采用标示符“|Image$$ZI$$Limit|”实现,动态识别文件存储区域结束地址,避免系统运行时破坏代码区;然后需要设置高级中断堆栈区域,来支持定时器初始化;最后传递堆栈分配结束地址到应用初始化模块,方便动态分配内存池[5,6];
图 3堆栈分配示意图及堆栈结构图
3.2 功能组件模块初始化移植
Nucleus PLUS提供的各功能组件包括通用服务组件、初始化组件、任务组件、内存组件、进程通信组件、中断处理组件、历史组件、错误处理组件、输入/输出组件、许可证组件和版本控制组件等,这些组件在源代码方面主要由几个独立文件构成,如表1所示。
在执行完板级初始化函数之后,系统会自动进入功能组件模块初始化,开始执行INC_Initialize函数。这里需要注意的是,控制权将不会再回到INT_Initialize函数。INC_Initialize函数完成Nucleus PLUS各个功能组件的初始化工作。INC_Initialize函数在初始化过程中给这些模块设计到的全局变量赋空值。
表1 Nucleus PLUS 组件构成及意义
3.3 应用程序初始化
在Nucleus PLUS所有组件都初始化完成后,INC_ Initialize调用一个名为Application_Initialize的函数。Application_Initialize函数是开发人员自定义函数,主要负责配置应用环境、事件集、内存池、邮箱、队列、管道、信号量等。其中,NU_Create_Memory_Pool函数用于创建系统内存池,分配任务堆栈,队列区域等;NU_Allocate_Memory函数用于创建任务。NU_Create_ Semaphore 函数用于创建同步信号量;
NU_Create_Event_Group 函数创建事件标志集。
Application_Initialize函数执行完毕之后,INC_ Initialize函数就会调用TCT_Schedule函数开始初始化任务调度表。
3.4 高级中断部分移植
高级中断相关部分的移植是Nucleus PLUS移植的另一个重要部分。当系统产生中断之后,处理器进入中断处理模式,在这种模式下,后来的中断会被屏蔽。在中断处理时间比较短的情况,对系统的响应速度不会造成太大的损害。如果中断处理程序需要运行很长时间,就会严重地影响系统的实时性能,更有甚者会影响系统的稳定运行。Nucleus PLUS引入了高级中断服务HISR来解决这个问题,将中断服务程序对应的高级中断激活,在高级终端处理程序中处理数据,这样就可以在不影响系统实时性的同时使系统可以及时的响应下一次的中断。
中断触发之后,Nucleus PLUS首先会保存ARM各个寄存器和处理器目前的状态堆栈,然后调用TCT_ Interrupt_Context_Save系统调用来保护上下文。在保护现场的同时,Nucleus PLUS会检查是否有嵌套中断,若存在,则不允许响应中断。为了防止发生用户数据和系统数据的越界异常,Nucleus PLUS还会对堆栈是否越界进行判断。为此,需要对Nucleus PLUS内核此部分内容进行优化,使系统在发生堆栈越界的时候进入死循环,以便可以快速地判断错误发生的地方。做好这些之后,Nucleus PLUS会进入到中断向量表,通过查询中断号来选择需要选择正确的服务程序。为了提高中断的响应速度,一般中断处理程序的代码量都很少,有些甚至是直接激活一个高级中断就完成了。
在HISR被激活后,中断处理函数调用TCT_ Interrupt_Context_Restore系统调用来实现中断的返回。TCT_Interrupt_Context_Restore系统调用首先会判断是否存在嵌套中断,如果存在,那么就通过出栈来恢复各个寄存器返回值和被中断的中断进程;如果不存在嵌套中断,那么就需要判断是否有线程被打断,如果也没有,那么TCT_Interrupt_Context_Restore系统调用就会通过任务调度模块重新判断是否有要执行的任务或者高级中断,并执行之。
图4 中断处理详细流程图
4 Nucleus PLUS在终端验证系统中的应用
TD-LTE终端验证系统以双核处理器TMS320C8168及外围设备为硬件平台,以移植后的Nucleus PLUS为软件平台,对TD-LTE高层功能的实现提供高效稳定的综合运行平台。
4.1 TD-LTE协议栈层间通信
该平台中,协议栈不同层所需完成的功能通过Nucleus PLUS任务组件来实现,而且协议栈各层以及与物理层之间通过Nucleus PLUS线程通信组件实现两两之间的数据交互,线程间通信如图5所示。
图5 任务间通信软硬件综合平台上的实现
协议栈各层诸如P-GW和S-GW、S-GW和ESM、ESM和EMM、EMM和RRC层、RRC层和PDCP层、PDCP层和RLC层、RLC层和MAC层等相邻层之间都有数据交互,这些数据交互通过Nucleus PLUS提供的消息队列机制实现。除此之外,P-GW和应用平台以及MAC和PHY物理层之间通过共享存储区完成消息的交互,如数据原语、控制原语及帧消息等。
TD-LTE射频测试终端验证系统协议栈以任务的形式完成对数据的处理,协议栈各层及物理层之间数据交互通过消息队列实现。
4.2 TD-LTE任务调度流程
Nucleus PLUS操作系统在任务调度时首先调度已激活的高优先级HISR或者任务,对处于同一优先级的HISR或者任务则按照创建顺序而调度[7]。由终端验证系统功能需求出发,最终确定的协议栈各层任务优先级配置为: PDCP层任务>RRC层任务>EMM层任务>ESM层任务>S-GW层任务。考虑到终端验证系统实时性需求,包括高级中断在内的各功能执行实体都允许被抢占。任务流程如图6所示。
图6 任务调度流程
从图6可以看出,当终端验证系统开机后,系统软硬件平台开始初始化然后进入任务调度阶段,根据优先级首先调度MAC层任务,在MAC层任务中从MAC队列读取消息,由于该队列为空,所以MAC层任务被挂起然后系统进入任务调度并再次扫描就绪任务优先级列表,扫描到次优先级的RLC任务后处理流程与MAC层类似,也是通过从RLC空队列读取数据挂起RLC任务,协议栈各层任务依次运行并逐层挂起,直到应用平台通过高级中断配送原语向协议栈队列发送数据后各任务才被重新激活。
5 结论
本文在堆栈分配、中断设置、任务调度等方面详细介绍了Nucleus PLUS操作系统在ARM Cortex-A8 架构双核处理器TMS320C8168以及TD-LTE无线综合测试仪上的移植,并简单介绍了Nucleus PLUS操作系统在TDLTE无线综合测试仪中的应用。在操作系统移植时,不仅需要实现硬件平台的初始化工作,还需考虑系统的整体性能与执行效率。移植后在CCS5上编译调试,并通过测试板验证和联机验证,运行结果和理论值一致。此移植具有较强的独立性和稳定性,优化了系统系统资源利用率,实现了任务中断与任务调度的高强度反复稳定运行,满足国家科技重大专项项目“TD-LTE无线终端综合测试仪表”调试中对原语跟踪实时性与数据完整性的要求并应用于其中。
参考文献
1邹洋; 李琳皓; 梁峰 .Nucleus操作系统在ARM11上的移植研究与实现 [J].电子设计应用2014,40:10-13
2道理.Nucleus体系结构分析及应用研究[D].中南大学,2007
3杜春雷.ARM体系结构与编程[M].清华大学出版社.2003,2
4Texas Instruments Inc. TMS320DM816x DaVinci Video Processors Technical Reference Manual [EB/OL].[2015-1-26]. http:// www.ti.com/lit/ug/sprugx 8b/sprugx8b.pdf
5Jaesoo Lee, Jiyong Park, Seongsoo Hong. Memory Footprint Reduction with Quasi-Static Shared Libraries in MMU-less Embedded Systems[C]. Real-Time and Embedded Technology and Applications, 2006. Proceedings of the 12th IEEE. 2006 , Page(s): 24 - 36
6陈安地;李小文;梁峰.Nucleus操作系统内存池模块移植的研究与应用[J].电子设计应用2014,40:10-13
7段亚林;谢永斌,基于Nucleus的通信终端中AT指令模块的设计与实现[J].计算机测量与控制. 2015 , 11:16-19
简讯
蓝汛ChinaCache宣布蓝汛欣润及河南中孚成立合资公司
蓝汛国际控股有限公司,一家中国领先的互联网内容传输服务整体解决方案提供商,公告其控股40%的蓝汛欣润科技(北京)有限公司和河南中孚实业有限公司已经签约合资成立河南中孚蓝汛科技有限公司。中孚实业是家在上交所上市的拥有煤炭、电力和铝精深加工完整产业链的企业。中孚实业占合资公司85%的股权;蓝汛欣润占15%。
合资企业的目的是充分利用河南省巩义市低成本的土地和电力资源来开发互联网数据中心,以满足当地持续增长的对互联网数据中心服务的需求。中孚实业将提供土地,电力和绝大部分资金,蓝汛欣润主要提供项目开发和数据中心的技术, 运维服务。中孚实业预期在2016年下半年通过发行普通股来给项目提供资金。
王松,蓝汛国际控股CEO和董事长,评论说 : “我们很高兴与中孚实业共同在河南省开发具有竞争力的大规模高效率的数据中心。我们的目标是建设中国第一家覆盖全国的数据中心网络,通过蓝汛在全国的互联网交换中心,实现和全国所有的ISP,内容提供商和宽带接入服务商互联,而计划在河南省建设的数据中心是该战略的一部分。我们相信,蓝汛多年的CDN行业经验和数据中心网络战略能使我们为用户提供杰出的产品和服务。此外,该项目将帮助传统行业消化过剩产能,帮助企业实现战略转型。最后,新的数据中心将充分利用冷 、 热 、 电资源,提高电厂能源利用率,在当地建设一个绿色环保项目示范中心。”
DOI:10.3969/j.issn.1006-6403.2016.02.009 10.3969/j.issn.1006-6403.2016.02.007
收稿日期:(2015-11-15)
基金项目:国家科技重大专项基金资助项目(2011ZX03001-003-01)