(一)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的交互模式進行控制。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531434.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531434.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531434.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jquery ajax(實現單獨提交某個form)

function submitTaskScore(formid) {//formid表示的是表單的id$.ajax({type:"post",url:"companyAndDistributeAction!scoreTask",//后臺處理程序data:$(formid).serialize(),success:function(){document.getElementById("hjzggContent").inner…

(二)linux內核鏡像制作

&#xff08;一&#xff09;目的 在進行嵌入式開發的時候&#xff0c;我們往往會先在電腦上安裝交叉編譯器&#xff0c;然后編譯目標板上的代碼&#xff0c;最后把代碼下載到電路板中&#xff0c;嵌入式系統組成包括&#xff1a;BootLoaderkernelfilesystemapplication&#x…

js+css實現骰子的隨機轉動

網上找的例子&#xff0c;然后增添了新的東西&#xff0c;在這里展示一下...... 效果圖預覽&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html x…

linux安裝交叉編譯環境

&#xff08;一&#xff09;交叉編譯器的簡介 &#xff08;1&#xff09;本地編譯 在了解交叉編譯之前我們首先介紹一下另一個概念&#xff1a;本地編譯 之前所做的C開發屬于本地編譯&#xff0c;即在當前PC下&#xff08;x86的CPU下&#xff09;&#xff0c;直接編譯出可以運…

jsp實現郵件的發送

如果程序出現 454 Authentication failed, please open smtp flag first! 錯誤&#xff0c;那么一般是郵箱沒有開通POP3/SMTP服務&#xff0c;登錄郵箱&#xff0c;在設置中開啟該服務即可 &#xff01; 另外需要的jar包如下: imap.jar, mail.jar, smtp.jar, 可以自己在網上下…

linux的mount和umount指令使用

mount即掛在操作&#xff0c;磁盤或分區創建好文件系統后需要掛載到一個目錄&#xff08;一般mount在/mnt下&#xff09;才能使 用&#xff0c;和winsdows不同的是在linux下需要手動掛載。 用法&#xff1a;mount [-t文件系統] [選項] 設備目錄注意&#xff1a;[ ]為可選項…

斐波那契的四種求法

首先看一下斐波那契的矩陣表示&#xff1a; 數列的遞推公式為&#xff1a;f(1)1&#xff0c;f(2)2&#xff0c;f(n)f(n-1)f(n-2)(n>3) 用矩陣表示為&#xff1a; 進一步&#xff0c;可以得出直接推導公式&#xff1a; #include<iostream> #include<cstring> #i…

利用STM32制作紅外測溫儀之軟件設計(MLX90614)

目錄&#xff08;一&#xff09;工程目錄如圖&#xff1a;&#xff08;二&#xff09;main函數實現&#xff1a;&#xff08;三&#xff09;MLX90614測溫代碼實現前面介紹了使用 STM32制作紅外測溫儀硬件設計,今天來說一下軟件的實現&#xff0c;具體的程序&#xff0c;完整的k…

Windows下使用Dev-C++開發基于pthread.h的多線程程序

一、下載Windows版本的pthread 目前最新版本是&#xff1a;pthreads-w32-2-9-1-release.zip。 二、解壓pthread到指定目錄 我選擇的目錄是&#xff1a;E:\DEV-CPP\Pthread完成后&#xff0c;該目錄會多出三個文件夾&#xff1a;Pre-built.2&#xff0c;pthreads.2&#xff0c;Q…

(三)linux之根文件系統的制作

&#xff08;一&#xff09;準備工作 Ubuntu 16.04系統linux-3.5內核:linux-3.5-20190929交叉編譯工具arm-linux-gcc-4.5.1-v6-vfp-20120301.rarbusybox源碼包&#xff1a;busybox-1.21.1.rar &#xff08;二&#xff09;工具介紹 &#xff08;1&#xff09;交叉編譯器 這個…

c/c++多線程模擬系統資源分配(并通過銀行家算法避免死鎖產生)

銀行家算法數據結構 &#xff08;1&#xff09;可利用資源向量Available 是個含有m個元素的數組&#xff0c;其中的每一個元素代表一類可利用的資源數目。如果Available[j]K&#xff0c;則表示系統中現有Rj類資源K個。 &#xff08;2&#xff09;最大需求矩陣Max 這是一個nm的…

(四)Linux內核模塊化編程

目錄&#xff08;一&#xff09;模塊化編程簡介&#xff08;二&#xff09;安裝卸載模塊命令.&#xff08;三&#xff09;將自定義功能添加到內核三種方法&#xff08;1&#xff09;修改Kconfig和Makefile&#xff08;2&#xff09;直接修改功能對應目錄下的Makefile文件&#…

基于X86平臺的PC機通過網絡發送一個int(32位)整數的字節順序

1.字節順序  字節順序是指占內存多于一個字節類型的數據在內存中的存放順序&#xff0c;通常有小端、大端兩種字節順序。小端字節序指低字節數據存放在內存低地址處&#xff0c;高字節數據存放在內存高地址處&#xff1b;大端字節序是高字節數據存放在低地址處&#xff0c;低字…

Linux內核空間和用戶空間

在Linux系統中存在進程的概念&#xff1a; 進程的分類&#xff1a; 用戶進程&#xff1a;運行在用戶空間的進程被稱為用戶進程 內核進程:運行在內核空間的進程被稱為內核進程 進程的空間&#xff1a; 系統會為每一個進程分0-4G的虛擬尋址空間&#xff0c;在4G的空間中 0-3G&…

codeforces Round #320 (Div. 2) C. A Problem about Polyline(數學) D. Or Game(暴力,數學)

解題思路&#xff1a;就是求數 n 對應的二進制數中有多少個 1 #include <iostream> #include<cstdio> using namespace std; int main(){int n;cin>>n;int ans 0; // while(n){//這也是一種好的方法 // n n&(n-1); // ans; // }while(n…

(五)Linux之設備驅動模型

目錄&#xff08;一&#xff09;Linux內核驅動簡介&#xff08;二&#xff09;雜項設備驅動模型&#xff08;1&#xff09;相關接口&#xff08;2&#xff09;雜項設備注冊過程&#xff08;三&#xff09;早期經典字符設備驅動模型&#xff08;1&#xff09;相關接口&#xff0…

操作系統頁面置換算法(opt,lru,fifo,clock)實現

選擇調出頁面的算法就稱為頁面置換算法。好的頁面置換算法應有較低的頁面更換頻率&#xff0c;也就是說&#xff0c;應將以后不會再訪問或者以后較長時間內不會再訪問的頁面先調出。 常見的置換算法有以下四種&#xff08;以下來自操作系統課本&#xff09;。 1. 最佳置換算法(…

(六)Linux之設備驅動模型(續)

前面我們學習了雜項設備驅動模型、早期經典字符設備驅動模型,這一小節來講解Linux中的標準字符設備驅動。 目錄&#xff08;一&#xff09;為什么引入標準字符設備驅動模型&#xff08;二&#xff09;相關接口&#xff08;三&#xff09;注冊流程&#xff08;四&#xff09;程序…

N個數依次入棧,出棧順序有多少種?

對于每一個數來說&#xff0c;必須進棧一次、出棧一次。我們把進棧設為狀態‘1’&#xff0c;出棧設為狀態‘0’。n個數的所有狀態對應n個1和n個0組成的2n位二進制數。由于等待入棧的操作數按照1‥n的順序排列、入棧的操作數b大于等于出棧的操作數a(a≤b)&#xff0c;因此輸出序…

(七)linux函數接口的使用

前面我們講解了字符設備的驅動模型&#xff0c;有了前面的基礎后&#xff0c;今天學習函數接口就比較容易了 目錄&#xff08;一&#xff09;open函數接口&#xff08;二&#xff09;read函數接口&#xff08;三&#xff09;lseek函數接口&#xff08;四&#xff09;用戶空間和…