U Boot學習記錄

2021-10-07 14:12:31 字數 1568 閱讀 6024

第一篇部落格,記錄下u-boot小點,這個編輯器要頂格可真麻煩。

—————————————————————————————————————————————

參考:《嵌入式linux應用開發完全手冊》

例如設定命令列標記:

char

*p="root=/dev/mtdblock 2 init=/linuxrc console=ttysac0"

;params->hdr.tag=atag_cmdline;

params->hdr.size=

(sizeof

(struct tag_header)

+strlen

(p)+1+

4)>>2;

strcpy

(params->u.cmdline.cmdline,p)

;params=

tag_next

(params)

;

「params->hdr.size=(sizeof(struct tag_header)+strlen§+1+4) >> 2」 這句右移2沒搞明白。

相關例子挺多的,用grep一搜就出來了。

tag結構參考鏈結.

第一階段:

1、硬體初始化;

(初始化硬體包括:關閉watchdog、關中斷、設定cpu的速度和時鐘頻率、ram初始化等(不是都必須的))

2、為第二階段**準備ram空間;

3、複製第二階段**到ram空間;

4、設定棧;

5、跳轉到第二階段**;

第二階段:

1、初始化本階段需要的硬體;

2、檢測系統記憶體對映;

3、將系統映象和根檔案系統讀取到ram中;

4、設定核心啟動引數;

5、呼叫核心;

1、cpu暫存器設定:

(1)、r0 = 0;

(2)、r1 = 機器id;(機器型別id:核心目錄/arch/arm/tools/mach-types)

(3)、r2 = 啟動引數所標記的核心在ram中的起始基位址;

c語言可用thekernel來呼叫核心:

void

(*thekernel)

(int zero,

int arch, uint params);.

..啟動核心的方式:

thekernel (

0, bd->bi_arch_number, bd->bi_boot_params)

;

thekernel函式在documentation\arm\booting 中有說明:

2、cpu工作模式:

(1)、必須禁止中斷(fiq和irq);

(2)、cpu必須為svc模式(supervisor超級使用者模式);

3、cache和mmu設定:

(1)、必須關閉mmu;

(2)、必須關閉資料cache;

(3)、指令cache可關閉可不關;

uboot移植記錄

首先是uboot移植記錄系列。這系列文章適合於uboot移植的初學者,這裡基於常見的開發平台s3c2410。若需要移植uboot到乙個全新開發板,則需要參考更多的資料並對uboot有更深入的了解。本人對此也有所鑽研,也有個較牛的同事專門做這這個的,呵呵 若感興趣的朋友大家可以一起 因此關於新平台ub...

u boot學習 一 u boot概述

我們知道對於pc機,使用電腦時我們首先按下開機按鍵,然後等待電腦的啟動,開機完成後,我們會進行各種需要的操作,如qq聊天 寫csdn部落格等。其實這個過程是 啟動bios程式,由bios程式引導windows作業系統,再由作業系統識別c盤d盤等硬碟,最後執行應用程式qq csdn等。對嵌入式系統來說...

uboot 啟動 VxWorks除錯記錄

硬體環境p2020,作業系統vxworks6.9 板卡狀態 可以啟動uboot,啟動不了bootrom。前期板卡啟動bootrom無果,可能是遇到了版型適配的問題。解決無果,只能另尋他路。從uboot去引導vxworks。網上看了一堆相關uboot啟動vxworks的方法。主要思路為 1 燒寫ubo...