1. 程式人生 > >bootstrap簡單介紹

bootstrap簡單介紹

bootstrap 是最初級的引導,旨在初始化CPU,簡單時鐘,堆椎,目標是讓CPU處於可以正常執行\r 
咱通常說的uboot那樣的bootloader實際上是集成了很多功能及驅動的程式,如串列埠,網路等,目的是為載入和除錯kernel建立一個良好環境

基於ARM的嵌入式系統的啟動都需要載入程式,引導過程可以有兩種,一種是先執行小型的bootstrap完成所謂的low level初始化,再呼叫如Uboot,RedBOOT等功能強大的載入程式進行全面的初始化,設定作業系統核心的載入地址和執行引數等等;另外一種是直接使用Uboot等載入程式兩步合成一步完成。bootstrap只是針對ARM CPU進行初始化,直接根據晶片的引腳打交道,不涉及norflash,nandflah,SDRAM 等裝置的驅動程式,所以整個程式比較簡明易懂;而UBOOT比較龐大,對於初學者而言想一下子完全弄清楚整個脈絡,知道移植時候需要在何處增加什麼程式碼是很有難度的,所以建議入門者還是先採用這種分兩層引導的結構。下面對ATMEL官方提供的基於at91sam9260的bootstrap進行簡要分析。

     bootstrap的結構有點類似於UBOOT,其中crt0_gnu.S完成的功能和UBOOT中cpu/arm926ejs下的start.S類似:設定ARM中斷向量,如果定義了norflash啟動則將bootstrap搬移到SDRAM中,然後設定始終,初始化資料段,bss段,最後跳轉到main.c執行。
     main.c首先呼叫hw_init()完成硬體初始化,該部分主要任務完成DEBUG串列埠配置,這樣就可以同串列埠輸出在PC的超級中斷上看到執行資訊了;接下來配置禁用看門狗後配置時鐘和PLL,這個部分的資料很重要,需要仔細查閱資料手冊;然後是SDRAM控制器引數設定和協處理器CP15的設定;其次是SDRAM的初始化,主要是根據電路連線設定GPIO的功能。main.c的第二步是根據選擇的啟動方式複製印象檔案到SDRAM中,根據設定的啟方式初始化NORFLASH ,NANDFLASH或者是DATAFLASH。第三部分根據需要解壓縮映像檔案。然後跳轉到定義的核心執行地址執行。到此bootstrap功德圓滿。
     通過對bootstrap原始碼的閱讀有助於理解ARM的啟動過程,為裁剪和移植UBOOT原始碼打下基礎。嵌入式的學習還長路漫漫,先寫到這,繼續學習^_^!
 


相關推薦

前端框架Bootstrap簡單介紹

我們 css bootstrap img alt 現實 效果 blog image 下載: 解壓之後: 把這些文件拷貝到項目中 頁面使用時 只需要引入: 然後我們就可以參考官網來設計需要的前端頁面了 設計一個按鈕

bootstrap簡單介紹

bootstrap 是最初級的引導,旨在初始化CPU,簡單時鐘,堆椎,目標是讓CPU處於可以正常執行\r  咱通常說的uboot那樣的bootloader實際上是集成了很多功能及驅動的程式,如串列埠,網路等,目的是為載入和除錯kernel建立一個良好環境 基於ARM

Bootstrap 全域性樣式的簡單介紹

     Bootstrap這個框架相信對於前端來說都不陌生,之前剛接觸時就只是“拿來主義”:需要用到時就檢視下Bootstrap的官網文件直接將需要的外掛或者樣式拷貝下來用,最近終於有機會好好靜下心來了解這個框架。對Bootstrap的認知也有了一定的改變,下面是本人在學

簡單介紹vue和bootstrap整合

一,提前把bootstrap的包下載下來,解壓好。 二,在構建完成vue專案後,需要下載jquery外掛:cnpm install jquery --save-dev 接著執行下面的3個命令: cnpm install style-loader --save-dev

<java>枚舉的簡單介紹

pic spi str spa 枚舉類 lee string line 舉例 1.枚舉,enum關鍵字,相當於public final static. 2.舉例: 首先定義了一個名為spiciness的枚舉類型。 public enum Spiciness {

JSON的簡單介紹以及C語言的JSON庫使用

編程 delet 逗號 緩沖區 tdi 以及 and 項目 占用 JSON概述   JSON: JavaScript 對象表示法( JavaScript Object Notation) 。是一種輕量級的數據交換格式。 它基於ECMAScript的一個子集。 JSON采

Redis簡單介紹以及數據類型存儲

博客 個數 取值 rom 特點 而且 ring oid wan 因為我們在大型互聯網項目其中。用戶訪問量比較大,比較多。會產生並發問題,對於此。我們該怎樣解決呢。Redis橫空出世,首先,我們來簡單的認識一下Redis。具體介紹例如以下所看到的:

值得推薦的android開發框架簡單介紹

ron 事件 能開 android 開發人員 服務端開發 kjpush 流量 htm 一些總結出來的Android高速開發框架,所有都是開源框架,附帶項目地址,是開發學習的絕佳資料。 Direct-Load-apk項目 項目主頁地址:http://www.kymjs

Brief introduction to Java String Split 【簡單介紹下Java String Split】

a-z include cte eve class some sim string arr Split is a common function in Java. It split a full string to an array based on delimeter.

簡單介紹下微信中如何查看對方是否將你拉黑刪除?

黑名單 聯系人 微信 現如今微信使用的人越來越多,朋友圈中的好友也有成百個了,有很多人長時間不聯系了,想知道對方是否將你拉黑刪除了嗎?那在微信上如何查看清理那些把你刪除的好友呢?我們一起來學習下。微信上如何查看清理那些把你刪除的好友?第一種:單個發送信息向好友發送一條消息,驗證好友是否將你刪除,如

C++簡單介紹

必須 cpp rpc 跳過 動態 resolved line 實際應用 cast 一、怎樣用C++的源文件產生一個可運行程序 一個C++程序由一個或者多個編譯單元組成。每一個編譯單元都是一個獨立的源碼文件。一般是一個帶.cpp的文件,編譯器每次編一個文件編譯單元,生成一

FreeSWITCH第三方庫(音頻)的簡單介紹(一)

優勢 帶寬 blog 網絡 ndt 目標 領域 合成 通道 FreeSWITCH使用了大量的第三方庫,本文檔主要介紹音頻相關庫的信息: 視頻相關庫的信息介紹參考:http://www.cnblogs.com/yoyotl/p/5488890.html 其他相關庫的信

Spark調研筆記第3篇 - Spark集群相應用的調度策略簡單介紹

executor enabled max 靜態 air apache div pan 相關 Spark集群的調度分應用間調度和應用內調度兩種情況,下文分別進行說明。 1. 應用間調度 1) 調度策略1: 資源靜態分區 資源靜態分區是指整個集群的資源被預先劃分為多個par

網站壓力測試工具 Webbench簡單介紹

cgi 靜態頁面 服務 動態頁面 不同 傳輸數據 一個 php bench Webbech能測試處在相同硬件上,不同服務的性能以及不同硬件上同一個服務的運行狀況。Webbench的標準測試可以向我們展示服務器的兩項內容:每秒鐘相應請求數和每秒鐘傳輸數據量。Web

svn簡單介紹

upd com control avi 理解 update 權限控制 分享 osi 版本號控制(Revision control)是維護project藍圖的標準做法,能追蹤project藍圖從誕生一直到定案的過程。是一種記錄若幹文件內容變化。以便將來查閱特定版本號修訂情

javascript簡單介紹

ack back ole nbsp sub cati script int get ECMAScript  1.語法  2.變量:只能使用var定義,如果在函數的內容使用var定義,那麽它是一個局部變量,如果沒有使用var它是一個全局的。弱類型!  3.數據類型:原始數

Swift簡單介紹 教程

div cap ack 語句 apt 聲明數組 [1] unit ++i Swift是什麽? Swift是蘋果於WWDC 2014公布的編程語言。這裏引用The Swift Programming Language的原話: Swift is a new progr

C#之out修飾符、ref修飾符、params修飾符的簡單介紹

c# 一個 邏輯 本地 style 逗號 註意 可變 修飾 一、out修飾符   1、調用一個帶有輸出參數的方法也需要使用out 修飾符,但是作為輸出變量傳遞的本地變量在將他們作為輸出變量傳遞前不需要賦值(因為調用後會改變或丟失),編譯器允 許你傳遞未分

activeMQ的簡單介紹

總線 tom 高速 -s 集群 協議 jboss resource 客戶端 1.什麽叫activeMQ? ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實

ssh的簡單介紹

就會 wiki and 機會 得到 book cat 設備名 客戶端使用 SSH簡單介紹與運用 一、什麽是SSH? SSH是一種網絡協議,用於計算機之間的加密登錄。 OpenSSH 提供了以下幾個工具:   1. ssh:實現 SSH 協議,用以建立安全連接,它替代了