boot loader:看名字就知道,這是在系統啓動時使用的,最重要的功能架構
就是加載操做系統。其它包括一些硬件的初始化,或者其它的一些自定義功函數
能,例如OS升級什麼的。 啓動流程: 通常的arm/MIPS 架構的CPU都操作系統
有一個固定的地址,硬件上電後,CPU就去這個地址讀取第一條指令。 接口
一般硬件上都會把這個地址鏈接在非易失存儲器(簡單的理解就是掉電不丟內存
失,通常是FLASH)上。也就是說,這個階段的代碼都是運行在FLASH上的,get
因此,這個FLASH必須是能夠隨機訪問的。這些代碼一般都是彙編寫成的,登錄
初始化CPU,內存等等硬件相關的一些指令。 內存初始化完畢後,就可變量
以將代碼拷貝到內存裏了。在內存裏運行,就能夠寫了,速度上也要快不少硬件
。 以後繼續其它設備的初始化,好比串口,網口什麼的。如今用不着的程序
設備不作初始化,等OS起來之後再說。 再日後就準備啓動OS了。嵌入式
設備爲了節省FLASH的容量,一般OS都是壓縮過的,因此boot loader就必須
將OS從FLASH上,解壓到內存當中去。而後跳轉到OS在內存中的第一個函數
中去。這個地址就是雙方約定好的了,由於boot loader並不關心OS究竟是
什麼,它只管將CPU交給OS,它的使命就結束了。若是這個地址雙方不一致
,那就完全悲劇了…… 設備驅動: 就是能夠屏蔽硬件特性,讓操
做系統中的應用程序能夠更好的操做硬件。好比如今有一塊屏,4*4個點陣
,單色。沒有驅動的時候,我只要告訴硬件,在(0,0),(0,1),(0
,3),(0,4)這幾個點亮一下,就能夠在屏幕最上方顯示一條線了。但
是應用程序不可能這樣去作啊,不可能每一個字,每條線都用點陣去畫吧。所
以,我就能夠寫一個程序,將點亮4個點封裝成函數,第一個參數做爲變量
,給操做系統。這樣應用程序只須要調這個函數,就能夠在任意地方畫一條
橫線了。字符顯示也是相似的。那什麼還要有操做系統呢,不直接給應用程
序?由於應用程序不須要關心硬件,這塊屏可大可小,或者可顯示多種顏色
。操做系統就是在中間做爲標準,抽象出一個顯示設備,底下是驅動跟硬件
配合,提供操做接口,上面是應用程序去調用接口。
在網上看到這篇好文章,但願對大學有所幫助,呵呵!
更多內容歡迎交流:15238336542 qq:2905283896(宋老師)
歡迎登陸:www.edu118.com