- 嵌入式實時操作系統:基于ARM Mbed OS的應用實踐
- 王宜懷等
- 3063字
- 2024-02-27 16:08:39
1.1 實時操作系統的基本含義
實時操作系統是一種應用于嵌入式系統的系統軟件,學習實時操作系統可以從了解其基本功能開始。本節首先簡要介紹嵌入式系統的基本分類,隨后闡述無操作系統(No Operating System,NOS)與實時操作系統下程序運行流程的區別,由此初步了解實時操作系統的基本功能,最后介紹實時操作系統與非實時操作系統的主要差異。
1.1.1 嵌入式系統的基本分類
嵌入式系統,即嵌入式計算機系統,它是不以計算機面目出現的計算機。這類計算機隱含在各種具體產品之中,在這些產品中,計算機程序發揮著核心作用。主要的嵌入式產品有手機、平板電腦、冰箱、工業控制系統、農業大棚控制系統、月球車等。應用于嵌入式系統的處理器,被稱為嵌入式處理器。嵌入式處理器按其應用范圍可以分為電子系統智能化(微控制器)和計算機應用延伸(應用處理器)兩大類。
1.微控制器
一般來說,微控制器(Microcontroller Unit,MCU)與應用處理器的主要區別在于可靠性、數據處理量、工作頻率等方面。相對應用處理器來說,微控制器的可靠性要求更高、數據處理量較小、工作頻率較低。電子系統智能化類的嵌入式系統,主要用于嵌入式人工智能終端、物聯網終端、工業控制、現代農業、家用電器、汽車電子、測控系統、數據采集等,這類應用所使用的嵌入式處理器一般被稱為微控制器。這類嵌入式系統產品從形態上看,更類似于早期的電子系統,但其內部,計算機程序起核心控制作用。本書闡述的實時操作系統主要面向微控制器。
2.應用處理器
應用處理器類的嵌入式系統,主要用于平板電腦、智能手機、電視機頂盒、企業網絡設備等,這類應用所使用的嵌入式處理器一般被稱為應用處理器或多媒體應用處理器(Multimedia Application Processor,MAP),多在非實時操作系統下進行編程。
1.1.2 無操作系統與實時操作系統
在嵌入式產品開發中,可以根據硬件資源、軟件復雜程度、可移植性需求、研發人員的知識結構等各個方面綜合考慮是否使用操作系統,若使用操作系統,應選擇哪種操作系統。
1.無操作系統下程序運行流程
在無操作系統的嵌入式系統復位后,首先進行堆棧、中斷向量、系統時鐘、內存變量、部分硬件模塊等初始化工作,然后進入無限循環。在這個無限循環中,CPU根據一些全局變量的值決定執行各種功能程序(線程),這是第一條運行路線。若發生中斷,將響應中斷,執行中斷服務程序(Interrupt Service Routines,ISR),這是第二條運行路線,執行完ISR后,返回中斷處繼續執行。從操作系統的調度功能的視角來理解,無操作系統中的主程序可以被簡單地理解為一個實時操作系統內核,這個內核負責系統初始化和調度其他線程。
2.實時操作系統下程序運行流程及其基本功能
本書主要闡述面向嵌入式人工智能與物聯網領域的實時操作系統的應用方法與原理。在基于實時操作系統的編程模式下,有兩條線路:一條是線程線,編程時把一個較大工程分解成幾個較小的工程(被稱為線程或任務),由調度者負責這些線程的執行;另一條線路是中斷線,與無操作系統情況類似,若發生中斷,將響應中斷,執行中斷服務程序,然后返回中斷處繼續執行。
可以進一步理解為,實時操作系統是一個標準內核,包括芯片初始化、設備驅動及數據結構的格式化。軟件開發工程師可以不直接對硬件設備和資源進行操作,而是通過標準調用方法實現對硬件的操作,所有的線程都由實時操作系統內核負責調度。也可以這樣理解,實時操作系統是一段嵌入目標代碼中的程序,系統復位后首先執行它,用戶的其他應用程序(線程)都建立在實時操作系統之上。不僅如此,實時操作系統將CPU時間、中斷、I/O、定時器等資源都封裝起來,留給用戶一個標準的應用程序編程接口(Application Programming Interface,API),并根據各個線程的優先級,合理地在不同線程之間分配CPU時間。實時操作系統的基本功能可以簡單地概括為,實時操作系統為每個線程建立一個可執行的環境,方便線程間傳遞消息,在中斷服務程序與線程之間傳遞事件,區分線程執行的優先級,管理內存,維護時鐘及中斷系統,并協調多個線程對同一個I/O設備的調用。簡而言之,實時操作系統負責線程管理與調度、線程間的同步與通信、存儲管理、時間管理、中斷處理等工作。
3.實時操作系統的應用場合
一個具體的嵌入式系統產品是否需要使用操作系統,使用何種操作系統,必須根據系統的具體要求做出合理的決策,這就依賴于對系統的理解和所具備的操作系統知識。是否使用操作系統,可以從以下幾個方面來考慮。
第一,系統是否復雜到必須需要使用操作系統的程度。
第二,硬件是否具備足夠的資源來支撐操作系統的運行。
第三,是否需要并行運行多個較復雜的線程,線程間是否需要進行實時交互。
第四,應用層軟件的可移植性是否能得到更好的保證。
此外,如果決定使用操作系統,那么選擇哪一種操作系統呢?是否是實時操作系統?這還要從性能、熟悉程度、是否免費、是否有產品使用許可、是否會出現收費陷阱等角度考慮。
本書闡述的Mbed OS是由ARM公司于2014年推出的一款免費的開源嵌入式實時操作系統。
1.1.3 實時操作系統與非實時操作系統
我們知道,操作系統(Operating System,OS)是一套用于管理計算機硬件與軟件資源的程序,是計算機的系統軟件。通常,我們使用的個人計算機系統,在硬件上一般由主機、顯示屏、鼠標、打印機等組成。操作系統提供設備驅動管理、進程管理、存儲管理、文件系統、安全機制、網絡通信及使用者界面等功能,這類操作系統有Windows、Mac OS、Linux等。
嵌入式操作系統(Embedded Operating System,EOS)是一種工作在嵌入式微型計算機上的系統軟件。一般情況下,它固化到微控制器或應用處理器內的非易失存儲體中,它具有一般操作系統最基本的功能,負責嵌入式系統的軟、硬件資源的分配、線程調度、同步機制、中斷處理等。
嵌入式操作系統有實時與非實時之分。一般情況下,應用處理器使用的嵌入式操作系統對實時性要求不高,這類操作系統主要有Android、iOS、嵌入式Linux等。而以微控制器為核心的嵌入式系統,如工業控制設備、軍事設備、航空航天設備、嵌入式人工智能與物聯網終端等,大多對實時性的要求較高,希望能夠在較短的確定時間內完成特定的系統功能或中斷響應,應用于這類系統的操作系統就是實時操作系統。
相對于實時操作系統而言,適合應用處理器的嵌入式操作系統一般不再追求實時性指標,這類操作系統主要有:最初由Andy Rubin開發,2005年后由Google持續改進的Android,在智能手機中得到廣泛應用;于2007年首發的、由蘋果公司推出的iOS操作系統等。而實時操作系統中,實時性是其關注的重點,這類操作系統主要有:于2014年首發的、由ARM公司出品的Mbed OS;于2003年首發的、由亞馬遜公司資助的FreeRTOS;于1992年首發的、由Jean Labrosse持續改進的μC/OS;于1989年首發的、后由NXP公司推出的MQX;上海睿賽德電子科技有限公司于2006年發布的RT-Thread(Real Time-Thread)等。
與一般運行在個人計算機或服務器上的通用操作系統相比,實時操作系統的突出特點是實時性。一般的通用操作系統(如Window、Linux等)大都是從“分時操作系統”發展而來的。在單中央處理器(Central Processing Unit,CPU)的條件下,分時操作系統的主要運行方式是,對于多個線程,CPU的運行時間被分為多個時間段,并且將這些時間段平均分配給每個線程,讓每個線程輪流運行一段時間,或者每個線程獨占CPU一段時間,如此循環,直到完成所有線程為止。這類操作系統注重所有線程的平均響應時間,而較少關注單個線程的響應時間。對單個線程來說,其注重每次執行的平均響應時間,而不關注某次特定執行的響應時間。在實時操作系統中,要求能“立即”響應外部事件的請求,這里的“立即”含義是相對于一般操作系統而言的,即在更短的時間內響應外部事件。與通用操作系統不同,實時操作系統注重的不是系統的平均表現,而是要求每個線程在最壞情況下都要滿足其實時性。也就是說,實時操作系統注重的是個體表現,更準確地講是個體在最壞情況下的表現。
- Windows Vista基礎與應用精品教程
- Linux系統架構與運維實戰
- vSphere Virtual Machine Management
- 深入理解eBPF與可觀測性
- Linux就該這么學
- Windows Server 2019 Administration Fundamentals
- Django Project Blueprints
- Cassandra 3.x High Availability(Second Edition)
- AWS SysOps Cookbook
- Heroku Cloud Application Development
- 鴻蒙HarmonyOS手機應用開發實戰
- OpenVZ Essentials
- Linux內核分析及應用
- Java EE 8 High Performance
- Hyper-V Replica Essentials