u boot2020 04移植(總結)

2021-10-07 16:21:57 字數 1325 閱讀 3886

我所理解的u-boot移植可以分為以下幾個部分:

1、核心級的配置與初始化

這個主要就是在start.s檔案裡面那些彙編**,這部分呢我覺得基本上沒有改的必要,除非你很熟悉核心相關的東西。

2、soc級別的配置與初始化

這部分的內容是比較多的,而且可以說貫穿整個u-boot,但基本上必要的都集中在lowlevel_init,其它的就取決於你是否要在u-boot階段使用某些硬體資源了,比如網絡卡是在board_init_r裡面,已經是靠後的位置了,有些板子甚至可能都不會在u-boot階段使用網路,自然也就不需要初始化。這部分是移植過程中修改較多的地方,而且基本上都是使用彙編編碼,只要這部分搞定了,那u-boot基本就可以成功啟動了。

3、board_init_f階段

這個階段主要是對u-boot之後重定位進行記憶體的規劃,雖然執行的子函式多,但都不複雜。移植內容少。

4、u-boot比較核心的重定位

現在版本比較新的的u-boot重定位的意義和以前感覺都發生了變化,以前只需要讓u-boot執行在鏈結位址就對了,主要就是將u-boot搬到ddr執行,而現在不一樣,即使已經執行在鏈結位址了還不夠,還需要更加合理的規劃記憶體,現在u-boot重定位後,記憶體變得更加連續,我們也基本不擔心將核心拷貝到ddr後覆蓋掉u-boot本身,所以重定位還是比較重要的。可以說不用改。

5、board_init_r階段

這個階段幹的事主要就是準備終端,初始化需要用到的硬體資源,如果使用新的驅動模型的話,還要像kernel一樣將硬體進行抽象。這個根據自己的需求,用了什麼就要改什麼。

6、啟動核心或者處理使用者命令

u-boot最大的使命就是啟動核心,所以這部分也是核心的內容。board_init_r最後會呼叫run_main_loop進入乙個迴圈,要麼就是直接去啟動核心,要麼就是進入終端處理使用者命令和使用者互動。也可以說不用改,差不多已經是純軟體幹的事了。

在移植2020.04版本之前,我也移植過2018.04版本,兩個版本大致內容差不多,感覺最大的變化就是重定位這部分,在各個大版本中,重定位**基本上是一直在變的,但確實感覺是變得越來越容易理解。

移植之前還覺得有很多的內容都不清楚,可能移植會失敗什麼的,也怕寫到中途發現很多錯誤而放棄,但做了才發現,也不是想象的那麼困難,雖然反反覆覆的修改了好幾次,但大的方向都是正確的,這也讓我對以前很多不理解的地方有了新的認識,如果當時我沒去做,可能現在還停留在對u-boot迷迷糊糊的狀態,對很多東西一知半解,下次遇到還是一臉懵,慶幸的是我做了,並且做到了。

接下來計畫的內容還有網路的支援,及mmc卡檢測失敗的問題,可能還會分析一下驅動模型。

uboot移植 uboot啟動回顧

一 uboot啟動的第一階段start.s 路徑uboot cpu s5pc11x start.s 1 include 標頭檔案包含,config.件原始碼中不存 在,配置後自動生成 路徑 include linux config.h 2 include 標頭檔案包含,version.件原始碼中不存...

u boot移植詳解 初識u boot

u boot是一種普遍用於嵌入式系統中的bootloader。bootloader是基於特定硬體平台來實現的,因此幾乎不可能為所有的嵌入式系統建立乙個通用的bootloader,不同的處理器架構都有不同的bootloader,bootloader不但依賴於cpu的體系結構,還依賴於嵌入式系統板級裝置...

uboot移植記錄

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