ARM AT91SAM9260 移植Linux-2.6.30流程

 

概述

本文的目的在於幫助AT91SAM9g20(以下簡稱爲SAM9g20)的軟件開發工程師從零開始,爲SAM9g20建立Linux運行環境。

在進行SAM9g20 Linux開發之前,需要建立開發環境。

本文選用的目標板爲:timll SBC6020上。

本文涉及到的一些linux基礎知識,若無相關介紹,則請自行至網絡搜索補充。

本文的部分內容來源於網絡。

SAM9g20 Linux的基本組成:

·       Bootstrap

·       U-boot

·       Kernel

·       Rootfs

·       Bootstrap在Windows PC上編譯,其餘的在Linux PC上編譯。

各部分組成如下圖:

ARM AT91SAM9260 移植Linux-2.6.30流程 - 抵岸科技 - 抵岸科技的博客

開發環境

·       一臺Linux PC(可以是虛擬機,以下簡稱爲Linux開發機)

·       可以安裝主流的Linux發行版本,比如 ubuntu, Fedora等等。在此推薦用ubuntu-10.4。

·       ubuntu-10.4標準的發行版本可能並沒有包括所有開發中需要的組件。開發過程中可以根據需要通過網絡安裝。

·       如果採用虛擬機方式,可以選擇虛擬機軟件如 Virtual PC, VMware, VirtualBox等。在此推薦用VMware v6.5.2

·       安裝完成後需要”打通”虛擬機與宿主機的共享通道,可以使用Linux的samba或者使用虛擬軟件提供的第三方工具。

·       可用的網絡

·       基於兩個原因:

·       1. 開發初期使用NFS會比較方便。

·       2. Linux開發機安裝組件。

·       開發機上所需要的基本程序開發工具

·       比如gcc( GCC-HOWTO)等。

·       目標板所用的交叉編譯器

·       所謂交叉編譯器,就是指在開發機上運行,編譯結果在另外架構的平臺上運行。

·       這裏的交叉編譯器指的就是ARM交叉編譯器。編譯器在Linux x86上將源代碼編譯成ARM體系結構適用的可執行文件。

·       Linux下可以使用的ARM交叉編譯器很多,經過測試,推薦使用arm-linux-gcc 4.3.2工具。

·       交叉編譯工具的搭建,詳見:

      (鏈接)

·       目標燒寫工具

·       有了編譯的輸出,還需要編程工具將其固化到SAM9g20的板子上運行。這個過程就是編程的過程。

·       由於SAM9g20提供了SAM-BA工具,所以最基本的方式就是通過USB口利用SAM-BA軟件下載。

SAM9g20 Linux 啓動流程

本文主要講述從Data Flash上啓動的過程,NAND flash啓動,NOR Flash啓動請參考相關文檔。

1.     BOOTROM - 檢查一個有效的Bootstrap是在FLASH中,如果Bootstrap存在,則將它加載到內部SRAM中,並將控制權交給Bootstrap。

2.     AT91Bootstrap - 開始分管硬件配置,從FLASH當中加載U-Boot程序到SDRAM,並將控制權交給U-boot。

3.     U-boot - 它是一個引導加載程序,在從FLASH,網絡,USB等設備中加載內核到SDRAM中,並將控制權交給內核。

4.     Linux kernel - 操作系統內核。

5.     Rootfs - 根文件系統。

ARM AT91SAM9260 移植Linux-2.6.30流程 - 抵岸科技 - 抵岸科技的博客

1.     處理器復位,根據BMS引腳的設置,選擇從內部ROM啓動(NOR Flash啓動方式不在本文的討論範圍)。

2.     BOOTROM開始運行,初始化CPU和內存控制器,比如DBGU,USB device port。它還建立了爲內核使用的格式是一致的跨平臺的內存映射,然後跳轉到Bootstrap運行。

3.     如果Bootstrap存在,ROMBOOT將其複製到內部SRAM並跳轉到Bootstrap運行。如果沒有,則等待DBGU或者USB口的連接,這部分內容請參考SAM-BA手冊。

4.     Bootstrap將初始化一些設備,主要是Data Flash與SDRAM,然後從Data Flash特定位置(在Bootstrap源代碼中指定)將U-boot複製到SDRAM的指定位置,然後跳轉到U-boot開始位置運行。

5.     U-boot根據環境變量(bootcmd)加載Linux Kernel的image。加載完成後跳轉到Kernel運行,並傳遞啓動參數(bootargs)。

6.     Linux Kernel開始運行,init讀取/ etc / inittab文件,以執行相應的運行從/ etc / rc.d中,其中一開始就執行初始化腳本和其他網絡系統服務控制腳本,加載相關驅動,並加載rootfs。

Data Flash Boot Mem Map

ARM AT91SAM9260 移植Linux-2.6.30流程 - 抵岸科技 - 抵岸科技的博客

*內部集成FLASH的AT91系列,Bootstrap存儲於AT91內部FLASH當中,而不存儲於DATAFLASH或NANDFLASH中。

Nand Flash Boot Mem Map

ARM AT91SAM9260 移植Linux-2.6.30流程 - 抵岸科技 - 抵岸科技的博客

*內部集成FLASH的AT91系列,Bootstrap存儲於AT91內部FLASH當中,而不存儲於DATAFLASH或NANDFLASH中。

Bootstrap移植流程

U-boot移植流程

Linux kernel移植流程

Rootfs移植流程

  

文件歷史記錄

版本            編制                    日期                        更改內容

-----------------------------------------------------------------------------------

V1.0           抵岸科技              2010-6-26              首發

V1.1           抵岸科技              2010-7-23              更改:*Bootstrap存儲於AT91內部FLASH當中...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章