學得越多,發(fā)現自己知道的越少!Android與RTOS
小編研究生做了兩年Android應用,實習時轉了嵌入式應用軟件開發(fā),拿著一塊移植了RTOS的設備學習。入門了才發(fā)現,兩者都是開源、穩(wěn)定、經歷眾多設備廠商打磨的優(yōu)秀操作系統(tǒng),根據以下幾點對比學習。
通用操作系統(tǒng)和實時操作系統(tǒng):
雙系統(tǒng)
兩個操作系統(tǒng)其實經常一起應用:
Android手機的雙MCU
1. AP(Application Processor)是ARM架構搭載Android,運行系統(tǒng)和應用,由于高功耗待機時和WIFI、LCD均休眠
2. BP(BaseBand Processor)架構搭載RTOS,運行通信協(xié)議、射頻、GPIO,低功耗
TP_Link小白路由的雙系統(tǒng)
1. 搭載Android4.2,運行APP加強應用功能
2. 搭載RTOS,完成安全、嚴密、專業(yè)的路由功能
高通驍龍810/7系列處理器
1. 一個ARM運行基于Linux的Android OS
2. 一個ARM運行(RTOS)
適用于 TI 處理器的可擴展 Linux 和 TI RTOS 解決方案
查資料過程中,發(fā)現TI也提供了一套基于自己家處理器的可擴展Linux,Android,RTOS解決方案,同樣的處理器,可選的SDK和操作系統(tǒng),也是棒。當然Android做為操作系統(tǒng)更為豐滿,更上層,而實時操作系統(tǒng)比如ucos,比如最近在學的rtos,都僅提供了任務調度、同步、互斥、時鐘等功能,所以必須內核組,BSP&DSP,應用軟件開發(fā)人員再向這個骨架中填充(移植)血肉:lwip(小型TCP/IP協(xié)議棧), fatfs(文件系統(tǒng)), driver(各種外設驅動), framework, ucGUI, bsp等。
通用操作系統(tǒng)和實時操作系統(tǒng)
一、通用操作系統(tǒng)的設計注重每次執(zhí)行的平均響應時間而不關心某次特定執(zhí)行的響應時間。通用操作系統(tǒng)中采用的很多策略和技巧都體現出了這種設計原則。
大型的os代碼包括的內容很多,就拿linux來說,它就包括了調度、文件、網絡、驅動等完整的代碼內容。
二、對于實時操作系統(tǒng),它除了要滿足應用的功能需求以外,更重要的是還要滿足應用提出的實時性要求,而組成一個應用的眾多實時任務對于實時性的要求是各不相同的,此外實時任務之間可能還會有一些復雜的關聯(lián)和同步關系,如執(zhí)行順序限制、共享資源的互斥訪問要求等,這就為系統(tǒng)實時性的保證帶來了很大的困難。因此,實時操作系統(tǒng)所遵循的最重要的設計原則是:采用各種算法和策略,始終保證系統(tǒng)行為的可預測性predictability)
而一般的rtos呢,就拿大家熟悉的ucos2來說,只是包含了調度、同步、互斥、時鐘等代碼。如果系統(tǒng)工程師需要拿ucos2來做一個項目,那么他還需要bsp、lwip、ucGUI、fatfs、driver、framework等很多代碼才能組成一個完成的系統(tǒng)。
可預測性是指在系統(tǒng)運行的任何時刻,在任何情況下,實時操作系統(tǒng)的資源調配策略都能為爭奪資源(包括CPU、內存、網絡帶寬等)的多個實時任務合理地分配資源,使每個實時任務的實時性要求都能得到滿足。與通用操作系統(tǒng)不同,實時操作系統(tǒng)注重的不是系統(tǒng)的平均表現,而是要求每個實時任務在最壞情況下都要滿足其實時性要求,也就是說,實時操作系統(tǒng)注重的是個體表現,更準確地講是個體最壞情況表現。
三、差別比較之處
1.幾個主要差別的地方:
(1)任務調度策略不同。
(2)內存管理方式不同。
(3)中斷處理方式。
(3)系統(tǒng)管理方式不同。