色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

U-BOOT的特點及利用其構建開發板的引導裝載程序

電子設計 ? 來源:單片機與嵌入式系統應用 ? 作者:曾宏安;齊堯;焦 ? 2020-03-03 07:57 ? 次閱讀

1、 U-BOOT簡介

U-BOOT是由德國的工程師Wolfgang Denk從8XXROM代碼發展而來的,它支持很多處理器,比如PowerPC、ARM、MIPS和x86。目前,U-BOOT源代碼在sourceforge網站的社區服務器中,Internet上有一群自由開發人員對其進行維護和開發,它的項目主頁是http://sourceforge.net/projects/U-BOOT。U-BOOT的最新版本源代碼可以在Sourceforge的CVS服務器中匿名獲得。

#cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT login

#cvs -z6 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT / co -P modulename

1.1 U-BOOT源代碼目錄結構

◆ board:和一些已有開發板有關的文件,比如Makefile和u-boot.lds等都和具體開發板的硬件和地址分配有關。

◆ common:與體系結構無關的文件,實現各種命令的C文件。

cpu:CPU相關文件,其中的子目錄都是以U-BOOT所支持的CPU為名,比如有子目錄arm926ejs、mips、mpc8260和nios等,每個特定的子目錄中都包括cpu.c和interrupt.c,start.S。其中cpu.c初始化CPU、設置指令Cache和數據Cache等;interrupt.c設置系統的各種中斷和異常,比如快速中斷、開關中斷、時鐘中斷、軟件中斷、預取中止和未定義指令等;start.S是U-BOOT啟動時執行的第一個文件,它主要是設置系統堆棧和工作方式,為進入C程序奠定基礎。

◆ disk:disk驅動的分區處理代碼。

◆ doc:文檔。

◆ drivers:通用設備驅動程序,比如各種網卡、支持CFI的Flash、串口和USB總線等。

◆fs:支持文件系統的文件,U-BOOT現在支持cramfs、fat、fdos、jffs2和registerfs。

◆ include:頭文件,還有對各種硬件平臺支持的匯編文件,系統的配置文件和對文件系統支持的文件。

◆ net:與網絡有關的代碼,BOOTP協議、TFTP協議、RARP協議和NFS文件系統的實現。

◆ lib_arm:與ARM體系結構相關的代碼。

◆ tools:創建S-Record格式文件 和U-BOOT images的工具。

1.2 U-BOOT的特點

U-BOOT支持SCC/FEC以太網、OOTP/TFTP引導、IP和MAC的預置功能,這一點和其它BootLoader(如BLOB和RedBoot等)類似。但U-BOOT還具有一些特有的功能。

◆ 在線讀寫Flash、DOC、IDE、IIC、EEROM、RTC,其它的BootLoader根本不支持IDE和DOC的在線讀寫。

◆ 支持串行口kermit和S-record下載代碼,U-BOOT本身的工具可以把ELF32格式的可執行文件轉換成為 S-record格式,直接從串口下載并執行。

◆ 識別二進制、ELF32、uImage格式的Image,對Linux引導有特別的支持。U-BOOT對Linux 內核進一步封裝為uImage。封裝如下:

#{CROSS_COMPILE}-objcopy -O binary -R.note -R.comment -S vmlinux / linux.bin

#gzip -9 linux.bin

#tools/mkimage -A arm -O linux -T kernel -C gzip -a 0xc0008000 -e/

0xc0008000 -n “Linux-2.4.20” -d linux.bin.gz /tftpboot/uImage

即在Linux內核鏡像vmLinux前添加了一個特殊的頭,這個頭在include/image.h中定義,包括目標操作系統的種類(比如Linux,VxWorks等)、目標CPU的體系機構(比如ARM、PowerPC等)、映像文件壓縮類型(比如gzip、bzip2等)、加載地址、入口地址、映像名稱和映像的生成時間。當系統引導時,U-BOOT會對這個文件頭進行CRC校驗,如果正確,才會跳到內核執行。如下所示:

◆ 單任務軟件運行環境。U-BOOT可以動態加載和運行獨立的應用程序,這些獨立的應用程序可以利用U-BOOT控制臺的I/O函數、內存申請和中斷服務等。這些應用程序還可以在沒有操作系統的情況下運行,是測試硬件系統很好的工具。

◆ 監控(minitor)命令集:讀寫I/O,內存,寄存器、內存、外設測試功能等

◆ 腳本語言支持(類似BASH腳本)。利用U-BOOT中的autoscr命令,可以在U-BOOT中運行“腳本”。首先在文本文件中輸入需要執行的命令,然后用tools/mkimage封裝,然后下載到開發板上,用autoscr執行就可以了。

① 編輯如下的腳本example.script。

echo

echo Network Configuration:

echo ----------------------

echo Target:

printenv ipaddr hostname

echo

echo Server:

printenv serverip rootpath

echo

② 用tools/mkimage對腳本進行封裝。

# mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n “autoscr example script” -d example.script /tftpboot/example.img

Image Name: autoscr example script

Created: Wes Sep 8 01:15:02 2004

Image Type: ARM Linux Script (uncompressed)

Data Size: 157 Bytes = 0.15 kB = 0.00 MB

Load Address: 0x00000000

Entry Point: 0x00000000

Contents:

Image 0: 149 Bytes = 0 kB = 0 MB

③ 在U-BOOT中加載并執行這個腳本。

WT-ARM9# tftp 100000 /tftpboot/example.img

ARP broadcast 1

TFTP from server 10.0.0.2; our IP address is 10.0.0.99

Filename ‘/tftpboot/TQM860L/example.img’。

Load address: 0x100000

Loading: #

done

Bytes transferred = 221 (dd hex)

WT-ARM9# autoscr 100000

## Executing script at 00100000

Network Configuration:

----------------------

Target:

ipaddr=10.0.0.99

hostname=arm

Server:

serverip=10.0.0.2

rootpath=/nfsroot

WT-ARM9#

◆ 支持WatchDog、LCD logo和狀態指示功能等。如果系統支持splash screen,U-BOOT啟動時,會把這個圖像顯示到LCD上,給用戶更友好的感覺。

◆ 支持MTD和文件系統。U-BOOT作為一種強大的BootLoader,它不僅支持MTD,而且可以在MTD基礎上實現多種文件系統,比如cramfs、fat和jffs2等。

◆ 支持中斷。由于傳統的BootLoader都分為stage1和stage2,所以在stage2中添加中斷處理服務十分困難,比如BLOB;而U-BOOT是把兩個部分放到了一起,所以添加中斷服務程序就很方便。

◆ 詳細的開發文檔。由于大多數BootLoader都是開源項目,所以文檔都不是很充分。U-BOOT的維護人員意識到了這個問題,充分記錄了開發文檔,所以它的移植要比BLOB等缺少文檔的BootLoader方便。

2 、對U-BOOT-1.1.0的修改

為了使U-BOOT-1.1.0支持新的開發板,一種簡便的做法是在U-BOOT已經支持的開發板中選擇一種接近的進行修改。由于U-BOOT-1.10不支持ARM-922T內核,所以選擇基于ARM-920T內核的smdk2400為模板。相關的源代碼在board/smdk2400/下。

2.1 支持ARM-922T內核的代碼修改

修改以下代碼,使U-BOOT支持arm-922t內核。

① 在include/目錄下新建文件arm922t.h,內容如下:

#ifndef __ARM922T_H__

#define __ARM922T_H__

#endif

② 在include/目錄下新建文件wt-arm9.h,該文件描述了ARM922T中Timer、UART等寄存器的結構及若干宏定義。具體內容要參考相關處理器手冊。

③ 在cpu/目錄下新建目錄arm922t,將目錄arm920t下的內容復制后,參考手冊分別修改cpu.c、interrupts.c和serial.c,其它文件不修改。

2.2 開發板的支持

建立自己開發板的目錄和相關文件。

① 在include/configs目錄中添加頭文件lh7a400.h。這個文件是lh7a400開發板的配置文件,它包括開發板的CPU、系統時鐘、RAM、Flash系統及其它相關的配置信息。其格式可參考include/configs/smdk2400.h。

② 在board/目錄下新建wt-arm9目錄,創建如下文件:flash.c、lhmemsetup.c、wt- arm9.c、Makefile和u-boot.lds。

◆ flash.c。U-BOOT 讀、寫和刪除Flash設備的源代碼文件。由于不同開發板中Flash存儲器的種類各不相同,所以,修改flash.c時需參考相應的Flash芯片手冊。它包括如下幾個函數:

unsigned long flash_init (void ),Flash初始化;

void flash_print_info (flash_info_t *info),打印Flash信息;

int flash_erase (flash_info_t *info, int s_first, int s_last),Flash擦除;

volatile static int write_dword (flash_info_t *info, ulong dest, ulong data),Flash寫入;

int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt),從內存復制數據。

◆ lhmemsetup.c。初始化時鐘、SMC控制器SDRAM控制器。

◆ wt-arm9.c。設置各種總線時鐘,打開數據Cache和指令Cache,并設置相關內存參數

◆ Makefile。直接拷貝board/smdk2400/Makefile,作如下修改:

OBJS := wt-arm9.o flash.o lhmemsetup.o

◆ u-boot.lds。設置U-BOOT中各個目標文件的連接地址,直接拷貝 board/smdk2400/u-boot.lds,作如下修改:

.text

{

cpu/arm922t/start.o (.text)

*(.text)

}

2.3 添加網口設備控制程序

在drivers/目錄中添加網口設備控制程序dm9000.c 和dm9000.h,其中dm9000.c 主要包括以下函數:

int eth_init (bd_t *bd),初始化網絡設備;

void eth_halt (void),關閉網絡設備;

int eth_send (volatile void *packet,int len),發送數據包;

int eth_rx (void) 接收數據包。

用中斷方式處理數據包的收發,因此還定義了另外兩個函數:

void InitInterrupt (void) ,中斷初始化;

void dm9000_irq (void) ,中斷處理。

以上兩個函數在cpu/arm922t/interrupts.c中被調用,最后在drivers/Makefile中加入dm9000.o。

2.4 修改Makefile

在u-boot-1.1.0/Makefile中加入

lh7a400_config : unconfig

@./mkconfig $(@:_config=) arm arm922t wt-arm9

其中“arm”是CPU的種類, arm922t 是ARM CPU對應的代碼目錄,wt-arm9是自己開發板對應的目錄。

交叉編譯器安裝在/opt/arm/3.3/bin/目錄下,所以把CROSS_COMPILE設置成相應的路徑:

export CROSS_COMPILE = /opt/arm/3.3/bin/arm-elf-

2.5 生成目標文件

先運行make clean,

[zeng@localhost u-boot-1.1.0]$make clean

然后運行make lh7a400_config,

[zeng@localhost u-boot-1.1.0]$ make lh7a400_config

Configuring for lh7a400 board.。.

再運行make,

[zeng@localhost u-boot-1.1.0]$make

之后會生成三個文件:

u-boot——ELF格式的文件,可以被大多數Debug程序識別;

u-boot.bin——二進制bin文件,純粹的U-BOOT二進制執行代碼,不保存ELF格式和調試信息。這個文件一般用于燒錄到用戶開發板中;

u-boot.srec——Motorola S-Record格式,可以通過串行口下載到開發板中。

2.6 測 試

通過JTAG口將u-boot.bin燒寫到Flash的零地址,復位后執行u-boot。若運行正常,會從串口返回如下信息:

U-Boot 1.1.0 (Aug 21 2004 ?18:44:37)

U-BooT code: C3F80000 -》 C3FA51A0 BSS: -》 C3FA96EC

IRQ Stack: c3f1ff7c

FIQ Stack: c3f1ef7c

RAM Configuration:

Bank #0: c0000000 8 MB

Bank #1: c1000000 8 MB

……

Flash: 32 MB

In: serial

Out: serial

Err: serial

WT-ARM9 #

輸入help得到所有命令列表,help command 列出該命令的功能。緊接著測試Flash和網卡,如果都正常工作的話,表明移植U-BOOT的工作基本完成,可以接著調試內核和文件系統。

結 語

BootLoader是操作系統和硬件的樞紐,它為操作系統內核的啟動提供了必要的條件和參數。在移植過程中,開發人員除了要掌握BootLoader的結構和工作流程外,還要對相關硬件有一定的了解。目前,移植的U-BOOT已經能夠穩定地運行在開發板上,而且可以通過Flash和網絡加載內核和文件系統,為后續開發,特別是驅動程序的開發奠定了良好的基礎。

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1373

    瀏覽量

    40308
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10872

    瀏覽量

    211974
  • 操作系統
    +關注

    關注

    37

    文章

    6837

    瀏覽量

    123365
收藏 人收藏

    評論

    相關推薦

    基于開發板U-Boot移植

    在飛凌S5PV210開發板上移植U-Boot 的過程主要包括以下四個步驟:1.下載U-Boot源碼2.修改相應的文件代碼3.編譯U-Boot4.燒寫到
    發表于 01-14 14:31

    u-boot詳解

    。這兩個特點正是U-Boot項目的開發目標,即支持盡可能多的嵌入式處理器和嵌入式操作系統。就目前來看,U-Boot對PowerPC系列處理器支持最為豐富,對Linux的支持最完善。其它
    發表于 07-04 04:56

    如何用U-BOOT構建引導裝載程序

    本文以U-BOOT為例,介紹了如何在ARM9開發板上移植BootLoader的過程。
    發表于 09-27 06:22

    基于U-BOOT的S3C44B0引導裝載程序的設計與實現

    Bootloader(引導裝載程序)是嵌入式系統開發的一個重要環節,它把操作系統和硬件平臺銜接起來,對嵌入式系統后繼軟件開發十分重要。Das
    發表于 08-15 10:36 ?25次下載

    U-Boot的啟動及移植分析

    bootloader 開發是嵌入式系統必不可少而且十分重要的部分,U-Boot 為功能強大的bootloader 開發軟件。本文詳細分析了U-Boot 的啟動流程,并結合
    發表于 09-01 16:34 ?27次下載

    NIOS軟核處理器的Linux引導程序U-boot設計

    摘要: 針對將uClinux向Nios處理器移植過程中的啟動加載程序U-boot bootloader進行研究。首先介紹移植的步驟,然后利用bootloader的設計思想,著重討論U-boot
    發表于 06-20 15:27 ?977次閱讀
    NIOS軟核處理器的Linux<b class='flag-5'>引導</b><b class='flag-5'>程序</b><b class='flag-5'>U-boot</b>設計

    嵌入式U-BOOT的啟動流程及移植

    S3C44B0開發板上的移植方法和步驟。 u-boot是一個功能強大的bootloader開發軟件,適用的CPU平臺及
    發表于 02-25 16:00 ?59次下載

    使用U-boot運行測試程序

    本內容介紹了使用U-boot運行測試程序
    發表于 06-16 16:12 ?49次下載
    使用<b class='flag-5'>U-boot</b>運行測試<b class='flag-5'>程序</b>

    u-boot學習指南

    到自己的開發板上,這個過程主要是修改主芯片相關代碼以及開發板硬件相關代碼,包括啟動文件 Start.s、NAND 讀寫程序、USB 通信程序、相應的 IO 口配置等
    發表于 11-17 15:54 ?2次下載

    u-boot簡介

    演化而來。源碼目錄、編譯形式與Linux內核很相似,事實上,不少U-Boot源碼就是根據相應的Linux內核源程序進行簡化而形成的,尤其是一些設備的驅動程序,這從
    發表于 10-14 11:17 ?3575次閱讀

    U-Boot到OMAP5912開發板的移植

    U-Boot到OMAP5912開發板的移植
    發表于 10-27 10:23 ?8次下載
    <b class='flag-5'>U-Boot</b>到OMAP5912<b class='flag-5'>開發板</b>的移植

    詳解U-Boot引導內核分析

    bootm命令是用來引導經過U-Boot的工具mkimage打包后的kernel image的。U-Boot源代碼的tools/目錄下有mkimage工具,這個工具可以用來制作不壓縮或者壓縮的多種可啟動映象文件。
    的頭像 發表于 04-13 15:22 ?5267次閱讀
    詳解<b class='flag-5'>U-Boot</b><b class='flag-5'>引導</b>內核分析

    u-boot】在stm32h7開發板體驗u-boot

    u-boot在2017版本中加入了對Cortex-M系列內核的支持,正好手上有個h7的開發板,所以拿來試試,學習一下uboot。一 u-boot版本選擇其實開始選用最早支持的版本比較好,因為新版本
    發表于 12-01 15:06 ?11次下載
    【<b class='flag-5'>u-boot</b>】在stm32h7<b class='flag-5'>開發板</b>體驗<b class='flag-5'>u-boot</b>

    tiny4412編譯與移植U-Boot

    U-Boot 是一個主要用于嵌入式系統的引導加載程序, U-Boot本質是一個裸機程序,是一種普遍用于嵌入式系統中的開源的Bootload
    的頭像 發表于 08-31 08:59 ?1843次閱讀
    tiny4412編譯與移植<b class='flag-5'>U-Boot</b>

    Linux U-Boot開發指南

    介紹 U-Boot 的編譯打包、基本配置、常用命令的使用、基本調試方法等, 為 U-BOOT 的移植及應用開發提供了基礎。
    的頭像 發表于 03-06 10:28 ?1331次閱讀
    Linux <b class='flag-5'>U-Boot</b><b class='flag-5'>開發</b>指南
    主站蜘蛛池模板: 亚洲高清在线mv| 超碰免费碰免费视频| 国产专区青青草原亚洲| 亚洲 欧美 日韩 国产 视频| 精品欧美一区二区三区四区| 365电影成人亚洲网在线观看| 碰超成人在线公开免费视频| 国产精品久久人妻无码网站一区L 国产精品久久人妻无码蜜 | 国产短视频精品区| 亚洲精品蜜夜内射| 免费可以看黄的视频s色| 东北足疗店妓女在线观看| 亚洲精品美女久久久久99| 女bbbbxxx孕妇| 国产人妻人伦精品久久久| 2021久久99国产熟女人妻| 失禁h啪肉尿出来高h| 久久精品亚洲AV高清网站性色| 北条麻妃快播| 亚洲一区日韩一区欧美一区a| 女人精69xxxxx| 好男人在线观看视频观看高清视频免费 | 一本道dvd久久综合高清免费 | 性啪啪chinese东北女人| 快穿之诱受双性被灌满h| 国产大片51精品免费观看| 20岁中国男同志china1069| 天堂无码人妻精品AV一区| 毛片大全网站| 好大好爽好深舒服死了| 草久热的视频在线观看| 永久免费看A片无码网站四虎| 色人阁久久| 暖暖 视频 在线 观看 高清| 好湿好滑好硬好爽好深视频| 成人在线视频国产| 18禁三级黄| 野花韩国视频中文播放| 午夜福利电影| 日本在线免费播放| 免费看毛片网|