U-Boot作為通用的BootloaderU-Boot可以方便地移植到其他硬件平台上,其源代碼也值得開發者們研究學習。

6.2.1  U-Boot工程簡介

最早,DENX軟件工程中心的Wolfgang Denk基於8xxrom的源碼創建了PPCBOOT工程,並且不斷添加處理器的支持。后來,Sysgo Gmbhppcboot移植到ARM平台上,創建了ARMboot工程。然后以ppcboot工程和armboot工程為基礎,創建了U-Boot工程。

丘猴子 發表在 痞客邦 留言(0) 人氣()

.bss section 的觀念:uninitialized data section jollen 發表於 December 15, 2006 1:11 AM

丘猴子 發表在 痞客邦 留言(0) 人氣()

这篇文章把2410中断处理过程分析的淋漓尽致,感谢作者。。。 

   

丘猴子 發表在 痞客邦 留言(0) 人氣()

 


丘猴子 發表在 痞客邦 留言(0) 人氣()

對U-BOOT的第1階段代碼的分析(基於SMDK2410的板子):

    都知道U-BOOT分為兩個階段,第一階段是(~/cpu/arm920t/start.S中)在FLASH上運行(一般情況下),完成對硬件的初始化,包括看門狗,中斷緩存等,並且負責把代碼搬移到SDRAM中(在搬移的時候檢查自身代碼是否在SDRAM中),然后完成C程序運行所需要環境的建立,包括堆棧的初始化等,最后執行一句跳轉指令ldr pc, _start_armboot

丘猴子 發表在 痞客邦 留言(0) 人氣()

做了近兩年ARM下的驅動開發,常用的各個設備驅動基本都碰過,不過Boot由於任務安排的緣故(公司一直有專人在做),一直沒有機會接触,從剛開始接触嵌入式的時候,就一直想弄清楚板子上電后,程序是怎麼執行的,不過看了下公司boot源碼,就很快放棄了,當時對匯編充滿了畏懼,做了1年多的驅動后,再看匯編感覺就沒那邊痛苦了,最近把boot的資料整理下,把我覺得boot比較核心的部分,完整的看了一遍,現在做個記號.我把我覺得我之前比較困惑的難點整理出來,也許大家一起討論下,也許和我一樣的新手就可以少走些彎路. 
BOOT的核心就是relocate,目前見到的典型嵌入式系統,除了處理器,至少都有ROM(norflash,nandflash)RAM (SDRAM),一般把Bootloader代碼放在norflash里面,而nandflash因為本身硬件原因不能隨機訪問,一般只是用來放應用程序.在系統加電或復位后,CPU通常由CPU制造商預先安排上地址取指令,arm體系下一般都是0x0地址取它的第一條指令,即PC = 0開始. 

丘猴子 發表在 痞客邦 留言(0) 人氣()

/*
 *  armboot - Startup Code for ARM926EJS CPU-core

丘猴子 發表在 痞客邦 留言(0) 人氣()

在嵌入式系統中,BootLoader 是用來初始化硬件,加載內核,傳遞參數。因為嵌入式系統的硬件環境各不相同,所以嵌入式系統的BootLoader 也各不相同,其中比較通用的是U-Boot,它支持不同的體系結構,如ARM,PowerPC,X86,MIPS 等。本文著重介BootLoader與內核之間參數傳遞這一基本功能。本文的硬件平台是基於AT91RM9200 處理器系統,軟件平台是Linux-2.6.19.2 內核。內核映像文件為zImage。

丘猴子 發表在 痞客邦 留言(0) 人氣()


typedef struct cmd_tbl_s cmd_tbl_t;

丘猴子 發表在 痞客邦 留言(0) 人氣()

 延續前一則日記的介紹,我們繼續以 s3c2410 的平臺為例。U-Boot 的 startup code(hardware bring-up code)for s3c2410 位於 cpu/arm920t/start.S,此部份的研究重心如下:

  • Monitor relocation.
  • Stack setup.
  • BSS clearing.
  • Jump to high-level language.

基本概念分述如後。不過,在開始前,必須具備幾個基本背景知識:

丘猴子 發表在 痞客邦 留言(0) 人氣()