999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于S3C2440的嵌入式引導程序的開發

2010-08-15 00:47:58華中農業大學工學院
湖北農機化 2010年6期
關鍵詞:嵌入式程序

華中農業大學工學院 王 龍

嵌入式Linux在IT界已經迅猛發展,使用Linux進行嵌入式產品開發有一個很大的優勢,就是開發資源豐富,且成本低廉,嵌入式Linux操作系統越來越受到重視,其應用也越來越廣泛。而嵌入式Linux系統開發離不開引導程序,這個引導程序就叫作Bootloader。引導程序是嵌入式Linux系統開發不可或缺的部分,在嵌人式Linux中,內核在啟動前進行的首要操作就是啟動引導程序。U-Boot是構建嵌入式 Linux引導程序的工具,用它作為 Bootloader簡單、方便,而且設置靈活。

1 Bootloader介紹

對于計算機系統來說,從開機到操作系統啟動需要一個引導過程。嵌入式linux系統同樣離不開引導程序,這個引導程序就叫作Bootloader。

簡單地說,Bootloader就是在操作系統內核運行之前運行的一段程序,它類似于PC機中的BIOS程序。通過這段程序,可以完成硬件設備的初始化,并建立內存空間的映射圖的功能,從而將系統的軟硬件環境帶到一個合適的狀態,為最終調用系統內核做好準備。通常,Bootloader是嚴重地依賴于硬件實現的,特別是在嵌入式中。因此,在嵌入式世界里建立一個通用的Bootloader幾乎是不可能的。

2 U-Boot概述

U-Boot(Universal Bootloader),是遵循 GPL 條款的開放源碼項目。它是從FADSROM、8xxROM、PPCBOOT逐步發展演化而來。其源碼目錄、編譯形式與 Linux內核很相似,事實上,不少U-Boot源碼就是相應的Linux內核源程序的簡化,尤其是一些設備的驅動程序,這從U-Boot源碼的注釋中能體現這一點。但是U-Boot不僅僅支持嵌入式Linux系統的引導,而且還支持 NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等嵌入式操作系統。其目前要支持的目標操作系統是 OpenBSD、NetBSD、FreeBSD、4.4BSD、Linux、SVR4、Esix、Solaris、Irix、SCO、Dell、NCR、VxWorks,LynxOS、pSOS、QNX、RTEMS、ARTOS。這是 U-Boot中 Universal的一層含義,另外一層含義則是U-Boot除了支持PowerPC系列的處理器外,還能支持MIPS、x86、ARM、NIOS、XScale等諸多常用系列的處理器。這兩個特點正是U-Boot項目的開發目標,即支持盡可能多的嵌入式處理器和嵌入式操作系統。就目前為止,U-Boot對PowerPC系列處理器支持最為豐富,對Linux的支持最完善。

3 U-Boot的開發與設計

3.1 U-Boot的源碼結構

從網上下載得到的 U-Boot源代碼包,如 UBoot-1.3.3.tar.bz2,經過解壓就可以得到全部的U-Boot源程序,其頂層目錄下有30個子目錄,分別存放和管理不同的源程序。以下是其中較為重要的幾個目錄:

board:該目錄下存放各廠家生產的開發板型號。

cpu:該目錄下存放U-Boot所支持的cpu類型及型號,cpu相關的文件主要是初始化一個執行環境,包括中斷的初始化等。

fs:該目錄下存放U-Boot所支持的文件系統。

include:該目錄下存放各開發板頭文件和配置文件,因此只需修改此文件就可以配置目標板的參數,如波特率、引導參數、物理內存映射等。

drivers:該目錄下存放通用設備的驅動程序。

3.2 交叉編譯環境的建立

交叉編譯環境主要用于跨平臺的源碼編譯,對于ARM平臺有好多源碼需要編譯,如內核、驅動程序、應用程序、Bootloader等。所以在PC環境中建立交叉編譯是必要的。

通常,建立交叉編譯環境的方法有以下幾種:

(1)分步編譯和安裝交叉編譯工具鏈所需要的庫和源代碼,最終生成交叉編譯工具鏈,該方法比較困難。

(2)通過Crosstool腳本工具來一次編譯生成交叉編譯工具鏈。

(3)直接從網上下載已經制作好的交叉編譯工具鏈。該方法最為簡單,但是局限性比較大。建立好交叉編譯工具鏈后,在/etc/bashrc文件的最后加上以下程序:exportPATH=/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin:$PATH這樣就可以使建立的交叉編譯工具鏈成為系統默認的交叉編譯工具了。但是對于不同的編譯對象,有可能出現版本不匹配的問題,經檢驗用crosstool-0.43.tar.gz建立的交叉編譯環境編譯U-Boot-1.3.3.tar.bz2,就可避免此問題的發生。

3.3 U-Boot的編譯

U-Boot是由GCC和Makefile組織編譯的。首先在頂層的 Makefile下設置開發板的定義,然后遞歸到各級目錄下Makefile,最后由編譯過的程序鏈接成可以下載到開發板的U-Boot映象。

3.3.1 頂層Makefile

每個開發板在頂層Makefile中都有定義,例如:

smdk2410_config:unconfig

@$ (MKCONFIG)$ (@:_config=)armarm920tsmdk2410 NULL s3c24x0

這是smdk2410開發板的定義,其中變量arm,arm920t,smdk2410。S3C24x0含義分別為:

ARCH:arm;CUP :arm920t;

BOARD:smdk2410;

SOC:S3C24x0;

NULL的位置是廠商 (這里沒有定義)。

當要編譯S3C2440的U-Boot時,在Makefile文件中沒有定義,所以得添加開發板配置信息,依照smdk2410,其配置如下:

tcs3c2440_config:unconfig

@$ (MKCONFIG)$ (@:_config=)armarm920tsmdk2410 NULL s3c24x0

另外,在頂層 Makefile中還有交叉編譯器和目標平臺的定義,在文件中必須根據目標平臺作相應的配置所示:

ifeq($(ARCH),arm)

CROSS-C0MPILE=arm-linux-

說明當目標平臺為arm時,用amn-linux-gcc交叉編譯器編譯。

3.3.2 開發板配置文件

創建一個新目錄用來存放開發板配置文件,這里以smdk2410開發板為原型,執行如下命令:

#cdboard

#cprsmdk2410 tcs3c2410

#cdtcs3c2440

#ls

#config.mkflash.clowlevel_init.S Makefilesmdk2410.cu-boot.1ds

將smdk2410.c改成tcs3c2440.c

#mvsmdk2410 tes3c2440

修改Makfefile,將其中的COBJS變量改成COBJS:=tcs3c2440.oflash.o。

在編譯U-Boot時,需要頭文件的支持,因此必須為開發板配置頭文件:

#cdinclude/configs

#cpsmdk2410.htcs3c2440.h

至此,開發板文件就暫時配置好了,這時可以直接在終端鍵入make來檢驗上述建立的交叉編譯環境是否可以編譯這個版本的U-Boot。

3.4 U-Boot移植配置

如果以 SMDK2410為模板移植,必須知道目標硬件平臺與它之間的區別,然后再對其做相應的修改。從SMDK2410到S3C2440主要考慮NAND FLASH,由于S3C2440采用的啟動方式是NANDFLASH啟動,因此將SMDK2410的FLASH啟動改為NAND FLASH啟動。

(1)將start.s位于cup/arm920t下面,其主要作用是初始化硬件環境,把U-Boot從FLASH加載到SDRAM中。在此需要修改start.s內容以實現U-Boot從NAND FLASH啟動。

(2)為了實現讀取 NAND FLASH的功能,需要拷貝VlVI中的讀 NAND FLASH文件 nand_read.c到/board/tes3c2440下,并將nand_read.c添加到/board/Makefile的編譯目標文件中,并做如下修改:

OBJS:=tekkaman2440.onand_read.oflash.o

(3)修改/include/configs/tes3c2440.h,添加NANDFLASH相關寄存器的定義,以及對它的讀寫操作實現的具體過程。

(4)每次NAND FLASH啟動都需要進行初始化,所以需要在/board/tcs3c2440/tcs3c2440.c文件中添加對其的初始化函數nand_init()函數。

3.5 編譯U-Boot并下載到開發板執行

配置好上述文件后,退到頂層 Makefile所在目錄執行命令:

#make

在該目錄下會生成System.map(uboot映象符號表)、uboot(uboot映象ELF格式)、u-boot.bin(uboot映象二進制格式)、u-boot.srec(uboot映象S-Record格式)4個文件,其中后3個文件都可以下載到 NAND FLASH中,一般將 uboot.bin文件通過并口-JTAG下載到開發板即可。然后重新啟動開發板,嵌入式開發板最終成功從NANDFLASH啟動。

4 總結

近年來由于U-Boot開放源代碼的特點和它支持各類處理器的廣泛程度,使其備受嵌入式開發人員青睞。隨著嵌入式硬件的發展,U-Boot支持的外圍器件也越來越多。本文以添加U-Boot的NANDFLASH啟動為例,使U-Boot實現了從NANDFLASH啟動的功能,為特定的目標平臺移植UBoot提供了一般方法。

[1]楊水清,張劍,施云飛等編著.ARM嵌入式linux系統開發技術詳解 [M].電子工業出版社.

[2]李亞鋒,歐盛文.Hnux系統開發從入門到精通[M].北京:清華大學出版社,2007.

[3]鳥哥的Linux私房菜基礎學習篇 [M].2版.北京:科學出版社,2005.

[4]杜春雷.ARM體系結構與編程 [M].北京:清華大學出版社,2008.

[5]韋東山.嵌入式Linux應用開發完全手冊 [M].北京:人民郵電出版社.2008.

[6]魏永明,耿丘,鐘書毅.Linux設備驅動程序 [M].第3版.北京:中國電力出版社,2006.

猜你喜歡
嵌入式程序
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 国产浮力第一页永久地址| 日韩毛片基地| 国产欧美精品一区二区| 久久精品人人做人人爽97| 国产专区综合另类日韩一区 | 国产高清无码麻豆精品| 午夜国产大片免费观看| 久久国产精品国产自线拍| 久久精品国产电影| 国产免费久久精品99re不卡| 日日噜噜夜夜狠狠视频| 青草精品视频| 影音先锋丝袜制服| 免费看一级毛片波多结衣| 97国产精品视频自在拍| 亚洲日产2021三区在线| 99re在线视频观看| 国产成人亚洲无吗淙合青草| 在线一级毛片| 国产午夜福利亚洲第一| 国内丰满少妇猛烈精品播| 亚洲综合色在线| 国产极品美女在线观看| 四虎国产精品永久在线网址| 国产毛片高清一级国语 | 一本大道无码日韩精品影视 | 97久久人人超碰国产精品| 91九色国产porny| 另类欧美日韩| 欧美视频免费一区二区三区| 亚洲国产综合自在线另类| 九九久久精品国产av片囯产区| 亚洲乱码在线播放| 国产精品播放| 成人韩免费网站| 制服丝袜在线视频香蕉| 无码内射在线| 精品欧美视频| 黄色网站不卡无码| 久久久久中文字幕精品视频| 巨熟乳波霸若妻中文观看免费 | 国产xxxxx免费视频| 女高中生自慰污污网站| 国产精品lululu在线观看 | 国产乱子精品一区二区在线观看| 色偷偷综合网| 91黄色在线观看| 制服丝袜亚洲| 青青青国产免费线在| 高清无码手机在线观看| 99久久精品免费看国产免费软件| 91视频青青草| 国产毛片久久国产| 久久精品中文字幕免费| 欧美亚洲一区二区三区导航| www精品久久| 伊人大杳蕉中文无码| 一级毛片免费不卡在线视频| 国产成a人片在线播放| 综1合AV在线播放| 欧美成人手机在线观看网址| 97一区二区在线播放| 99一级毛片| 国产日韩精品一区在线不卡| 久久综合色天堂av| 日韩精品毛片| 国产乱人乱偷精品视频a人人澡| 福利视频一区| 久久人午夜亚洲精品无码区| 久久一色本道亚洲| 亚洲一区二区在线无码| 在线人成精品免费视频| 欧洲成人免费视频| 国产精品制服| 内射人妻无码色AV天堂| 国产高清无码第一十页在线观看| 一区二区自拍| 综合久久久久久久综合网| 日韩国产一区二区三区无码| 米奇精品一区二区三区| 国产精品成人观看视频国产| 亚洲日韩精品无码专区|