新闻  |   论坛  |   博客  |   在线研讨会
smallRTOS51读后感
yanqin | 2009-04-16 18:57:44    阅读:1731   发布文章

虽然small RTOS51没有对任务分配到内存的变量进行保护,但它却利用
%A 了禁止任务函数覆盖分析的方法而把任务的局部变量像全局变量一样保护起
%A 来。这样虽然节省了堆栈内存空间,但每个任务函数的局部变量还是单独的
%A 占用着内存空间,和用堆栈保护异曲同工。这样做实际上并没有节省内存。
%A 当有很多任务且任务的局部变量又很多时,内存中空间就会变的非常紧张。
%A 而当这些任务用前后台系统让编译器进行覆盖分析,那样就会节省很多内存
%A 下来。我的意思并不是说small RTOS51编写的不好,相反它写的十分精妙。
%A 从中我得出一个结论:只要可以并发执行的多任务操作系统,就会比不使用
%A 操作系统多使用很多内存。因为在任务切换时操作系统要为每个任务保存现
%A 场环境,而small RTOS51也不例外,只是结合了编译器Keil C51的特点用一
%A 种特殊的方式来保存每个任务的现场环境。MCS51构架的单片机在不扩展
%A XDATA-RAM的情况下还是很难使用实时操作系统(即使是small RTOS51)做较
%A 复杂的事情。
%A
%A     另外,使用连接定位控制OVERLAY(*!sfname) 为sfname增加新的根,使
%A 实时操作系统为每个任务函数设置自己的程序路径或根,也就是让任务的调
%A 用树可以独立分析。这样就可以对每个任务隔离开来进行覆盖分析。这样比
%A 书中提到的禁止对任务函数的覆盖分析做法可节省内存空间。
%A
%A     有关多重调用的问题,只要被调用的函数满足局部变量只使用寄存器,
%A 就可以被多个独立的段(多任务)任意调用,如不满足以上条件,可以使用互
%A 斥信号量防止多个段同时调用。判断函数局部变量是否只使用寄存器,可以
%A 查看调用树,也可在禁止任务函数覆盖分析后查看内存分配表。这些东西在
%A 一个后缀名为"m51"的文件中。
%A%A
%A

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客