T-Kernel在Blackfin处理器上的移植分析
,中断处理属于任务无关态,其执行优先级高于任务态,在中断处理程序中发生的任务调度,需要延迟到中断结束才能进行切换。当任务无关态运行无嵌套,系统允许任务切换,schedtsk不等于ctxtsk三个条件满足时,中断结束后即转入任务切换。 (3)T-Kernel的系统时钟中断 T-Kernel的系统时钟中断使用Blackfin内核的core timer 6号中断。其前后处理步骤与(2)相同,为了保证系统稳定性和实时性,一般为系统时钟的中断程序分配单独的堆栈,使其在高速内部RAM中执行。 4.2 任务切换模块的移植 任务切换包括任务间上下文切换和中断到任务上下文切换,前者在临界区结束时触发软中断进入dispatch_entry()完成,后者则在中断后处理中调用tk_ret_int()开始执行。 图2 任务切换流程图 dispatch_entry()和tk_ret_int()的处理过程都是保存ctxtsk任务的上下文,替换ctxtsk为schedtsk,恢复其上下文,执行流程如图2所示。二者的不同在于dispatch_entry()软中断的优先级为14级,而tk_ret_int()在中断后处理中被调用,仍处于中断过程,其优先级由中断处理程序的优先级决定;这样可能出现tk_ret_int()嵌套dispatch_entry()的情况,所以在从tk_ret_int()切入新任务或低功耗状态之前需要判断是否需要清除IPEND寄存器中断执行的标志。当没有就绪任务时,schedtsk值为空,系统转入低功耗状态。 T-Kernel系统中的每个任务可以定义一个特定的任务异常处理程序,任务异常处理被触发后,优先于该任务得到执行。 4.3系统调用入口移植 T-Kernel对应用层调用系统服务和扩展服务进行了限制,只能调用相应的接口函数(以tk_***_***()命名的API),在接口函数中触发软中断进入Call_entry(),在Call_entry()函数中才能取得实际服务函数(以_tk_***_***()命名)的入口地址执行[3]。处理流程如图3所示。系统调用可能发生在中断过程中,所以Call_entry()软中断异常的优先级需要设为最高。Fncd是每个服务函数唯一的标识码,从中可以判断出该函数是系统服务还是子系统的扩展系统服务,后者需要通过svc_ientry()函数调用。 图3 T-Kernel系统调用处理流程 5 移植测试 移植测试工作主要分为稳定性测试和实时性测试两部分。测试的目的是保证移植工作的正确性。 通过新建15个不同优先级的任务进行休眠暂停请求异常处理和请求信号量等操作,同时定义计时器中断唤醒任务,可以测试系统的稳定性。移植系统的实时性可以通过任务的建立时间,结束时间,任务的切换时间,抢占时间,中断延迟时间,信号量混洗时间等指标来确定。 任务切换时间为系统在两个具有相同优先级独立任务之间切换所需的时间。抢占时间定义为系统控制从低优先级任务转移到高优先级任务所花费的时间。中断延迟时间指从中断响应到中断子程序语句得到执行的时间间隔。信号量混洗时间指一个信号被释放到等待该信号量的任务被激活的时间延迟[6]。部分的测试结果如表5.1所示。移植代码编译为速度优化100%,时间单位是Blackfin处理器cycles寄存器所记录的运行时钟周期。可以看到,系统运行在600MHz时的性能指标都在微秒级。 任务切换时间 抢占时间(中断触发) 中断延迟时间 信号量混洗时间 cycles 1716 1662 424 1584 运行时间(600MHz) 2.9us 2.7us 0.7 us 2.6us 表1 部分适时性测试时间结果 6 总结 本文针对Blackfin处理器(BF533)平台上移植T-Kernel的应用需求,分析和归纳了移植的主要过程,总结了中断管理、任务切换和系统调用接口三部分的移植方法,对系统的稳定性和实时性进行相应的测试以保证移植工作的正确性。移植过程揭示了T-Kernel内核任务调度的原理和技术细节,对于其它RTOS的开发有很大的借鉴意义。 文中所讨论的移植方法,没有包括对于MMU(Memory Management Unit)管理模块的移植,因为在绝大多数嵌入式实时性应用中,由于对速度和资源的限制,并不开启处理器的MMU功能,如果在数据和信息处理的应用中有需求,可以针对特定处理器的MMU模块进行相关代码的移植。 (特别感谢上海易律电子刘湘毅的技术支持) 参考文献 [1] T-Engine Forum T-Kernel Specification Version 1.00.00 2005 [2] ADI ADSP-BF533 Blackfin Processor Hardware Reference Revision 3.0 Feb 2004 [3] Mohit Sindhwani, Anatomy of a T-Engine System Call, page:www.onghu.com/te 2006 [4]T-Engine Forum T-Kernel Implementation guide to New Hardware Rev.1.00.01 2006.06.2 [5]黄天戍,李秀红 RTOS数据采集系统中实时处理与高速性的设计考虑[J] 微计算机信息 No.28 P.95-97 2005 [6] 李庆诚,顾健 嵌入式实
T-Kernel Blakfin T-Engine RTOS移植 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)