裸机与跑RTOS实时操作系统的比较

1. 裸机应用代码框架

正常的裸机应用代码架构,由一个大while循环以及一些中断服务函数构成。如下图所示,中断服务函数叫前台程序,大while叫后台程序。这种前后台式的工作系统,本质上还是一个单任务的系统。

相对而言,单任务的系统实时性较差,后台的各个任务,不管紧急程序有多高,都要排着队轮循。

伪代码示例:

void main(void)
{
        sys_init();
        while(1)
        {
                task1();
                task2();
                task3();
                feeddog();
        }
}

void ISR1_handler(void)
{
        dosomthing();
}

2. 跑RTOS的应用代码框架

实时操作系统是一个的多任务系统,应用代码可以根据架构、功能、紧急程度等细分为多个任务,每个任务所消耗的资源相互独立,任务与任务间可以通过信号量,消息队列,事件组等进行同步和数据交换。

如下图所示,是freertos的一个抢占式的实时多任务系统。通过任务调度,使得这些任务高效有序的“并发”进行。

根据任务优先等级的设定,来决定当前CPU的使用权归于哪个任务。高优先级的任务可以打断低优先级的任务,中断可以打断高优先级的任务。这样就可以保证紧急的任务都能够及时的响应。

伪代码示例:

void main(void)
{
        sys_init();
        //操作系统的创建任务的API函数,创建一个开始任务
        xTaskCreate  (start_task,    
                   "start_task", 
                    configMINIMAL_STACK_SIZE,  
                    NULL,   
                    1, 
                    StartTaskHandle); 
        //调度器开始调度任务           
        vTaskStartScheduler();  
         //正常走不到这里            
        while(1)                           
        {
                printf("task does not work!!!\r\n ")
        }                      
}

void start_task(void)
{
            //创建task1  
          xTaskCreate  (task1,  
                       "task1", 
                       configMINIMAL_STACK_SIZE,   
                       NULL,   
                       1, 
                       Task1Handle);  
           //创建task2              
          xTaskCreate  (task2,  
                       "task2"  , 
                        configMINIMAL_STACK_SIZE, 
                        NULL,   
                        1, 
                        Task2Handle);  
          //创建task3              
          xTaskCreate  (task3,  
                        "task3", 
                        configMINIMAL_STACK_SIZE, 
                        NULL, 
                        1, 
                        Task3Handle);   
           //删除stark_task             
          vTaskDelete(StartTaskHandle);            
}

void task1(void)
{
        while(1)
        {
                task1_dosomething();
                printf("task1 is working!!!\r\n");
        }
}

void task2(void)
{
        while(1)
        {
                task2_dosomething();
                printf("task2 is working!!!\r\n");
        }
}

void task3(void)
{
        while(1)
        {
                task3_dosomething();
                printf("task3 is working!!!\r\n");
        }
}


void ISR1_handler(void)
{
        dosomthing();
}

3. 比较

裸机

跑操作系统

实时性

一般

良好

可靠性

一般,某一处死循环后,导致整个功能瘫痪

良好,单个任务的死机不影响其他任务

资源消耗

所有资源都用在了应用代码功能上

需要一部分ram和rom的资源给操作系统

使用范围

功能简单,实时性可靠性要求不高的系统

功能复杂,需要满足实时性可靠性要求的

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于8051的rtos是一种实时操作系统,它专门用来管理主要基于8051微控制器的嵌入式系统。这种操作系统比起普通操作系统更加适合嵌入式系统的应用,因为它可以对系统资源进行精细的管理和调度,从而实现系统的可靠性和高效性。 基于8051的rtos中,主要包含了一些常用的任务,如管理任务、通信任务、数据处理任务、控制任务等等。这些任务可以根据实际需要通过系统调用来管理和控制,而不必担心竞争条件的出现,这样就可以保证任务的顺序执行和资源使用的正确性。 另外,基于8051的rtos还可以提供一些重要的特性,如优先级调度、时间延迟、事件信号处理等等。这些功能都可以针对不同的应用需求进行定制化和配置,从而实现特殊功能的实时响应和高效处理。 总之,基于8051的rtos可以为嵌入式系统提供高效的任务调度、丰富的系统功能、灵活的应用定制等优势,是嵌入式系统开发的重要工具之一。 ### 回答2: 基于8051的RTOS是一种实时操作系统,该操作系统适用于嵌入式系统,尤其是利用8051处理器的系统。该RTOS允许多个任务同时运行,并能够确保它们按时完成。 基于8051的RTOS提供了很多功能,包括任务管理,内存管理,时间管理,中断管理等等。其中,任务管理可以让多个任务同时运行,并确保它们按时完成。内存管理可以管理系统内存的分配和释放,确保系统使用内存的效率。时间管理则负责管理系统的时钟,以确保所有任务按照预期的时间执行。中断管理可以处理输入和输出设备的中断。 基于8051的RTOS实现原理是,把整个程序分成多个任务并按照优先级和执行时间安排它们的执行。RTOS会利用定时器,中断和任务切换等方式来协调多个任务的执行,从而确保它们能够按时完成。 总的来说,基于8051的RTOS是一种实时操作系统,它可以使嵌入式系统中的多个任务同时运行,从而提高整个系统的效率和稳定性。同时,它也具备任务管理、内存管理、时间管理、中断管理等一系列功能,为嵌入式系统开发和调试提供了很大的帮助。 ### 回答3: 基于8051的RTOS(Real-time Operating System,实时操作系统),是一种适用于小型嵌入式设备的实时操作系统。它基于底层的8051芯片,具有实时性强、可靠性高、响应速度快等特点,适用于需要快速响应并具有实时性要求的场合。 通常情况下,基于8051的RTOS可分为两大类,即裸机实时操作系统和操作系统/编译器内置的实时操作系统。前者是指只有一个RTOS内核,而没有其他的元素,开发者需要自己根据实际需求编写系统代码,因此开发难度较高。后者则是指在编译器或操作系统中已经内置了RTOS,需要开发者按照其提供的API进行开发,相对来说开发难度会更低一些。 基于8051的RTOS具有许多优点,比如快速的中断响应、高度的灵活性、简化的应用程序设计和维护、更少的RAM和ROM使用量等。它还具有广泛的应用领域,比如自动化控制、家电控制、交通工具、医疗设备、工业自动化控制等。 总之,基于8051的RTOS在嵌入式设备中发挥着不可替代的作用,其应用广泛,可通过不同的编译器和库构建,帮助开发者更高效、更快速地完成应用程序的设计和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值