×
嵌入式开发 > 详情

一种基于FPGA的栈空间管理器的研究和设计

发布时间:2020-06-23 发布时间:
|

航空航天、工业控制、汽车电子和核电站建设等领域的高速发展,对嵌入式操作系统实时性的要求越来越高。同时,由于FPGA的集成度和速度的不断提高,使嵌入式操作系统硬件化实现成为发展趋势。硬实时操作系统中的堆栈管理对系统的实时性和可靠性起着至关重要的作用,而传统操作系统内核是将每个任务的堆栈空间直接进行最大化处理,导致大量存储空间浪费,另外采用通用RAM寻址方式也不能满足对被切换任务信息的快速保护。

基于上述问题,本文提出了一种堆栈空间结构,设计了一款具有自动检验功能的栈空间管理器,并在Xilinx公司的集成开发环境FPGA系统上实现。

1堆栈空间结构

堆栈空间是按先进后出(LIFO)原则分配的连续存储器空间,可以满足保护任务切换信息和中断响应时保护处理器状态和任务参数数据的需要[1],且对每个任务分配一个单独的任务栈和一个响应系统中断任务的中断嵌套栈[2]。如图1所示,栈空间划分为n个任务栈和1个中断嵌套栈



任务栈主要保护被切换任务的信息。它存放的数据有:任务代码首地址、任务参数、任务中定义的局部变量、被调用函数的参数和局部变量及任务中各个函数的返回地址。中断嵌套栈存放被中断任务的数据,包括发生中断时需要保存的上下文、中断嵌套时需要保存的上下文和中断服务程序的局部变量。

在硬实时操作系统中,当发生中断或中断嵌套时,堆栈地址指针从任务栈切换到中断嵌套栈。当所有的中断服务程序全部执行完成后,堆栈地址指针从中断嵌套栈切换到任务栈,继续执行该被中断的任务。这种管理方式同以往操作系统采用被中断任务的数据保存到相应任务堆栈的方法相比,更有效节约了堆栈空间开销[3,4]。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
发明专利在疫情影响下的逆势增长