1. 程式人生 > >菜鳥的cubieboard之旅(一)--啟動流程

菜鳥的cubieboard之旅(一)--啟動流程

  到手一塊cubieboard2,一直沒怎麼玩過。之前做過一些linux的驅動,但是感覺整體把握不是很好,想借cubieboard這個學習機會,讓自己知識面全面點。

  cubieboard的資料比較雜,而且資料沒有樹莓派這麼多,所以找資料這個過程還是比較痛苦的。廢話不多說,開始吧

  A20的啟動過程大概可分為5步:Boot ROM,SPL,Uboot,Kernel,RootFileSystem。系統上電後,ARM處理器在復位時從地址0x000000開始執行指令,把板上ROM或Flash對映到這一地址。A20將啟動裝置選擇程式固化在CPU內部的一個32KB ROM中,預設的啟動時序為SD Card0,NAND FLASH,SD Card2,SPI NOR FLASH。另外通過外部的一個啟動選擇引腳可以使其跳轉到USB啟動模式。通常情況下,啟動選擇引腳狀態連線50K內部上拉電阻。在上電後,執行儲存在Boot ROM中的啟動程式碼,將自動檢測啟動選擇引腳狀態。只有當該引腳狀態為低電平時才選擇USB啟動模式。

在選擇啟動裝置後將載入並執行bootloader程式,CPU通過拷貝或對映bootloader程式到記憶體,然後執行bootloader的第一條指令。通過閱讀官方的uboot燒寫方法,發現A20通過uboot引導系統之前先載入了uboot SPL。什麼是SPL?通過查閱uboot的官網資料得知,SPL是一個迷你版的uboot,全拼為Second Program Loader。適用於SOC的內部SRAM<64K的情況,用它來載入完整的uboot程式到SDRAM,並通過完整uboot載入核心來啟動系統。其中SRAM一般指CPU內部的L1/L2或外部的L2快取記憶體,這裡即為Boot ROM,而SDRAM一般指記憶體。

SPL程式流程如下:

  1. 初始化ARM處理器
  2. 初始化串列埠控制檯
  3. 配置時鐘和最基礎的分頻
  4. 初始化SDRAM
  5. 配置引腳多路複用功能
  6. 啟動裝置初始化(即上面選擇的啟動裝置)
  7. 載入完整的uboot程式並轉交控制權

啟動裝置選擇程式的流程圖:

搞清楚了上面的概念,可以知道Cubieboard出廠已經燒寫了NandFlash中的程式,即在啟動時使用的是NandFlash。現在根據全志A20上述步驟,我們嘗試用SD Card0(即Cubieboard上卡槽中的TF卡)來啟動系統。

相關推薦

cubieboard--啟動流程

  到手一塊cubieboard2,一直沒怎麼玩過。之前做過一些linux的驅動,但是感覺整體把握不是很好,想借cubieboard這個學習機會,讓自己知識面全面點。   cubieboard的資料比較雜,而且資料沒有樹莓派這麼多,所以找資料這個過程還是比較痛苦的。廢話不多

ASP.NET MVC4 專案改造示例程式碼擴充套件使用者資訊管理

模板建立示例專案 MVC的基礎內容我就不說了,入門建議看看官方的MvcMovie示例。       開啟VS2012,【新建專案】,選擇【ASP.NET MVC 4 Web應用程式】,名稱叫MyMvc(這隨便取,但常規是公司.專案的名稱空間),按【確定】,模板選【I

與 cef 的邂逅:cef 原始碼獲取與編譯

一、引言 最近工作中涉及到了有關嵌入瀏覽器控制元件的任務,並且要求支援 H5。之前使用了 wke,但是發現其對於 H5 的支援不夠好,因此只能選擇“聞名已久”的 cef。 cef 是什麼呢: CEF 全稱 Chromium Embedded Fram

css重構

rdquo lan set 變化 部分 網站 一個 寬度 lang css重構之旅 >前言: 今年我大一,馬上就要大二了。從高三畢業暑假到大學的這一年馬上過去,馬上迎來大二生活.學習前端也有將近一年了。一昧去追求那些視覺的效果和相對高端和新穎的技術,反而忽略了最基礎

小白的linux學習

探索linux一、進入系統*)普通用戶登陸student 普通用戶,密碼student*)超級用戶登陸 —〉not listed 點擊未列出 username 提示輸入用戶名稱 —〉root root 為系統超級用戶 passw

dotNet程序員的Java爬坑

是我 方法 轉java 自己的 java pri 也好 工作 計劃     仔細想了下還是轉java吧,因為後期不管是留在北京也好還是回老家也好,java的工作都會好找一點。現在的工作主要還是寫.net,目標是下一次離職的時候可以找到一份全職的java工作,我一直都覺得實踐

webpack入坑不是開始的開始

targe base 增加 -i pre 版本 uil 靜態頁 obi 最近學習框架,選擇了vue,然後接觸到了vue中的單文件組件,官方推薦使用 Webpack + vue-loader構建這些單文件 Vue 組件,於是就開始了webpack的入坑之旅。因為原來沒有用過

RabbitMQ學習

RabbitMQ學習總結(一) RabbitMQ簡介 RabbitMQ是一個訊息代理,其接收並轉發訊息。類似於現實生活中的郵局:你把信件投入郵箱的過程,相當於往佇列中新增資訊,因為所有郵箱中的信件最終都會彙集到郵局中;當郵遞員把你的新建傳送給收件人的時候,相當於訊息的轉發。 RabbitMQ中

Python學習

Python的簡介 Python是一種面向物件的、動態的指令碼語言,可用來設計網頁和開發後臺功能。其創始人Guido van Rossum於1989年聖誕節期間創造了這門語言。 (圖片來自百度) Python的種類 CPython Jython IronPython PyPy …… 與J

小程式wepy踩坑---- thirdScriptError sdk uncaught third Error module "npm/lodash/_nodeUtil.js

     近期一直在學小程式,作為新手,比較了下mpvue和wepy兩個小程式框架,mpvue作為美團剛出來的vuejs開發看起來很不錯,學習成本很低,但是對於在實際專案開發中,mpvue剛出來,很多資料,比如踩坑,比較少,而we

我的現代Javascript啟程、面向物件的現代Javascript

    Javascript曾經被認為是一門小玩具似的指令碼語言。大部分   的程式設計師都覺得它只是輔助工具,用來頁面端校驗——僅此   而已。隨著Javascript語言的演變,其功能越來越強大。直到  

記錄我的Python學習關於turtle庫的基本用法

關於庫函式的匯入方法:①import <> ②import <> as <> ③ from tutle import <>   1、turtle.setup(width,height,startx,starty)  /

dart

console sta 環境安裝 ria odi 等價 app func tar 前言 最近在看 dart 了,本著 “紙上得來終覺淺,絕知此事 markdown” 的原則,準備邊學邊寫,寫一個系列,這是第一篇。學習過程中主要是參考 A Tour of the Dart L

Spring Boot 探索——Spring Boot 簡介

一、什麼是Spring Boot 隨著技術日新月異的發展,如今的軟體設計已不想曾經那般單一。業務複雜,功能繁瑣,大量三方元件的相互整合,成為了開發的一大難題。幸而,Spring Boot如同一道曙光,為我們java開發者帶來了福音,讓我們擺脫專案構架時各種配置的鬧心,得以專

學習Pytorch----

感覺很棒哦,大家可以動動手指到GitHub上點個Star偶~~ 言歸正傳,這是第一次記錄一個深度學習框架的部落格,加上作者自己的觀點和實踐,認真的分析和思考,之前都是寫在本子上@@ 1.Tensors張量 張量是用於GPU加速的類似於Numpy中ndarray的資料

C語言入門

特殊的迴圈語句 ,讓for迴圈開始的方法: 將sum初始化為0;或者先在迴圈體外讀第一個數 注意要先判斷再運算,避免最後一個數據發生錯誤 for(sum=0;n!=-1;) { sum+=n; scanf(“%d”, n); } 輸入x,y之間的閏年 i

大疆無人機Android版SDK開發踩坑----前言

  最近一段時間一直在做大疆無人機安卓版開發,這水也是挺深的,不仔細看官網SDK的介紹就會遇到各種各樣的坑,簡單記錄一下,希望可以讓其他人少走一些彎路。   安卓端用到的SDK大概有兩種:Android SDK和Android UX SDK   Android SDK(官網介紹):   開發人員可以通過SDK

Java架構師

夜光序言:   如果世界和你,都掉進了河裡,我一定先救你,然後忘記世界的呼吸~       正文: MVC框架的演變   我們安裝這個外掛解決沒有tomcat的問題,因為targ

小程式wepy踩坑---- thirdScriptError sdk uncaught third Error module "npm/lodash/_nodeUtil.js

     近期一直在學小程式,作為新手,比較了下mpvue和wepy兩個小程式框架,mpvue作為美團剛出來的vuejs開發看起來很不錯,學習成本很低,但是對於在實際專案開發中,mpvue剛出來,

Spring

Spring兩個重要的思想:依賴注入和麵向切片 看書後個人見解: 相同點:都是為了解耦,當然耦合度要適度不然都沒有關係和邏輯了 不同點:依賴注入注重解決物件和物件之間的解耦,每個物件不需