1. 程式人生 > >[uboot] (第一章)uboot流程——概述

[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