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