在物聯網中有兩大類物理對象:標記對象和連接對象。第一類包括附加到產品上的各種標簽技術,例如條形碼、QR碼、NFC或RFID標簽、IR/AR等。在這種情況下,對象不是直接連接到web,而是被動連接,因為需要另一個設備或應用程序與產品交互。連接對象直接連接到物聯網,是嵌入式開發的世界,它們本質上是小型、相對便宜、低功耗的計算機,資源和能力有限。
有數百種嵌入式平臺,這些平臺的一個區別是它們的操作系統。為了簡化,我們可以考慮用于嵌入式設備的兩類操作系統(OS):實時操作系統(RTOS)和非實時操作系統!
說到嵌入式設備,RTOS的世界由FreeRTOS主宰,FreeRTOS是一種開源實時操作系統,盡管存在一些可行的替代方案,如Contiki、TinyOS、mbed OS或商用Intel VxWorks。實時操作系統的缺點之一是它不太擅長并行操作許多任務,這使得很難構建提供簡單抽象的復雜層。這是非實時操作系統可以提供幫助的地方。它對于那些任務不那么關鍵的事情尤其有用,因為用戶體驗和功能比恒定、非常快速的響應時間更重要。
在嵌入式開發中,一個操作系統比在RTOS世界中更能控制所有操作系統:Linux。由于其龐大的社區、大量的工具、抽象和支持的體系結構,Linux是開始修補和創新物聯網設備的理想環境。但不要弄錯了;它也越來越成為現實世界和強大物聯網應用(如家庭自動化或構建應用網關)的可靠候選。還值得注意的是,許多項目提供Linux內核的修改版本,以將其轉換為實時操作系統。
在過去的幾年里,Linux已經成為一種在嵌入式設備上使用的非常流行的操作系統,來自Linux基金會(Yocto)的項目現在致力于為嵌入式設備創建定制的Linux發行版。類似地,谷歌已經發布了Brillo,Android的一個擴展(也構建在Linux上)用于物聯網,Ubuntu也為物聯網發布了Ubuntu內核。Ubuntu Core還展示了物聯網操作系統容器化的一個有趣的發展方向:允許在容器中部署應用程序,為物聯網應用程序商店鋪平道路(想象一下在現實世界中安裝電梯后為電梯添加功能)。值得注意的是,盡管Linux在很大程度上占據主導地位,但在這一領域,Linux還有一些替代品,如用于物聯網的Windows 10。
在構建物聯網的過程中,您將了解更多關于嵌入式開發的細節,以及如何為Raspberry Pi、BeagleBone或Intel Edison等平臺安裝和定制Linux。