微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > T-Kernel在Blackfin处理器上的移植分析

T-Kernel在Blackfin处理器上的移植分析

时间:03-20 来源:互联网 点击:

1 概述

在嵌入式RTOS(Real Time Operating System)领域,日本T-Engine组织推出的T-Kernel以其开源免费,小体积强实时性内核,统一的接口规范等特点显出了优势;ADI. Blackfin系列处理器在嵌入式控制和数字信号处理领域应用非常广泛,同时结合了MCU(Micro Controller Unit)和DSP特点,非常适合于运行RTOS系统。

本文分析T-Kernel内核调度原理和Blackfin处理器内核结构,归纳了T-Kernel在Blackfin处理器BF533系统移植过程中的三个主要问题:中断管理,任务切换和系统调用入口三个模块的实现方法,并讨论了系统稳定性和实时性的测试以保证系统的稳定性和实时性。

2 T-Kernel概述

2.1 T-Kernel的系统结构

图1 T-Kernel的位置

T-Kernel的系统结构如图1所示,各功能模块是以子系统(subsystem)的形式存在的,如设备管理模块。

T-Kernel的内核是系统默认的子系统,它为应用层提供系统服务(SVC)接口,同时管理着其他子系统。子系统为应用层提供扩展服务(Extended SVC)调用接口。系统中各子系统运行在相互独立的地址空间中,保证了系统的模块化,易于扩充和裁减。

2.2 T-Kernel的系统状态和任务调度

T-Kernel规范[1]中对系统状态做了明确的划分和定义,移植相关的状态有:(1)任务态 (Task Portion),指系统运行在应用层最高优先级的就绪任务中;(2)任务无关态 (Task Independent Portion),指系统的中断和异常处理过程。任务无关态具有最高的执行优先权,可以中断其它状态的执行。

T-Kernel内核采用了基于优先级的可抢先调度策略,优先级相同的任务采用先进先出的时间片轮转调度,允许任务动态更改优先级。

T-Kernel的任务调度和切换是分离的过程。内核中维护着按照优先级排列的就绪任务TCB(Task Control Block)指针链表队列。全局指针ctxtsk指向当前运行任务的TCB。有更高优先级任务就绪时,全局指针schedtsk指向其TCB,此为任务调度过程;任务调度发生后,必须在条件满足时,系统触发软中断异常进行任务切换,将ctxtsk更新为schedtsk,程序转入新任务运行。

3 Blackfin处理器概述

Blakcfin处理器内核包含双算术处理单元的DSP引擎,执行RISK指令集,结合了优异的数字信号处理功能和完善的控制功能。.

Blackfin内核相关的寄存器除了堆栈和返回地址寄存器:SP(Stack Pointer),FP(Frame Pointer),RETS(Subroutine Return Address Register),RETI(Interrupt Return Address Register),通用数据寄存器R0~R7,通用地址寄存器P0~P7,还包含数字信号处理相关寄存器 L0~L3,LB0~LB1,LC0~LC1,LT0~LT1,ASTAT,A0~A1,I0~I3, B0~B3,M0~M3. 在任务切换和中断前后处理中,需要进行寄存器保存恢复及相应的设置[2]。

Blackfin处理器内核支持15个优先级的中断。ILAT寄存器显示当前触发的中断;IMASK寄存器控制各优先级中断的使能和禁止;IPEND寄存器显示当前执行的中断,其第4位IPEND[4]是全局中断的使能和禁止位。T-Kernel运行在第15级(最低)中断处理程序中,这样系统运行于Supervisor Mode,可以获得对处理器操作的最大权限[2]。

T-Kernel系统运行在ADSP-BF533 EZ-KIT LITE开发板,开发环境是ADI VisualDSP++4.5 Environment.

4 T-Kernel在BF533上的移植

4.1 系统中断管理

T-Kernel对处理器中断资源进行动态管理,在运行时任务可以动态更改中断向量表、注册和取消中断,通过系统服务tk_def_int(Define Interrupt Handler) 来实现。

在中断管理模块的移植中,需要考虑以下三点:

(1)保证中断状态寄存器IMASK的全局性

在进行上下文保存恢复和临界区管理时,必须维持IMASK寄存器为全局变量。如果每个任务都拥有一个局部的IMASK值,则一个任务等待的中断可能在另一个任务运行时被禁止,造成系统对中断无法实时响应。同时,tk_def_int函数需要实现不同任务对各级中断定义的互斥功能,以保证全局 IMASK的有效和系统的稳定。

(2)中断前后处理

中断前后处理是中断管理移植的关键,影响到系统稳定性和中断处理的实时性。它对于任务是不可见过程,执行不能被中断。其主要操作包括:保存和恢复上下文;设置标志变量标示任务无关态的嵌套;更改堆栈指针使中断子程序运行在处理器内部RAM;取得当前触发的最高优先级中断号对应的子程序地址进行调用;在中断后处理判断是否进行任务切换。

系统为中断程序分配独立的内部堆栈,使中断程序运行的地址空间独立于任务和虚拟存储地址,加快了中断程序的处理速度,在系统进入省电模式停止了外部存储器时也不影响对中断唤醒的响应。在T-Kernel系统中

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top