亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于S3C2440的嵌入式引導程序的開發(fā)

        2010-08-15 00:47:58華中農(nóng)業(yè)大學工學院
        湖北農(nóng)機化 2010年6期
        關鍵詞:源碼開發(fā)板內(nèi)核

        華中農(nóng)業(yè)大學工學院 王 龍

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

        1 Bootloader介紹

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

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

        2 U-Boot概述

        U-Boot(Universal Bootloader),是遵循 GPL 條款的開放源碼項目。它是從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來。其源碼目錄、編譯形式與 Linux內(nèi)核很相似,事實上,不少U-Boot源碼就是相應的Linux內(nèi)核源程序的簡化,尤其是一些設備的驅動程序,這從U-Boot源碼的注釋中能體現(xiàn)這一點。但是U-Boot不僅僅支持嵌入式Linux系統(tǒng)的引導,而且還支持 NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等嵌入式操作系統(tǒng)。其目前要支持的目標操作系統(tǒng)是 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項目的開發(fā)目標,即支持盡可能多的嵌入式處理器和嵌入式操作系統(tǒng)。就目前為止,U-Boot對PowerPC系列處理器支持最為豐富,對Linux的支持最完善。

        3 U-Boot的開發(fā)與設計

        3.1 U-Boot的源碼結構

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

        board:該目錄下存放各廠家生產(chǎn)的開發(fā)板型號。

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

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

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

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

        3.2 交叉編譯環(huán)境的建立

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

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

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

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

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

        3.3 U-Boot的編譯

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

        3.3.1 頂層Makefile

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

        smdk2410_config:unconfig

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

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

        ARCH:arm;CUP :arm920t;

        BOARD:smdk2410;

        SOC:S3C24x0;

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

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

        tcs3c2440_config:unconfig

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

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

        ifeq($(ARCH),arm)

        CROSS-C0MPILE=arm-linux-

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

        3.3.2 開發(fā)板配置文件

        創(chuàng)建一個新目錄用來存放開發(fā)板配置文件,這里以smdk2410開發(fā)板為原型,執(zhí)行如下命令:

        #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時,需要頭文件的支持,因此必須為開發(fā)板配置頭文件:

        #cdinclude/configs

        #cpsmdk2410.htcs3c2440.h

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

        3.4 U-Boot移植配置

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

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

        (2)為了實現(xiàn)讀取 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相關寄存器的定義,以及對它的讀寫操作實現(xiàn)的具體過程。

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

        3.5 編譯U-Boot并下載到開發(fā)板執(zhí)行

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

        #make

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

        4 總結

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

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

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

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

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

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

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

        猜你喜歡
        源碼開發(fā)板內(nèi)核
        基于網(wǎng)頁源碼結構理解的自適應爬蟲代碼生成方法
        計算機應用(2023年6期)2023-07-03 14:11:56
        基于圖神經(jīng)網(wǎng)絡的軟件源碼漏洞檢測方法
        計算機時代(2023年6期)2023-06-15 17:49:09
        萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        企業(yè)如何保護源碼
        基于嵌入式Linux內(nèi)核的自恢復設計
        Linux內(nèi)核mmap保護機制研究
        Microchip最新推出兩款PIC32 Curiosity開發(fā)板
        淺析單片機開發(fā)板的設計與制作
        電子制作(2017年22期)2017-02-02 07:10:14
        基于數(shù)據(jù)結構教輔系統(tǒng)的實驗課程改革
        計算機教育(2016年4期)2016-05-20 02:36:05
        亚洲无线码1区| 无码一区二区三区在线| 五月天精品视频在线观看| 一区二区三区免费视频网站| 偷偷夜夜精品一区二区三区蜜桃| 国产99久久久国产精品~~牛| 中文字幕一区二区三区人妻少妇| 久精品国产欧美亚洲色aⅴ大片| 亚洲av一区二区三区网站 | 亚洲自拍愉拍| 久久精品久久精品中文字幕| 免费av一区二区三区| 免费看泡妞视频app| 69天堂国产在线精品观看| 亚洲av网一区二区三区成人| 综合五月激情二区视频| 少妇对白露脸打电话系列| 久久精品国产88久久综合| 久久久人妻一区二区三区蜜桃d | 日本在线观看一区二区三区视频 | 加勒比一本heyzo高清视频| 一本大道色婷婷在线| 制服丝袜人妻中出第一页| 丰满又紧又爽又丰满视频| 日本艳妓bbw高潮一19| 91麻豆精品激情在线观看最新| 青青草视全福视频在线| 亚洲精品国产精品乱码视色| 少妇装睡让我滑了进去| 久久久亚洲精品蜜桃臀| 成人高清在线播放视频| 狠狠色综合7777久夜色撩人ⅰ| 成人爽a毛片一区二区免费| 一区二区三区在线日本| 亚洲国产果冻传媒av在线观看| 囯产精品一品二区三区| 亚洲人成网站18男男| 久久丝袜熟女av一区二区| 熟女性饥渴一区二区三区| 精品欧美久久99久久久另类专区| 国产av一级二级三级|