1,RTX51 Tiny Introduction
RTX51 Tiny是一个实时操作系统(RTOS),它可以用来构建同时执行多个任务(函数)的应用程序(宏观上,它们是同时执行的,但微观上,它们是独立运行的)嵌入式应用系统通常有这样的要求RTOS可以提供调度、维护、同步等功能
实时操作系统可以灵活地调度系统资源,如CPU和内存,并提供任务间的通信Rtx51tini是一款功能强大且易于使用的RTOS。它用于8051系列微控制器。RTOS支持多达16项任务。基于RTX51 Tiny构建的应用程序没有main()函数,从任务0开始执行。
2,单任务、多任务和基于rtx51tini的程序的比较
单任务程序:
嵌入式程序和标准c程序都是从主函数执行的。在嵌入式应用程序中,main通常是一个无限循环,可以被视为连续执行的单个任务,例如:
void main(void){ while(1){ do _ some();//do _ some task } }多任务程序:
许多C程序通过循环调用服务函数(或任务)来实现伪多任务调度例如:
void main(void){ while(1){ key _ scan();//键盘扫描do _ key();//处理关键事件CTR _ ADJ();//调整控制器} }在本例中,每个函数执行一个单独的操作或任务,函数(或任务)按顺序执行当有越来越多的任务时,调度问题就自然产生了例如,如果ctr_adj()函数需要很长时间才能执行,主循环可能需要很长时间才能返回执行key_scan()函数,从而导致丢失一些键事件当然,可以在主循环中更频繁地调用key_scan()函数来纠正这个问题,但是最终这个方法还是会失败。
rtx51tini程序:
当使用rtx51tini时,为每个任务建立一个独立的任务函数,例如:
void job 0(void)_ task _ 0 { OS _ create _ task(1);//创建任务1 操作系统_创建_任务(2);//创建任务2 操作系统_创建_任务(3);//创建任务3 操作系统_删除_任务(0);//删除任务0 } 作废作业1(作废)_ Task _ 1//键盘扫描任务{ 同时(1){ 键扫描();} } void job 2(void)_ task _ 2//处理关键事件任务{ while(1){ do _ key();} } void job 3(void)_ task _ 3//调整控制器任务{ while(1){ CTR _ adj();} }在本例中,每个函数都被定义为一个rtx51tini任务rtx51tini程序不需要主要功能。相反,rtx51tini从任务0开始。在典型的应用程序中,任务0只是建立所有其他任务研究rtx51tini的
书籍相对较少。事实上,最好的学习材料是Keil uVision中包含的用户手册,可以打开如下图所示: