亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現在的位置是:首頁 > 技術閱讀 >  u-boot2020.04移植(總結)

u-boot2020.04移植(總結)

時間:2024-05-31

我所理解的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卡檢測失敗的問題,可能還會分析一下驅動模型。


歡迎掃碼關注我的微信公眾號

主站蜘蛛池模板: 读书| 大渡口区| 呼玛县| 元谋县| 长岛县| 勃利县| 固始县| 安仁县| 岑溪市| 龙川县| 黄冈市| 朝阳市| 巴林右旗| 云南省| 招远市| 衡东县| 杭锦后旗| 龙里县| 远安县| 和顺县| 扎兰屯市| 勃利县| 布尔津县| 贵南县| 安康市| 攀枝花市| 松桃| 平乡县| 泰安市| 克拉玛依市| 兴业县| 陈巴尔虎旗| 阜阳市| 永德县| 荣昌县| 夏河县| 阿克| 临夏县| 思茅市| 百色市| 浮梁县|