什么是U-Boot以及如何下载U-Boot源码
參考:什么是U-Boot以及如何下載U-Boot源碼?
作者:一只青木呀
發布時間: 2020-10-20 11:05:59
網址:https://blog.csdn.net/weixin_45309916/article/details/109176510
目錄
- 前言
- 系統的啟動過程
- uboot簡介
- uboot源碼下載
- 選擇下載方式(我這里以FTP為例)
- 選擇下載版本
- SecureCRT啟動顯示log
前言
在上一篇中我們學習了如何進行I.MX6U 的裸機開發,通過21 個裸機例程我們掌握了I.MX6U 的常用外設。通過裸機的學習我們掌握了外設的底層原理,這樣在以后進行Linux 驅動開發的時候就只需要將精力放到Linux 驅動框架上,在進行Linux 驅動開發之前肯定需要先將Linux 系統移植到開發板上去。如果學習過UCOS/FreeRTOS 應該知道,UCOS/FreeRTOS 移植就是在官方的SDK 包里面找一個和自己所使用的芯片一樣的工程編譯一下,然后下載到開發板就可以了。那么Linux 的移植是不是也是這樣的,下載Linux 源碼,然后找個和我們所使用的芯片一樣的工程編譯一下就可以了?很明顯不是的!Linux 的移植要復雜的多,在移植Linux之前我們需要先移植一個bootloader 代碼,這個bootloader 代碼用于啟動Linux 內核,bootloader有很多,常用的就是U-Boot。
移植好U-Boot 以后再移植Linux 內核,移植完Linux 內核以后Linux 還不能正常啟動,還需要再移植一個根文件系統(rootfs),根文件系統里面包含了一些最常用的命令和文件。所以U-Boot、Linux kernel 和rootfs 這三者一起構成了一個完整的Linux 系統,一個可以正常使用、功能完善的Linux 系統。在本篇我們就來講解 U-Boot、Linux Kernel 和rootfs 的移植,與其說是“移植”,倒不如說是“適配”,因為大部分的移植工作都由NXP 完成了,我們這里所謂的“移植”主要是使其能夠在I.MX6U-ALPHA 開發板上跑起來。
在移植U-Boot 之前,我們肯定要先使用一下U-Boot,得先體驗一下U-Boot 是個什么東西。I.MX6U-ALPHA 開發板光盤資料里面已經提供了一個正點原子團隊已經移植好的U-Boot,本章我們就直接編譯這個移植好的U-Boot,然后燒寫到SD 卡里面啟動,啟動U-Boot 以后就可以學習使用U-Boot 的命令。
系統的啟動過程
Linux 系統要啟動就必須需要一個 bootloader (裸機程序)程序,也就說芯片上電以后先運行一段bootloader程序。這段bootloader程序會先初始化DDR等外設(前面學習了I.MX6ULL是內部BOOT ROM初始化DDR的,但是其他大部分ARM架構都是bootloader初始化DDR),然后將Linux內核從flash(NAND,NOR FLASH, SD, MMC 等)拷貝到 DDR 中,最后啟動 Linux 內核。當然了, bootloader 的實際工作要復雜的多,但是它最主要的工作就是啟動 Linux 內核, bootloader 和 Linux 內核的關系就跟 PC 上的 BIOS 和 Windows 的關系一樣, bootloader 就相當于 BIOS。所以我們要先搞定bootloader,很慶幸,有很多現成的 bootloader 軟件可以使用,比如 U-Boot、 vivi、 RedBoot 等等,其中以 U-Boot 使用最為廣泛,為了方便書寫,本書會將 U-Boot 寫為 uboot。
uboot簡介
對比一下之前學習的BOOT ROM做的事情:ARM(IMX6U)裸機之I.MX6ULL啟動頭文件(bin里面)的詳解
類似于我們電腦X86的BIOS。
SOC廠商,半導體廠商,比如NXP
開發板的廠商,比如正點原子
關于SOC:
這個詞是System on Chip的縮寫,意為片上系統,是將CPU、GPU、內存、基帶和GPS模塊整合在一起的解決方案,是將系統運行所需的芯片整合在一塊芯片上。
我們熟知的驍龍855、蘋果的A12、華為的麒麟980和三星的獵戶座都是這個片上系統的代號,并非單指某個CPU或是GPU,相反,這些片上系統內其實有自己的CPU和GPU編號。比如A12的GPU是自研的G11P,驍龍855的GPU是Adreno 640。
uboot 的全稱是 Universal Boot Loader, uboot 是一個遵循 GPL 協議的開源軟件, uboot 是一個裸機代碼,可以看作是一個裸機綜合例程。現在的 uboot 已經支持液晶屏、網絡、 USB 等高級功能。 uboot 官網為 http://www.denx.de/wiki/U-Boot/, 如圖所示:
uboot源碼下載
我們可以在 uboot 官網下載 uboot 源碼,點擊上圖中的“Source Code”,打開如下圖所示界面:
選擇下載方式(我這里以FTP為例)
選擇下載版本
上圖就是 uboot 原汁原味的源碼文件,目前最新的版本是 2020.10。但是我們一般不會直接用 uboot 官方的 U-Boot 源碼的。 uboot 官方的 uboot 源碼是給半導體廠商準備的,半導體廠商會下載 uboot 官方的 uboot 源碼,然后將自家相應的芯片移植進去。也就是說半導體廠商會自己維護一個版本的 uboot,這個版本的 uboot 相當于是他們定制的(比如恩智浦)。既然是定制的,那么肯定對自家的芯片支持會很全,雖然 uboot 官網的源碼中一般也會支持他們的芯片,但是絕對是沒有半導體廠商自己維護的 uboot 全面。
SecureCRT啟動顯示log
撥碼開關撥到從EMMC啟動,因為前面將系統燒寫進了EMMC里面,板子上電啟動,SecureCRT顯示啟動log信息。
總結
以上是生活随笔為你收集整理的什么是U-Boot以及如何下载U-Boot源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绿盾加密如何顺利切换成IP-Guard加
- 下一篇: 十四步实现高智能