第一篇部落格,記錄下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...