一、功能簡介
boot程式主要功能就是系統各方面的初始化,主要包含如下幾方面。
1、 設定cpu模式
在arm體系中cpu工作模式主要分為7種,分別是:
(1) 使用者模式(usr,user mode):arm處理器正常的程式執行狀態。
(2) 快速中斷模式(fiq,fast interrupt request mode):用於高速資料傳輸或通道處理,當出發快速中斷時進入該模式。
(3) 外部中斷模式(irq,interrupt request mode):用於通用的中斷處理,當觸發外部中斷時進入該模式。
(4) 管理模式(svc,supervisor mode):作業系統使用的保護模式,在系統復位或者執行軟中斷指令swi時進入。
(5) 資料訪問終止模式(abt,abort mode):當資料或指令預取終止時進入該模式,可用於虛擬儲存及儲存保護。
(6) 系統模式(sys,system mode):執行具有特權的作業系統任務。
(7) 未定義指令終止模式(und,undefined mode):當未定義的指令執行時進入該模式,可用於支援硬體協處理器的的軟體**。
在此過程中主要是將cpu設定成svc模式。
2、 關閉看門狗
看門狗(watch dog)一般是個硬體模組,其作用是,在嵌入式作業系統中,很多應用情況是系統長時間執行且無人看守,為防止系統宕機,看門狗會幫自 動重啟系統。其實現原理簡單來說就是硬體上有個記錄超時的功能,然後要求使用者每隔一定的時間對其進行操作,比如往裡面寫入一些固定的值之類的,俗稱「餵狗」,當硬體判斷超時了還沒有被餵狗,看門狗就會重新啟動系統,而我們在boot初始化階段,要是不關閉看門狗的話就需要單獨寫乙個餵狗程式,相比寫餵狗程式而言,關掉它更實在些。
3、 關閉中斷
關中斷即將對應的中斷暫存器設定為disable即可。
4、 設定堆疊sp指標
設定sp指標就只乙個動作,即讓sp等於某個位址即可,但背後的邏輯是自己要先弄清楚當前系統是如何使用堆疊的,堆疊生長方向是向上還是向下。在給sp賦值前要確保對應的位址空間是專門分配給堆疊使用的,保證堆疊的大小相對合適。
5、 清除bss段
在計算機系統中資料會按照不同的用途存放在不同的區域,其區域主要分為如下幾類。
(1) bss段(bss segment):通常是指用來存放程式中為初始化的全域性變數的一塊記憶體區域。bss段屬於靜態記憶體分配。
(2) text段(code/text segment):通常是指用來存放程式執行**的一塊記憶體區域。該部分區域大小在程式執行前就已經確定了,通常該區域屬於唯讀(某些架 構也允許寫,及允許修改程式)。
(3) 堆(heap):堆是用於存放程序執行中被動態分配的記憶體段,它的大小並不固定,可動態擴張或縮減。當程序呼叫malloc等函式分配記憶體時,新分配的記憶體就新增到堆上(堆被擴張);當利用free等函式釋放記憶體是,被釋放的記憶體從堆中被剔除(堆被縮減)
(4) 棧(stack):棧又稱堆疊,是使用者存放程式臨時建立的區域性變數,其特點是先進先出(fifo),所以棧方便用來儲存/恢復呼叫現場。
該過程中就是將對應的bss段都設定為0,其對應的位址空間就是哪些未被初始化的全域性變數之類的位址。
6、 異常中斷處理
該過程就是實現對應的常見的那些處理中斷的部分內容,boot在初始化的時候,主要目的只是初始化系統及引導系統,所以中斷處理部分的**往往相對比較簡單。
uboot原始碼中start.s原始碼詳解
ARM體系結構
arm是 advanced risc machines 高階精簡指令系統處理器 的縮寫,是arm公司提供的一種微處理器智財權 ip 核 arm既可以認為是乙個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字 arm微處理器的特點 1 體積小 低功耗 低成本 高效能 2 支援t...
ARM體系結構
一 arm公司簡介 arm公司成立於1990年11月,主要設計arm系列risc處理器核心 arm公司主要做授權,不生產任何一款具體的晶元。二 arm公司產業鏈 arm 將技術授權給合作廠商 廠商 生產各具特色的具體晶元,廠商就包括飛利浦 英特爾 三星等 三 arm微處理器的應用領域 工業控制 無線...
ARM 時鐘體系
以stm32f4的時鐘樹為例,如下圖所示arm的時鐘源一般有四種 綠圈 內部低速時鐘 lsi low speed inter 內部高速時鐘 hsi high speed inter 外部低速時鐘 lse low speed external 外部高速時鐘 hse high speed externa...