电子说
研究生做了两年Android应用,实习时转了嵌入式应用软件开发,拿着一块移植了RTOS的设备学习。入门了才发现,两者都是开源、稳定、经历众多设备厂商打磨的优秀操作系统,根据以下几点对比学习。
通用操作系统和实时操作系统:
双系统
两个操作系统其实经常一起应用:
Android手机的双MCU
1. AP(Application Processor)是ARM架构搭载Android,运行系统和应用,由于高功耗待机时和WIFI、LCD均休眠
2. BP(BaseBand Processor)架构搭载RTOS,运行通信协议、射频、GPIO,低功耗
TP_Link小白路由的双系统
1. 搭载Android4.2,运行APP加强应用功能
2. 搭载RTOS,完成安全、严密、专业的路由功能
高通骁龙810/7系列处理器
1. 一个ARM运行基于Linux的Android OS
2. 一个ARM运行(RTOS)
适用于 TI 处理器的可扩展 Linux 和 TI RTOS 解决方案
查资料过程中,发现TI也提供了一套基于自己家处理器的可扩展Linux,Android,RTOS解决方案,同样的处理器,可选的SDK和操作系统,也是棒。当然Android做为操作系统更为丰满,更上层,而实时操作系统比如ucos,比如最近在学的rtos,都仅提供了任务调度、同步、互斥、时钟等功能,所以必须内核组,BSP&DSP,应用软件开发人员再向这个骨架中填充(移植)血肉:lwip(小型TCP/IP协议栈), fatfs(文件系统), driver(各种外设驱动), framework, ucGUI, bsp等。
通用操作系统和实时操作系统
一、通用操作系统的设计注重每次执行的平均响应时间而不关心某次特定执行的响应时间。通用操作系统中采用的很多策略和技巧都体现出了这种设计原则。
大型的os代码包括的内容很多,就拿linux来说,它就包括了调度、文件、网络、驱动等完整的代码内容。
二、对于实时操作系统,它除了要满足应用的功能需求以外,更重要的是还要满足应用提出的实时性要求,而组成一个应用的众多实时任务对于实时性的要求是各不相同的,此外实时任务之间可能还会有一些复杂的关联和同步关系,如执行顺序限制、共享资源的互斥访问要求等,这就为系统实时性的保证带来了很大的困难。因此,实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性predictability)
而一般的rtos呢,就拿大家熟悉的ucos2来说,只是包含了调度、同步、互斥、时钟等代码。如果系统工程师需要拿ucos2来做一个项目,那么他还需要bsp、lwip、ucGUI、fatfs、driver、framework等很多代码才能组成一个完成的系统。
可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求,也就是说,实时操作系统注重的是个体表现,更准确地讲是个体最坏情况表现。三、差别比较之处
几个主要差别的地方:
(1)任务调度策略不同。
(2)内存管理方式不同。
(3)中断处理方式。
(3)系统管理方式不同。
全部0条评论
快来发表一下你的评论吧 !