北京華人博學(xué)營銷型網(wǎng)站建設(shè)公司杭州排名優(yōu)化公司電話
???????? 全部學(xué)習(xí)匯總: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)
???????? 簡單看了一下ChibiOS的架構(gòu)介紹,感覺這種OS以及組件非常適合快速構(gòu)建一個應(yīng)用。這里做一個簡單的資料整理。。
1. 不同于其他的OS,ChibiOS提供的不僅僅是一個調(diào)度器,而且還有豐富的OS組件。
2. ChibiOS提供了兩種調(diào)度器,一個是RT另一個是NIL。后者與前者兼容,但是實現(xiàn)的機(jī)理不同,主要是為了提供更小的存儲消耗。
3. 在設(shè)計上,提供了很多庫以及抽象層的設(shè)計,可以讓應(yīng)用實現(xiàn)快速的搭建。而SB是一個沙盒功能,可以提供非安全的代碼運行環(huán)境。
4. 在應(yīng)用模型上,跟之前的筆記中這你的信息一致,還是一個單應(yīng)用多線程的模型。線程彼此之間是沒有隔離的,但是可以通過SB子系統(tǒng)處理一些不安全的應(yīng)用。不同于通用OS,這個系統(tǒng)中的應(yīng)用也沒有加載的概念。
1. 這個圖片是OS應(yīng)用的一個大的架構(gòu)圖,里面包含了很多交互關(guān)系。其中,HAL移植的部分,應(yīng)該對應(yīng)著AUTOSAR中的MCAL的部分。這里的板子抽象的部分相比熟悉的AUTOSAR的架構(gòu)圖來說,位置是顛倒的。其實也很簡單,AUTOSAR表達(dá)的是功能抽象,而這里表達(dá)的是一個訪問的流程。
2. ChibiOS是提供啟動代碼的,但是這個架構(gòu)里面的啟動代碼的位置有點特殊。是先到應(yīng)用再到OS。我覺得可能這里可以從一個實際的編碼的經(jīng)驗角度考慮,其實這個啟動代碼提供的是一個初始化的接口,這里先進(jìn)行一些初始化再啟動OS,這樣的流程應(yīng)該就理順合理了。
1. 內(nèi)核部分中可移植的部分以及通用的部分進(jìn)行了分離,這似乎是大部分的OS采用的手段。
2. 針對每一個部分進(jìn)行了介紹,從介紹中可以看到這個HAL Port Layer其實就是MCAL的概念。
3. 這里還增加了一個OS的抽象層,主要是為了HAL提供一些OS的功能。但是,這樣的功能并不是百分百綁定OS的,其實換一個其他的OS或者說是裸機(jī)程序都能夠提供一些這樣的實現(xiàn)。
4. 編譯器、芯片架構(gòu)、MCU的型號等都可能影響軟件的可移植性。
1. 不同架構(gòu)或者芯片影響可移植性,很重要的一點可能在于中斷。中斷的代碼語法、ISR本身的功能特性以及中斷系統(tǒng)的架構(gòu)不同等都可能會影響到移植性。另外,不同的開發(fā)環(huán)境中的庫文件可能也不通用。
2. ChibiOS中的設(shè)備接口進(jìn)行標(biāo)準(zhǔn)化的抽象,這個是我很喜歡也很想去體驗一下的。
3. 常用的一些外設(shè)接口,都已經(jīng)實現(xiàn)了標(biāo)準(zhǔn)化,這對于軟件的快速開發(fā)來說非常友好。
4. 在軟件實現(xiàn)的時候,不需要考慮過多的ISR的處理。不過,這方面的實現(xiàn)處理比較靈活。
5. 外設(shè)驅(qū)動的處理,在API曾經(jīng)考慮了很多超時處理。
以上就是CHibiOS架構(gòu)的一個簡單的介紹,看完之后的確覺得這個OS比我以往接觸到的任何嵌入式OS都更加讓我覺得心動。