新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 关于RTX51 TINY的分析与探讨

关于RTX51 TINY的分析与探讨

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

有了以上几个函数的定义和实现,就可以应用等待信号量和释放信号量来完成对共享资源的独占。例如:
  void job()_task_ id {
      DDDD用户代码DDDD
      wait_sem(task_id);//等待任务task_id的信号量
      DDDD对共享资源使用代码DDDD
      release_sem(task_id);//释放任务task_id的信号量
      DDDD用户代码DDDD
  }

应用信号量来实现共享资源的使用,不用禁止时间片轮转和关闭T0中断,可以有效地实现对共享资源的独占;但增加了代码,等待和释放信号量花费了一定的时间,在具体应用中要视情况而定。

4 需要注意的问题

在应用 时应注意以下几点:

① 尽可能不使用循环任务切换。使用循环任务切换时要求有13个字节的堆栈区来保存任务内容(工作寄存器等)。如果由os_wait()函数来进行任务触发,则不需要保存任务内容。由于正处于等待运行的任务并不需要等待全部循环切换时间结束,因此os_wait()函数可以产生一种改进的系统响应时间。

② 不要将时钟节拍中断速率设置得太高,设定为一个较低的数值可以增加每秒的时钟节拍个数。每次时钟节拍中断大约需要100~200个CPU周期,因此应将时钟节拍率设定得足够高,以便使中断响应时间达到最小化。

③ 在os_wait()函数中有3个参数: K_TMO、K_IVL和K_SIG。其中对于K_TMO和K_IVL的使用要加以区别。在使用时,两者似乎差别不是很大。其实不然,两者存在很大的区别:K_TMO是指等待一个超时信号,只有时间到了,才会产生一个信号。它产生的信号是不会累计的,产生信号后,任务进入就绪状态。而K_IVL是指周期信号,每隔一个指定的周期,就会产生一次信号,产生的信号是可以累计的。这样就使得在指定事件内没有响应的信号,通过信号次数的叠加,在以后信号处理时,重新得以响应,从而保证了信号不会被丢失。而通过K_TMO方式进行延时的任务,由于某种原因信号没有得到及时的响应,那么这样就可能会丢失一部分没有响应的信号。不过两者都是有效的任务切换方式,在使用时要根据应用场合来确定对两者的使用。

结语

实时操作系统既能保证对外界的信息以足够快的速度进行相应处理,又能并行运行多个任务,具有实时性和并行性的特点,因此能很好地完成对多个信息的实时测量、处理,并进行相应的多个实时控制。任务切换是 的一个基本服务。本文对任务切换做了详细的,在实际应用中还要对任务切换时的堆栈管理有一定了解,这样才能更好地掌握任务切换的机制。共享资源的使用在多任务操作系统中是不可避免的,RTX51 TINY中没有专门的处理共享资源函数,所以在实际应用中要视情况来应用文中提到的几种方法。

参考文献
[1] 朱珍民,隋雪青,段斌. 嵌入式实时操作系统及其应用开发[M]. 北京: 北京邮电大学出版社,2006:44-49.
[2] Keil Software Inc.RTX51 Tiny User’s Guide,2004.
[3] 徐爱钧,彭秀华. 单片机高级语言C51 Windows环境编程与应用[M]. 北京:电子工业出版社,2001.


上一页 1 2 3 下一页

关键词: 探讨 分析 TINY RTX51 关于

评论


相关推荐

技术专区

关闭