机器故障?购置更换零件?停产设备麻烦?不要犹豫,请速与我们联系,我们可以快速提供优质、合格的工业备件,解决您各处寻找的烦恼!
--------------------------------------------------
允许我给您介绍下这个产品和我们的服务:现货 全新原装*** 15天质量问题无条件包退换
一年质保 完善的***服务 雄厚的技术人才后盾 真正的为客户排忧解难
客户的满意 是对我们的肯定 更是我们的动力
单子,得之,我幸。不得,我力争到底 全心服务
--------------------------------------------------
ABB 3HAB2216-1 DSQC 314B
优质的产品★优质的价格★优质的***★优质的服务,是您***佳的选择!
TX51Tiny内核完全集成在Keil C51编译器中,以系统函数调用的方式运行,因此可以很容易地使用Keil C51语言编写和编译一个多任务程序,并嵌入到实际应用系统中。内核主要提供以下函数供应用程序引用,见表1。
RTX51Tiny的用户任务具有表2所列的几个状态,它们如图4所示进行切换。
为了保证任务在执行顺序上的协调,必须采用同步机制。内核用以下事件进行任务间的通信和同步:
(1)SIGNAL:用于任务之间通讯的位,可以用系统函数进行置位或清除。如果一个任务调用了os_wait函数等待SIGNAL而SIGNAL未置位,则该任务被挂起直到SIGNAL置位,才返回到READY状态,并可被再次执行。
(2)TIMEOUT:由os_wait函数开始的时间***,其持续时间可由定时节拍数确定。带有TIMEOUT值调用os_wait函数的任务将被挂起,直到***结束,才返回到READY状态,并可被再次执行。
(3)INTERVAL:由os_wait函数开始的时间间隔,其持续时间可由定时节拍数确定。带有INTERVAL值调用os_wait函数的任务将被挂起,直到间隔时间结束,才返回到READY状态,并可被再次执行。与TIMEOUT不同的是,任务的节拍计数器不复位。
RTX51Tiny采用微控制器(51)内部定时器T0来产生定时节拍,各任务只在各自分配的定时节拍数(时间片)内执行。当时间片用完后,切换至下一任务运行,因此各任务是并发执行的。RTX51Tiny调度程序定义这些任务按照下面的规则运行:
(1)如果出现以下情况,当前运行任务中断: ①任务调用os_wait函数并且指定事件没有发生。 ②任务运行时间超过定义的时间片轮转超时时间。
(2)如果出现以下情况,则开始另一个任务: ①没有其他的任务运行。 ②将要开始的任务处READY或TIME-OUT状态。
图4 RTX51任务切换图
2.2 嵌入式操作系统的特殊问题处理
在RTX51 下进行多任务编程与传统的顺序循环单任务编程相比有以下几个值得注意的不同点:
(1)多任务编程CPU 是轮流执行每个任务,可以将每个任务设计成死循环的模式,不断重复地进行数据计算或者访问硬件,不会影响别的任务的执行。当一个任务的数据计算完成后,可以通过os_wait 函数将CPU 交出执行别的任务。而单任务模式却独占了所有的CPU 资源,时常要担心是否执行时间太长而不能及时响应外部的异步事件。
(2)多任务编程有一个缺点,即资源冲突和重入问题。所谓资源冲突就是任务A在访问某个资源时,恰好发生了任务切换,任务B也访问这个资源,且改变了它的状态,这样当再次执行任务A时就可能发生冲突或带来不确定性。而所谓重入是指假设任务A在运行某个函数,发生任务切换后,任务B也运行这个函数,这样就会***任务A执行这个函数的现场,从而可能导致任务A执行函数时结果不正确。这种问题尤其容易出现在串行接口器件的操作中,例如串口、串行的A/D、D/A器件等。
在本嵌入式机器人控制器开发过程中,采用这种处理办法:将对每个***的硬件(例如串行通讯)进行操作的驱动程序段放在一个任务中,也就是说要想对某个设备资源进行操作,只有依靠执行相应的任务来实现。这样无论何时切换任务,都不会对任何***的“外设”造成影响。这样做彻底避免了资源冲突和重入问题而且利于系统维护与升级。各个任务之间要实现通信,可以调用os_send_signal函数及全局变量。