新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 51单片机操作系统开发中的问题与技巧

51单片机操作系统开发中的问题与技巧

作者:时间:2012-04-09来源:网络收藏

(2)重入的解决

应该尽量使有重入性要求的函数的参数传递通过寄存器来完成,这样可以用一般的方法来编写函数,使得函数具有重入性。如果实在是寄存器不够用的话,可以动用硬件堆栈来保存这些局部变量。

(3)堆栈分配的解决

鉴于各个任务对于任务堆栈大小的要求不同,即使同一个任务在不同的时刻被中断,它对堆栈大小的要求也不相同的情况,可以将任务堆栈多分配出一个字节,用来统计任务堆栈中有效数据的个数。的片内RAM中,堆栈的栈底也做一个标志,当任务切换时,把当前任务放在堆栈中的环境变量从栈底到栈顶全部拷贝到任务的堆栈中,然后把将要运行任务的任务堆栈中的所有数据恢复到栈底标志开始的地方。任务堆栈和硬件堆栈之间的数据拷贝如图1所示。

50.jpg

其中,Stack(i)和Stack(j)都是指针数组Stack[max_tasks]中的元素,NUM=SP-StkStart,图1中所要进行的操作步骤是:①将系统硬件堆栈中的内容放到当前任务的堆栈中;②把将要运行的任务的堆栈内容移到系统的硬件堆栈中,并将硬件堆栈中的内容弹出到各个寄存器。这个过程就完成了任务的切换。

结 语

本文介绍了在基于51系列的嵌入式中,可能遇到的几个和它们的解决办法。这些想法都是笔者在学习和实践中得来的,相信能够对从事相同工作的人员有一定启发。

参考文献
1 JEAN J.LABROSSE. 源代码公开的实时嵌入式. 邵贝贝译. 北京:中国电力出版社,2001
2 陈明计, 周立功, 等. 嵌入式实时Small RTOS51原理及应用. 北京:北京航空航天大学出版社,2004
3 探矽工作室. 嵌入式系统圣经. 北京:中国青年出版社,2002

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭