【新東網技術大咖帶您走進嵌入式操作系統】基于RT-Thread的IoT-Camera應用介紹
發布時間: 2017-03-14 16:10:03
新東網自2001年成立以來,掌握大數據、云計算、通信、物聯網及區塊鏈等領先信息技術,擁有一支逾16年經驗的強大IT團隊。為沉淀企業技術實力,繼續發揮行業優勢,《東網快訊》特邀新東網技術大咖帶您走進這些領先信息技術,揭秘新東網16年來的技術成果,每周一發布。
筆者工作以來,一直對嵌入式操作系統有比較大的興趣,本文首先簡要介紹目前市場上嵌入式操作系統的情況,然后分享下在國內一款RT-Thread 系統上調試網絡攝像頭的收獲。
嵌入式操作系統是一種用途廣泛的系統軟件,通常包括與硬件相關的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器等。該系統負責全部軟、硬件資源的分配、任務調度,控制、協調并發活動。
嵌入式操作系統與通用的操作相比較主要特點在于:
1.小內核,穩定可靠。
2.需要可裝卸、可裁剪,以便能靈活應對各種不同的硬件平臺。
3.面向應用,強實時性,可用于各種設備控制當中。
國際上常見的嵌入式操作系統大約有40種左右如:Linux、uClinux、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、Free RTOS等。隨著物聯網的發展日趨火熱,包括一些大型國際公司也開始布局適用于物聯網硬件的操作系統,比如ARM公司推出的mbed OS,華為公司的LiteOS等,國內一些中小型廠家也投入其中,比如慶科公司推出的MICO等。
物聯網的發展必然帶來的是智能硬件的爆發,那么這些智能硬件產品突出要解決兩個問題:
1)智能手機和云端應用。智能硬件多與手機進行互動,或由手機進行操作控制,或借助手機反映出更多的設備信息;
2)智能硬件不再是孤立的設備,而是與云連接起來。
這些產品的需求主要體現在以下幾個方面:
1) 芯片和硬件:各類不同架構和平臺的芯片種類繁多,幾乎每一款智能硬件的基礎硬件平臺都不相同。互聯網時代操作系統主要是Windows;移動互聯網時代操作系統主要是Android和IOS;到了智能硬件和物聯網時代,則很難產生一統天下的操作系統,于是行業需要各有特色,能滿足不同需求的操作系統;
2) 計算,存儲資源:大多智能硬件對于成本都有要求,因此計算和存儲資源會非常有限;目前手機上的處理器主頻一般是超過1G,ROM和RAM能達到64G,4G,而智能硬件上的計算資源很多是低于100M,ROM和RAM小于100K字節;
3) 傳感器:智能硬件通過各類傳感器來感知環境,并通過各種不同的傳感器融合算法得出感知的結果;
4) 功耗:智能硬件一般都是使用電池供電,因此需要設備大部分時間進入低功耗休眠狀態;
5) 聯網:智能硬件不是單一,孤立的設備,它們需要通過各種有線或者無線的方式與其他設備和互聯網進行通信,有線方式主要是以太網,串口,無線方式則有WiFI,藍牙,2G/3G/4G,Zigbee, Thread等各種不同標準的協議;
6) 安全:一是指智能設備自身的可靠性,二是指設備連接網絡和進行通信的安全;
7) 開機時間和響應速度:電腦和手機的開機時間可以達到幾十秒,但智能硬件一般需要在上電后的幾毫秒內立刻啟動并能夠運行;
智能硬件的這些需求特點決定了Linux、Android、 IOS不是適合的操作系統,智能硬件需要使用RTOS,并且對RTOS提出了更高的要求:
1) 需要能夠支持不同架構的處理器,需要有硬件抽象層和設備管理器來管理不同的硬件設備。
2) 能夠支持計算,存儲資源有限的設備,RTOS本身的ROM和RAM資源占用少。
3) 具備傳感器管理框架來管理眾多的傳感器設備,能夠提供或者整合感知融合算法。
4) 提供低功耗管理機制,來幫助設備進行低功耗管理。
5) 網絡特性變成RTOS的基礎標配,需要能夠支持各種網絡協議,以太網,Wi-FI,藍牙,2G/3G/4G,Zigbee, Thread等。
6) 能夠支持網絡升級功能,各種加密機制,安全的套接字功能。
7) 能夠支持輕量級的顯示UI,音頻和視頻框架和智能算法。
8) 支持POSIX標準,方便移植程序;并且能夠支持腳本語言開發。
筆者的工作是開發智能卡相關產品,也認為在物聯網時代,智能卡作為安全認證模塊,必然可以在物聯網系統中得到廣泛的應用。于是完成工作任務之余,一探這些嵌入式操作系統的面目,期望能將我們的芯片融合其中。下面介紹下我在調試一款系統過程中的收獲。
當前市場上有很多成熟的網絡攝像頭產品,這類產品的共同特點就是功能單一、固定,無法進行二次開發,不支持設備聯動和功能擴展。與物聯網的要求相差甚遠,而基于RT-Thread的IoT-Camera,則為創客們提供了一款可以自己選擇外設傳感器、自己選擇算法、應用、控制單元,進行功能二次開發的無線Camera產品。
IoT-Camera即可編程物聯網攝像頭,是由RT-Thread的開發團隊專門針對物聯網應用開發的一款實物產品。其軟、硬件都完全開源,問世之初,便受到了廣大開發者的關注。
圖一 IoT-Camera開發板實物圖
IoT-Camera開發板上封裝了Wifi、圖像處理和視頻技術,為使用者的二次開發提供了便利。
RT-Thread是一款主要由中國開源社區主導開發的實時嵌入式操作系統,它的開發、維護團隊主要來自中國國內。曾獲得“第六屆中日韓開源軟件競賽”技術優勝獎。目前,國內已有十多家企業將RT-Thread成功應用到自己的產品中。
圖二 RT-Thread軟件結構
RT-Thread作為一款穩定小巧的實時操作系統,包含了硬實施搶占式內核,文件系統,TCP/IP協議棧,標準的POSIX API接口,libc接口,圖形用戶界面等。
IoT-Camera開發板上運行RT-Thread內核,通過Wifi網絡可以將攝像頭采集到的數據上傳,用瀏覽器訪問攝像頭IP地址就可以看到攝像頭采集到的實時圖像。
使用時,需要有一張TF卡片,在其根目錄下存儲內核代碼和boot程序固件。開發板默認在串口上提供交互用的命令行。當PC機與開發板連接后,可以使用PuTTY軟件開配置串口,并啟動交互界面。
圖三 PuTTY軟件開啟窗口
如上圖所示,串口波特率選擇115200,串口通道根據自己電腦的接口選擇(本臺電腦使用的是COM3口)。點擊Open即口啟動操作界面。
系統啟動后,先從flash加載燒錄好的uboot程序開始執行,接著從TF卡加載存儲的rboot.bin執行,執行地址默認為0xA0200000。rboot啟動超時后,自動執行/rboot.sh腳本。
圖四 通過shell指令設置rboot啟動地址
在rboot.sh中可以設置系統啟動時使用的rtthread.bin所在的位置。如:
boot /rtthread.bin(直接啟動TF卡中的bin文件)
boot http://192.168.10.246:8000/firmware/rtthread.bin(需預先配置好網絡連接)
配置網絡連接的命令為wifi join your_ssid your_passwd。
rtthread.bin啟動后,可以通過help命令列出rt-thread支持的命令行,默認命令行為msh />。
輸入命令mjpeg start,啟動視頻服務mjpeg server。
在PC上打開瀏覽器,訪問IoT-Camera的ip地址,即可看到攝像頭采集到的實時視頻圖像。