日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(一)uboot的移植与制作

發布時間:2025/3/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (一)uboot的移植与制作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

        • (一)環境
        • (二)流程分析
        • (三)具體步驟

在裸機啟動流程里涉及到BL1,BL2為系統的加載啟動項,全稱為BootLoader。
Boot Loader 是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核準備好正確的環境。通常,Boot Loader 是嚴重地依賴于硬件而實現的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的 Boot Loader 幾乎是不可能的,但是通過研究人員的努力,設計了一個通用的BootLoader,滿足大部分的開發板的需求。

(一)環境

  • uboot_tiny4412-sdk1506.tar.bz2
  • Ubuntu 16.04
  • linux交叉編譯環境(我已經安裝過,沒有安裝的可以下載arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)
    獲取幫助的地方: uboot官方
    獲取uboot源代碼的地方:uboot源碼

(二)流程分析

1、 先將uboot的源代碼復制到Ubuntu下的目錄中(推薦在根目錄下創建driver目錄)

這里以 uboot_tiny4412-sdk1506.tar.bz2的uboot為例操作,自己根據自己下載的uboot進行解壓

2、對uboot進行解壓操作

tar -xvf uboot_tiny4412-sdk1506.tar.bz2

3、進入uboot的目錄,分析uboot的目錄架構

在Linux文件中每一個目錄均有自己獨有的功能,一般情況下,目錄中都會有一個所謂README文件,該文件描述了對應目錄下文件的作用
閱讀README文件:

In general, all boards for which a configuration option exists in the Makefile have been tested to some extent and can be considered "working". In fact, many of them are used in production systems. 說明在uboot的makefile文件中配置的開發板可以直接使用該版本的uboot#目錄結構: /api U-Boot machine/arch independent API for external apps /arch Architecture specific files/arm Files generic to ARM architecture/cpu CPU specific files/arm720t Files specific to ARM 720 CPUs/arm920t Files specific to ARM 920 CPUs/at91rm9200 Files specific to Atmel AT91RM9200 CPU/imx Files specific to Freescale MC9328 i.MX CPUs/s3c24x0 Files specific to Samsung S3C24X0 CPUs/arm925t Files specific to ARM 925 CPUs/arm926ejs Files specific to ARM 926 CPUs/arm1136 Files specific to ARM 1136 CPUs/ixp Files specific to Intel XScale IXP CPUs/pxa Files specific to Intel XScale PXA CPUs/s3c44b0 Files specific to Samsung S3C44B0 CPUs/sa1100 Files specific to Intel StrongARM SA1100 CPUs/lib Architecture specific library files/avr32 Files generic to AVR32 architecture/cpu CPU specific files/lib Architecture specific library files/blackfin Files generic to Analog Devices Blackfin architecture/cpu CPU specific files/lib Architecture specific library files/i386 Files generic to i386 architecture/cpu CPU specific files/lib Architecture specific library files/m68k Files generic to m68k architecture/cpu CPU specific files/mcf52x2 Files specific to Freescale ColdFire MCF52x2 CPUs/mcf5227x Files specific to Freescale ColdFire MCF5227x CPUs/mcf532x Files specific to Freescale ColdFire MCF5329 CPUs/mcf5445x Files specific to Freescale ColdFire MCF5445x CPUs/mcf547x_8x Files specific to Freescale ColdFire MCF547x_8x CPUs/lib Architecture specific library files/microblaze Files generic to microblaze architecture/cpu CPU specific files/lib Architecture specific library files/mips Files generic to MIPS architecture/cpu CPU specific files/lib Architecture specific library files/nios2 Files generic to Altera NIOS2 architecture/cpu CPU specific files/lib Architecture specific library files/powerpc Files generic to PowerPC architecture/cpu CPU specific files/74xx_7xx Files specific to Freescale MPC74xx and 7xx CPUs/mpc5xx Files specific to Freescale MPC5xx CPUs/mpc5xxx Files specific to Freescale MPC5xxx CPUs/mpc8xx Files specific to Freescale MPC8xx CPUs/mpc8220 Files specific to Freescale MPC8220 CPUs/mpc824x Files specific to Freescale MPC824x CPUs/mpc8260 Files specific to Freescale MPC8260 CPUs/mpc85xx Files specific to Freescale MPC85xx CPUs/ppc4xx Files specific to AMCC PowerPC 4xx CPUs/lib Architecture specific library files/sh Files generic to SH architecture/cpu CPU specific files/sh2 Files specific to sh2 CPUs/sh3 Files specific to sh3 CPUs/sh4 Files specific to sh4 CPUs/lib Architecture specific library files/sparc Files generic to SPARC architecture/cpu CPU specific files/leon2 Files specific to Gaisler LEON2 SPARC CPU/leon3 Files specific to Gaisler LEON3 SPARC CPU/lib Architecture specific library files /api Machine/arch independent API for external apps /board Board dependent files /common Misc architecture independent functions存放著和設置環境變量及設置配置參數相關的文件 /disk Code for disk drive partition handling /doc Documentation (don't expect too much) /drivers Commonly used device drivers /examples Example code for standalone applications, etc. /fs Filesystem code (cramfs, ext2, jffs2, etc.) /include Header Files /lib Files generic to all architectures/libfdt Library files to support flattened device trees/lzma Library files to support LZMA decompression/lzo Library files to support LZO decompression /net Networking code /post Power On Self Test /rtc Real Time Clock drivers /tools Tools to build S-Record or U-Boot images, etc.

在Linux系統中,一般的cfg或者config均為配置文件
boards.cfg:列舉了該版本的uboot所支持的所有開發板的名稱及相關信息

Target:目標名稱 ARCH:指的是架構名稱 CPU:處理器名 Board name:板子名稱 Vendor:廠商名 SoC: 片上系統名 Options:選項,一般無 如: tiny4412 arm armv7 tiny4412 samsung exynos

每一個名字都對應了uboot的目錄結構下的某一個目錄,這些目錄中存放著對應開發版的先關資源文件,編譯的時候需要

從README可知,uboot可以引導多種平臺架構的開發板,如何選擇其引導自己的開發板??

Selection of Processor Architecture and Board Type: For all supported boards there are ready-to-use default configurations available; just type "make <board_name>_config".Example: For a TQM823L module type:cd u-bootmake TQM823L_config

make -j8:編譯可以加速
-j [N], --jobs[=N] 同時允許 N 個任務;無參數表明允許無限個任務。

(三)具體步驟

首先將SD卡插入度開啟并連接到Ubuntu系統
1、進行開發板和處理器選型

make <board_name>_config //這里的board_name可以在board.cfg配置信息找到

2、make

make

3、將uboot燒寫到SD卡
為什么要燒寫到SD卡?
以后的嵌入式開發中,通常會先用SD卡或者TF卡進行測試,當功能調試成功再放到emmc。

cd sd_fuse make cd tiny4412/ ./sd_fusing.sh 你的sd卡掛在點

好了做完上面的你就完成了uboot的制作,接下來把SD卡拔出來插入開發板使用串口工具可以進入uboot的交互模式進行控制。

總結

以上是生活随笔為你收集整理的(一)uboot的移植与制作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。