1. 程式人生 > >A10/A20 Bootloader載入過程分析

A10/A20 Bootloader載入過程分析

上面羅嗦了這麼多,其實就是為了將uboot和kernel燒寫到TF卡上並能夠啟動,OK,讓我們先從分割槽開始:

A20 晶片上電啟動的時候,會讀取SD卡最前面的 1M 內容,從而得到 bootloader,所以我們需要把 u-boot 寫到SD卡的前1M區間。

其中詳細的SD卡布局如下:

起始 大小 用途
0 8KB 存放分割槽表等內容
8 24KB SPL loader
32 512KB u-boot
544 128KB environment
672 352KB 保留
1024 - 用於剩餘分割槽

接下來,我們開始使用fdisk進行分割槽(由於sfdisk對部分TF不相容,故除非你真的知道怎麼用sfdisk,否則不要使用):

將TF卡插到電腦上並確認裝置名,為不至於混淆,我們使用sdX代替,您需要根據自己的情況修改,如sdb:

card=/dev/sdX
dd if=/dev/zero of=${card} bs=1M count=1      # 把SD卡前1M的區域填充為0,預留給 u-boot
sfdisk -R ${card}                             # 重新讀取${card}
fdisk ${card}                                 #使用fdisk進行分割槽

具體分割槽步驟如下:

建立第一個分割槽

[email protected]
:~/src/u-boot-sunxi# fdisk ${card} Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x911332e8. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n #鍵入n然後回車 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): #直接回車 Using default response p Partition number (1-4, default 1): #直接回車 Using default value 1 First sector (2048-15278079, default 2048): #直接回車 Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-15278079, default 15278079): +64M #鍵入+64M後回車,即分割槽大小為64M

建立第二個分割槽

Command (m for help): n                                   #鍵入n然後回車
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):                                       #直接回車
Using default response p
Partition number (1-4, default 2):                        #直接回車 
Using default value 2
First sector (133120-15278079, default 133120):           #直接回車
Using default value 133120
Last sector, +sectors or +size{K,M,G} (133120-15278079, default 15278079):      #直接回車,即第二個分割槽使用全部剩餘空間
Using default value 15278079

接下來指定分割槽型別:

Command (m for help): t                                   #鍵入t然後回車
Partition number (1-4): 1                                 #鍵入1然後回車,即指定第一個分割槽
Hex code (type L to list codes): c                        #鍵入c然後回車,即指定第一個分割槽為vfat
Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): w                                   #鍵入w然後回車,儲存分割槽表
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

格式化分割槽:

mkfs.vfat ${card}1
mkfs.ext4 ${card}2                                        #需要稍等片刻

然後寫入bootloader:

cd $WORK_DIR/u-boot-sunxi
dd if=u-boot-sunxi-with-spl.bin of=$card bs=1024 seek=8

最後安裝核心 uImage,設定啟動引數:

mount ${card}1 /mnt
mkdir /mnt/boot
cp $WORK_DIR/linux-sunxi/arch/arm/boot/uImage /mnt/boot
cp $WORK_DIR/sunxi-boards/sys_config/a20/script.bin /mnt/boot
cp $WORK_DIR/boot.scr /mnt/
sync && umount /mnt

至此,啟動到linux核心的工作已經完成,接下來我們就可以觀看linux核心啟動過程、進行核心除錯了。

相關推薦

全志A10/A20 Bootloader載入過程分析

【轉】A10/A20 Bootloader載入過程分析 轉自:http://blog.csdn.net/allen6268198/article/details/12905425 A10/A20 Bootloader載入過程分析 注:由於全志A10和A20在載入Bootlo

A10/A20 Bootloader載入過程分析

上面羅嗦了這麼多,其實就是為了將uboot和kernel燒寫到TF卡上並能夠啟動,OK,讓我們先從分割槽開始: A20 晶片上電啟動的時候,會讀取SD卡最前面的 1M 內容,從而得到 bootloader,所以我們需要把 u-boot 寫到SD卡的前1M區間。 其中詳細的SD卡布局如下: 起始 大小

A10/A20 Bootloader加載過程分析

轉換 開發 title modules 上電 invalid 添加 i/o github A10/A20 Bootloader加載過程分析 註:由於全誌A10和A20在加載Bootloader過程方面基本一致,下面僅以A20敘述,但同時也適用於A10。另外在不需要區分Cu

全志A10 Bootload載入過程分析

A10的啟動過程大概可分為5步:BootRom,SPL,Uboot,Kernel,RootFileSystem。本文只關注映象的載入過程,分析RootRom->SPL->Uboot的啟動流程。 系統上電後,ARM處理器在復位時從地址0x000000開始執行

spring boot environment載入過程分析

   environment是在printBanner之前就初始化好了, 更在context建立之前,  已經載入application-xxxx.properties, System.properties, System.environment ... 也可以自己監聽應用

SystemUI之快捷設定區域載入過程分析

佈局構成 詳細說明,快捷設定區域的佈局是由 StatusBar.java的 makeStatusBarView ()統一載入,通過方法 inflateStatusBarWindow 方法載入佈局 s

Android6.0 按鍵kl檔案載入過程分析

在之前按鍵過程分析的幾篇部落格中,我分析過關於按鍵kl檔案的載入,但是講的不是非常詳細,這篇部落格主要把kl檔案載入過程單獨拉出來分析下。 1. 獲取InputDeviceIdentifier的name 以及 Device的建立 InputDeviceIdentifier

Activity中佈局資源layoutResId在setContentView載入過程分析

前言 記得剛開始學習安卓那會,感覺安卓真的很簡單,用xml寫一個佈局,然後再寫一個activity,接著呼叫一下在onCreate中呼叫下setContentView(resId)一個頁面就可以看到了,現在回想也才知道Android的牛逼,它降低了開發者的門檻

Fragment載入過程分析

void moveToState(Fragment f, int newState, int transit, int transitionStyle, boolean keepActive) { // Fragments that are not currently

QEMU 程式碼分析:BIOS 的載入過程

DW原文連結 QEMU 是一個廣泛使用的開源計算機模擬器和虛擬機器,它提供了虛擬機器硬體的虛擬化功能,其使用的某些特定硬體的韌體則由一些開源專案提供。本文將介紹 QEMU 程式碼中使用到的 BIOS,通過分析 QEMU 程式碼,講解 BIOS 是如何載入到虛擬機器的實體記憶體。  

自定義spring boot starter三部曲之三:原始碼分析spring.factories載入過程

本文是《自定義spring boot starter三部曲》系列的終篇,前文中我們開發了一個starter並做了驗證,發現關鍵點在於spring.factories的自動載入能力,讓應用只要依賴starter的jar包即可,今天我們來分析Spring和Spring boot原始碼,瞭解s

springmvc載入過程及原始碼分析

什麼是springmvc springmvc是基於的spring的一個web層框架。  這張圖是spring的架構體系,從中可以看出springmvc和struts一樣都是屬於一個web層框架,是spring框架的一部分。 springmvc和mvc有什麼區別 mvc是一種

LayoutInflater 載入佈局檔案原理,過程分析

       工作之餘,研究了研究,寫了一個外掛換膚的小框架,準備這段時間寫兩三篇文章做一下總結,有問題的話歡迎批評指正,因為侵入式外掛換膚的框架中有涉及到LayoutInflater載入佈局檔案的相關知識,所以,本篇文章先針對LayoutInflater載入佈局的過程以及原

Android執行時ART載入OAT檔案的過程分析

                        在前面一文中,我們介紹了Android執行時ART,它的核心是OAT檔案。OAT檔案是一種Android私有ELF檔案格式,它不僅包含有從DEX檔案翻譯而來的本地機器指令,還包含有原來的DEX檔案內容。這使得我們無需重新編譯原有的APK就可以讓它正常地在ART裡

Android 分析Native庫的載入過程及x86系統執行arm庫的原理

本文主要講述Android 載入動態連結庫的過程,為了分析工作中遇到的一個問題 x86的系統是如何執行arm的動態連結庫的。 參考部落格: https://pqpo.me/2017/05/31/system-loadlibrary/ 深入理解 System.loadLibrary

spring啟動component-scan類掃描載入過程---原始碼分析

最近因為寫書的事情,一段時間沒有寫部落格了,有朋友最近問到了spring載入類的過程,尤其是基於annotation註解的載入過程,有些時候如果由於某些系統部署的問題,載入不到,很是不解!就針對這個問題,我這篇部落格說說spring啟動過程,用原始碼來說明,這部分內容也會在

原始碼分析之應用載入過程解析AndroidManifest

一.SystemServer的main方法 /** * The main entry point from zygote. */ public static void main(String[] args) { new SystemServer().run()

Android WebView載入Chromium動態庫的過程分析

        Chromium動態庫的體積比較大,有27M左右,其中程式段和資料段分別佔據25.65M和1.35M。如果按照通常方式載入Chromium動態庫,那麼當有N個正在執行的App使用WebView時,系統需要為Chromium動態庫分配的記憶體為

使用 Fiddler 分析網頁載入過程

 Fiddler 是一個http除錯代理,它能夠記錄所有的你電腦和網際網路之間的http通訊,Fiddler 可以也可以讓你檢查所有的http通訊,設定斷點,以及Fiddler 所有的“進出”的資料(指cookie,html,js,css等檔案) 安裝好 Fiddle

Activity 從載入佈局檔案到顯示的過程分析

在Activity 生命週期函式執行過程詳解中介紹了ActivityThread、Instrumentation、ActivityManagerService啟動activity的過程,本文主要介紹Activity從載入佈局檔案到顯示的過程。 SetC