[Arduino 教學] 為專題加分的好物 - HeliOS
HeliOS 的特點:
Open Source 的 Embedded OS (Operation System),是 GPL-3.0 的License,也就說,對於專題製作而言就是免費的 。
採用協同式多工 ( Cooperative Multitasking ) 以及事件驅動式多工 (Even Driven Multitasking ) 的方式做Task 的切換。
Task 之間可以透過 Notification / Messaging 做資料訊息的傳遞。
一般的 Embedded OS 都有的功能,如計時器和記憶體的管理,它也有提供。
以上這幾項特點都是制式說法,不是我主要推薦給大家的原因, 而我推薦的理由有以下三點
小而美 :
以我改寫咖啡烘培程式的實作為例,HeliOS 佔用的記憶體空間,Program Memory (ROM) 則是約 1400 bytes, Variables (RAM) 則是 230 bytes,這絕對是 embedded OS 最小的;對比於 FreeRTOS 至少需要 5K ROM, 400 bytes RAM (以 2 Tasks 計算),記憶體空間以及複雜度,HeliOS 是絕對小而美,但小歸小,五臟則俱全,Embedded OS 基本該有的 Notification / Messaging / Timer / Memory 的功能,他都有喔,對於專題製作的需求也是綽綽有餘的!
容易上手 :
再來則是容易上手,沒有負擔;只有 21 個 System Function Call,花 1~2 個小時研究一下,絕對就可以上手使用它。再加上是協同式多工(Cooperative Multitasking ),不是佔先式多工 (Preemptive Multitasking),也就沒有 Mutex, Deadlock, Race Condition 這些擾人難解的疑難雜症了;也因為是協同式多工 , Porting 到不同 CPU ,不須動用到組合語言就可以輕鬆移植到不同的單晶片上,CPU Porting 的困難度相對於 RTOS 就低很多了 !
程式發展不受限 :
最後一點則是程式發展不受限;這項優點是 Embedded OS 對比於 Super-loop 模式都有的特點;以Super-loop 模式發展的程式碼,到一定的複雜度後,例如專題製作的後期,Super-loop 的模式絕對會遇到瓶頸;通常是加了一堆 IF…,來做到類似 GoTo 境界;可能兩天沒碰程式碼,就不知道自己在寫甚麼了,不是嗎?
所以擁有
能把有工作事項以 Task 概念區隔開來的HeliOS 絕對是專題製作的首選。
加上小而美,容易上手,沒負擔,在專題製作初期就可以導入 了,當然也就不會發生後期才導入OS,騎虎難下,兩難的囧境了。
對於沒有寫過 Embedded OS 的專題新人而言,小而美,容易上手,也正是想學Embedded OS的最好入門首選。