微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于页的8051多任务模型

基于页的8051多任务模型

时间:09-25 来源:互联网 点击:
(2)较好的安全性

配置页面的工作是由操作系统完成的。在使用基于页的多任务开发中,任务本身不能更换页面;因此,私有变量的操作只在当前页进行,不会影响到其他页或其他任务。这样的程序封装体现了较好的安全性。

3.2 存在问题与解决方法

(1)容量的限制

8051的硬件决定了页面大小为256字节,不可变更。这使得“页面容量限制”成为基于页的多任务开发中最需要考虑的问题。

存储器的一页为256字节,与最小模式下8051的内部数据空间(IDATA空间)大小相同。因此,笔者认为页变量的256字节能满足最小模式任务的需要。

对于需求超过256字节的任务,可在页面外的外部存储器中申请后备空间。只要指向后备空间的指针在页面内,则该后备空间仍是私有的,满足重入条件,其结构示意图如图4所示。虽然后备存取区使用指针操作,但不需要计算变量地址,因此后备存储区存取速度优于重入堆栈。



(2)工具的限制

目前,Keil C51开发工具不提供多任务以及多页面支持。这主要体现在两点:

①需要新的函数库。现有的大量函数库不支持页函数方式重入。准确地说,大部分函数库不支持任何方式的重入——即使使用重入堆栈,函数库问题也依然存在。目前的解决方法只有程序员根据需要编写新的页函数库。

②一个项目中只允许存在一个pdata页面,不能按任务将变量安排在不同的逻辑页面上。其后果是,多任务开发中,编译链接工具只在同一个页面中分配所有任务的页变量,导致存储器迅速溢出。

问题②的解决方案是:为使每个任务具有自己的工作页,为每个任务单独建立工程,并使用COMPACT方式进行编译。各个任务工程之间和操作系统之间使用绝对地址表传递系统调用和任务入口地址。绝对地址表是对一些系统调用的约定地址。

这些不便之处是暂时的、可克服的。

结语

8051主要应用领域为实时控制,因此努力提高系统实时性是开发者不断追求的目标。笔者从提高实时性的角度出发,提出了一种基于页的多任务模型。相对于目前重入堆栈多任务模型,它具有较好的实时性,也是处理重入问题的一种新思路。

本模型已经过Keil C5l仿真工具的一般性测试,并在W78P438芯片上实测成功,相信其结果适用于全部8051及兼容系列。考虑到8051依然广泛应用在多任务开发中,本文中的新模型值得推广。

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

网站地图

Top