[uboot] (第一章)uboot流程——概述
建議先看《[project X] tiny210(s5pv210)上電啟動流程(BL0-BL2)》,根據例子瞭解一下上電之後的BL0\BL1\BL2階段,以及各個階段的執行位置,功能。
=================================================================================
一、bootloader & uboot
1、bootloader的概念
Bootloader是在作業系統執行之前執行的一段小程式。而這段小程式的最終目的,正確地設定好軟硬體環境,使之能夠成功地引導作業系統。
2、bootloader的核心功能
bootloader的核心功能就是引導作業系統,部分工作如下
- 初始化部分硬體,包括時鐘、記憶體等等
- 載入核心到記憶體上
- 載入檔案系統、atags或者dtb到記憶體上
- 根據作業系統啟動要求正確配置好一些硬體
- 啟動作業系統
3、bootloader的monitor功能
上述2是bootloader的核心功能,也就是引導作業系統的功能。
但是部分bootloader還支援monitor功能,提供了更多的命令列介面,具體部分功能如下:
- 進行除錯
- 讀寫記憶體
- 燒寫Flash
- 配置環境變數
- 命令引導作業系統
4、嵌入式幾種常見的bootloader
- uboot
這也是最常見的bootloader,開源,常用於ARM,MIPS等平臺。
支援monitor功能,也是在專案project X中,使用的bootloader
所以後續兩節會針對這個bootloader進行說明 - superboot
不開源,友善之臂的tiny210程式碼中預設使用這個bootloader - LK(Little Kernel)
常用於高通平臺,支援monitor功能。
二、uboot-spl & uboot
1、uboot-spl
由uboot編譯生成,對應於BL1階段,也就是BL1的映象,uboot-spl.bin。
根據《[project X] tiny210(s5pv210)上電啟動流程(BL0-BL2)》,其程式碼運行於IRAM中
- 主要工作有:
- 初始化部分時鐘(和SDRAM相關)
- 初始化DDR(外部SDRAM)
- 從儲存介質上(比如SD\eMMC\nand flash)將BL2映象載入到SDRAM上
- 驗證BL2映象的合法性
- 跳轉到BL2映象所在的地址上
後續會從編譯和程式碼流程兩方面來介紹uboot-spl。
對應文章:
《[uboot] (第二章)uboot流程——uboot-spl編譯流程》
《[uboot] (第三章)uboot流程——uboot-spl程式碼流程》
2、uboot
由uboot編譯生成,對應於BL2階段,也就是BL2的映象,uboot.bin。
根據《[project X] tiny210(s5pv210)上電啟動流程(BL0-BL2)》,其程式碼運行於SDRAM中.
- 主要工作有:
- 初始化部分硬體,包括時鐘、記憶體等等
- 載入核心到記憶體上
- 載入檔案系統、atags或者dtb到記憶體上
- 根據作業系統啟動要求正確配置好一些硬體
- 啟動作業系統
- monitor工作,主要是處理命令列的命令,以下是部分操作:
- flash操作
- 環境變數操作
- 啟動操作
後續會從編譯、程式碼整體流程以及部分功能的具體流程來介紹uboot-spl。
對應文章:
《[uboot] (第四章)uboot流程——uboot編譯流程》
《[uboot] (第五章)uboot流程——uboot整體程式碼流程》
相關推薦
[uboot] (第一章)uboot流程——概述
建議先看《[project X] tiny210(s5pv210)上電啟動流程(BL0-BL2)》,根據例子瞭解一下上電之後的BL0\BL1\BL2階段,以及各個階段的執行位置,功能。 ===================================
[mmc subsystem] mmc core(第一章)——概述
========================================================================================================= 一、mmc core簡單說明 對應
Python學習系列 (第一章):Python 的簡介
python 學習一: Python 的簡介: python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。二:Python的應用領域: web 開發: Djang
【python】(第一章)1.4 數字和表達式
python以下內容是我學習《Python基礎教程》第2版 這本書所寫的筆記 轉載請註明出處1.>>> 2.75%.50.25【不同】C語言中取余運算必須為整數,不能是浮點型2.>>>(-3)**29【不同】C語言中pow (double x,double n);(將返回
java偽代碼 (第一章)
引用 class 組織 stat 事件 bsp void 大道至簡 這一 在《大道至簡》第一章中,周愛民先生引用一則《愚公移山》的寓言,引出了編程的根本:順序、選擇、循環。湯問篇中所述的愚公移山這一事件,我們看到了原始需求的產生---“懲山北之塞,出入之迂”。愚公一行人“聚
I3C 總線協議詳細解析(第一章)
同時 ble 如果 數據 結構 一中 替換 erro 移動設備 目前隨著手機等移動設備包含的sensor越來越多,傳統應用在sensor上的I2C/SPI接口的局限性也越來越明顯,典型的缺陷如下: 1、sensor等設備的增加,對控制總線的速度和功耗提出
java-web學習筆記(第一章)
第一章 靜態網站 文件 jdk cat CA 結果 靜態 web入門 第一章:javaweb入門??1,靜態網站和動態網站的區別??2,知道c/s結構和b/s結構??3,web應用程序的處理過程:????用戶通過瀏覽器向服務器發送請求;????服務器端處理用戶的請求;???
Python學習(第一章)
left cccccc tro 告訴 str pad 初始設置 所在 自動補全 1. Tab鍵 可以對命令自動補全 2. 查看Python的內置函數bif ,用help(int)查看內置函數用法 dir(__builtins__) 3. Pycharm拓展: >1
阿裏雲ECS學習(第一章)
fff 成本 保護 簡單 定位 遷移 shadow 伸縮 每一個 第一章:彈性計算服務ECS概要介紹一:掌握雲服務器ECSECS產品介紹:彈性計算服務(Elastic Compute Service,簡稱ECS):是一種處理能力可彈性伸縮的計算服務。與傳統服務器相比,更加簡
為什麼我要放棄javaScript資料結構與演算法(第一章)—— JavaScript簡介
資料結構與演算法一直是我算比較薄弱的地方,希望通過閱讀《javaScript資料結構與演算法》可以有所改變,我相信接下來的記錄不單單對於我自己有幫助,也可以幫助到一些這方面的小白,接下來讓我們一起學習。 第一章 JavaScript簡介 眾所周知,JavaScript是一門非常強大的程式語言,不僅可以用於
網路作業系統課後習題(第一章)
1.什麼是網路作業系統?網路作業系統具體有哪些基本功能? 答:(1)作業系統(Operating System, OS)管理著計算機系統的全部軟硬體資源,對程式的執行進行控制, 能夠使使用者方便地使用硬體提供的功能,使硬體的功能發揮得更好。
吳恩達機器學習(第一章)
機器學習可以分為監督學習和無監督學習兩大類。 一、監督學習 監督學習就是在資料中有特定標註,會對資料進行分類,比如癌症例子。監督學習得到的結果可以預測某個新資料對應的結果(線性迴歸)或是該資料屬於哪一類(邏輯迴歸)。比如癌症的預測,房價的預測等。 圈和叉就分別標識兩類資料,即在學習
Effective Objective-C 2.0 總結與筆記(第一章)—— 熟悉Objective-C
第一章:熟悉Objective-C 本章主要是對Objective-C進行一個瞭解,通過介紹Objective-C的語法,來講解Objective-C的基礎知識。 第1條:瞭解Objective-C語言的起源 Objective-C語言採用“訊息結構”而非“函式呼叫”
記錄-統計學習方法(第一章)
一、統計學習 統計學習的目的 統計學習的方法有哪些 統計學習方法的三要素 統計學習方法的使用步驟 統計學習方法、統計學習理論、統計學習應用的概念 統計學習在科學技術中的重要性 二、監督學習 輸入空間、輸出空間以及特徵空間 迴歸問題、分類問題以及標
Rust Cookbook(譯):讓我們再次進行系統程式設計(第一章)
在本章中,我們將介紹以下配方: 在Linux和macOS中設定Rust 在Windows中設定Rust 建立你的第一個Rust程式 定義變數賦值 設定布林值和字元型別 控制小數點,數字格式和命名引數 執行算術運算 定義可變變數 宣告並執行字串操作 在Rust中
大學計算機第七版讀書筆記(第一章)
大學計算機精簡內容第一章 1,計算裝置 (1)算籌:追溯到2000多年前的春秋戰國時代,世界上最早的計算工具。 (2)算盤:第一種手動式計數器,最早的數字計算機,珠算口訣是最早的體系化演算法。 (3)計算尺:1622年英國的奧特瑞德發明,可執行加減乘除指數三角
【C#】手把手系列|實現五子棋對戰(第一章)
本人(ID:蒸發傑作)旗下所有文章均放棄版權,請任意使用。只是如果您覺得,看了我的文章,有所收穫的話,不妨點個贊,寫個評論。這是對我最大的支援。 開部落格的時間也不短了。同樣的,學習程式設計的時間也不短了。但相比於程式編寫的進步,部落格撰寫的速度卻還有些落後。這裡開啟一個新的專題,
JavaWeb 入門到精通 Servlet & JSP(第一章)
之前就計劃過在部落格記錄自己的學習筆記,一直因為各種原因耽擱了(其實是因為懶 -_-),今天終於發表了第一遍筆記,希望後面能夠一直堅持下去!這次就先從最近學的東西發起,以後慢慢補充之前學習的知識。 一、
redis action筆記(第一章)
轉自:https://blog.csdn.net/wangnan9279/article/details/56667198) 第一章:初識redis reids簡介 redis是一個速度非常快的非關係資料庫,他可以儲存鍵與5種不同型別的值之間的對映,可以將
Java程式設計師必知必會的Linux知識——Linux基礎命令(第一章)
一、什麼是Linux?什麼是Windows? 簡單的來說,Linux這個單詞指的是Linux核心(kerhal),Windows指的是Window核心。而Linux系統則指的是Linux核心+Gnu組織的軟體。Windows系統指的是Linux核心+Windows平臺釋出的軟體。 二、L