9月18日韋東山老師B站直播答疑問(wèn)題錦集
鴻蒙支持多種內(nèi)核,Linux是其中之一,但是鴻蒙絕對(duì)不是Linux。
liteos-a是輕量級(jí)的操作系統(tǒng),不是微內(nèi)核。
所謂微內(nèi)核,是把各種服務(wù)用進(jìn)程來(lái)實(shí)現(xiàn)。比如文件系統(tǒng),在linux和liteos-a里面都是放在內(nèi)核里面實(shí)現(xiàn)的;對(duì)于微內(nèi)核而言就可以用一個(gè)應(yīng)用程序來(lái)實(shí)現(xiàn)文件系統(tǒng)的功能,這樣的話(huà)假設(shè)應(yīng)用程序崩潰了也不會(huì)影響到整個(gè)操作系統(tǒng)。微內(nèi)核有個(gè)好處,就是系統(tǒng)可能更加強(qiáng)壯;但是微內(nèi)核也有一些缺點(diǎn),就比如說(shuō)某個(gè)應(yīng)用程序要去讀寫(xiě)文件,我還得給另外一個(gè)應(yīng)用程序發(fā)消息,發(fā)各種數(shù)據(jù),這就導(dǎo)致系統(tǒng)運(yùn)行慢,效率低。韋老師是怎么知道拷貝uboot里面的代碼?
u-boot就是一個(gè)非常復(fù)雜的裸機(jī)程序,里面肯定會(huì)對(duì)處理器進(jìn)行初始化,并初始化各種硬件,所以參考uboot來(lái)設(shè)置cpu比較好。liteos-a和Linux內(nèi)核并不是共存的關(guān)系,比如手機(jī)上使用Linux,物聯(lián)網(wǎng)上使用liteos-a,這是在華為的框架構(gòu)思中這樣做的。因?yàn)長(zhǎng)inux啟動(dòng)比較慢,liteos-a啟動(dòng)時(shí)間較快,所以對(duì)于物聯(lián)網(wǎng)設(shè)備使用liteos-a比較好。鴻蒙會(huì)把韋老師PPT中提到的那一套系統(tǒng)做得既支持liteos-a又支持linux。如果鴻蒙這套系統(tǒng)完全開(kāi)放,大家會(huì)發(fā)現(xiàn)鴻蒙與linux和安卓完全不一樣。鴻蒙確實(shí)是針對(duì)物聯(lián)網(wǎng)的。
鴻蒙對(duì)比linux的不同點(diǎn):實(shí)際上,所有的內(nèi)核相對(duì)于linux來(lái)說(shuō)支持的外設(shè)不是很多。
free RTOS過(guò)于簡(jiǎn)單,和liteos-a完全沒(méi)有辦法比較。Free-RTOS不支持MMU,它只實(shí)現(xiàn)了任務(wù)調(diào)度,內(nèi)存管理和任務(wù)通訊這些簡(jiǎn)單的功能。
鴻蒙系統(tǒng)里面使用的uboot基本上不用改,因?yàn)閡boot只不過(guò)是為了把鴻蒙的內(nèi)核讀入內(nèi)存來(lái)啟動(dòng)而已,不需要去修改。
liteos-a可以不使用uboot,任何的操作系統(tǒng)都可以在前面加一小段啟動(dòng)代碼,把uboot扔掉。我們之所以使用uboot是因?yàn)樗容^簡(jiǎn)單,比如我們可以使用uboot的USB下載功能就可以非常方便的調(diào)試程序。如果你不想使用uboot的話(huà),完全可以把它扔掉。
怎么判斷l(xiāng)iteos-a是實(shí)時(shí)操作系統(tǒng):老師也沒(méi)有去判斷過(guò),只是咨詢(xún)了華為內(nèi)部,華為官方說(shuō)“是”。
MMU跟實(shí)時(shí)沒(méi)有關(guān)系。MMU只是為了讓APP之間互相隔離,讓APP和內(nèi)核空間隔離。實(shí)時(shí)性和MMU沒(méi)有關(guān)系。
怎么加啟動(dòng)代碼:實(shí)際上對(duì)于6ull來(lái)說(shuō),我們之前寫(xiě)了很多裸機(jī)程序,只需要在這些程序前面加一個(gè)頭部就可以了。對(duì)于6ull來(lái)說(shuō),其內(nèi)部有一個(gè)固件,這個(gè)固件會(huì)根據(jù)你燒錄的文件的頭部把你的程序加載到內(nèi)存來(lái)啟動(dòng),所以只需要加頭部就可以了,不需要添加額外的啟動(dòng)代碼。
liteos-a一定要用MMU。它里面也有設(shè)備樹(shù)的概念,不過(guò)和linux相比這個(gè)概念比較簡(jiǎn)化,也可以做到設(shè)備樹(shù)同樣的功能。
在liteos-a里面并沒(méi)有明顯的總線(xiàn)模型。沒(méi)有這么分。
GPIO子系統(tǒng)不是輸入子系統(tǒng)。它只是為了控制GPIO,比如讓某個(gè)引腳配置成輸出輸入而已。輸入子系統(tǒng)實(shí)際上就是例如觸摸屏、按鍵這類(lèi),叫做輸入子系統(tǒng)。
Cortex-M不可以使用liteos-a,只能使用liteos-m。
后面錄播課程將會(huì)有l(wèi)ites-a的詳細(xì)講解。但是會(huì)優(yōu)先講Linux。
Liteos-a和linux的開(kāi)發(fā)非常類(lèi)似,只不過(guò)linux做的比較完善,結(jié)構(gòu)考慮的比較完美,也導(dǎo)致linux的代碼很龐大。
大家不要總是將鴻蒙和linux比較。比如我們的windows,有桌面,有各種應(yīng)用程序,windows一裝到電腦上去,普通人就可以使用了;但是Linux呢?linux只是一個(gè)內(nèi)核,在linux上面還要裝各種應(yīng)用程序,就比如ubuntu,就是在linux內(nèi)核之上,開(kāi)發(fā)了一套桌面一套應(yīng)用程序,這才叫ubuntu;鴻蒙支持多種內(nèi)核,可以認(rèn)為鴻蒙對(duì)標(biāo)windows,安卓,ubuntu,但是它不是用來(lái)對(duì)標(biāo)linux的。
Liteos-a啟動(dòng)快得益于這兩點(diǎn),首先它的各個(gè)驅(qū)動(dòng)層次沒(méi)有搞的那么復(fù)雜;第二,它掛載根文件系統(tǒng)時(shí)是用一個(gè)進(jìn)程來(lái)實(shí)現(xiàn)的,所以這樣就比較快??梢哉J(rèn)為它是使用進(jìn)程來(lái)進(jìn)行各種初始化,這樣可以同步進(jìn)行。
錄制完6ull的課程之后就將鴻蒙移植到STM32MP157上去。
匯編不需要掌握很深,掌握一點(diǎn)點(diǎn)就可以了。要做嵌入式操作系統(tǒng),嵌入式底層開(kāi)發(fā),匯編還是要懂一點(diǎn)點(diǎn)的。匯編并沒(méi)有想象中的那么復(fù)雜。
用內(nèi)存模擬flash:把一塊內(nèi)存劃出來(lái),然后仿照f(shuō)lash的驅(qū)動(dòng)程序,提供讀函數(shù),寫(xiě)函數(shù),擦除函數(shù)就可以了。
先學(xué)liteos-a還是linux:建議先學(xué)linux,如果你已經(jīng)有了基礎(chǔ),或者對(duì)RTOS比較感興趣的話(huà),那liteos-a可以學(xué)一下,因?yàn)楫吘筶iteos-a的產(chǎn)品還沒(méi)有出來(lái),我們可以先準(zhǔn)備著,但是目前恰飯的東西還是linux。
技術(shù)交流群(鴻蒙開(kāi)發(fā)/Linux/嵌入式/驅(qū)動(dòng)/資料下載)
QQ群:869222007