新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 利用U-Boot實現uClinux向S3C44B0的移植

        利用U-Boot實現uClinux向S3C44B0的移植

        作者: 時間:2012-04-10 來源:網絡 收藏

        1 引言

        本文引用地址:http://www.104case.com/article/171659.htm

        是Samsung公司推出的一款為手持設備或其他通用設備開發的32位處理器,它基于ARM7TDMI核,沒有內存管理單元(MMU)。在采用無MMU的微處理器的嵌入式系統中廣泛采用的就是系統,作為linux的衍生系統,其具有支持多任務、內核精簡、高效穩定和源代碼開放的優點。系統的基本過程包括:獲取較新版本的linux-2.6.9內核源碼,根據目標平臺對源碼中與硬件平臺相關部分進行修改,添加必要的外設驅動程序,對系統進行針對目標平臺的交叉編譯,生成的內核映像文件的下載調試等。

        2 硬件環境介紹

        硬件平臺以為核心,采用的外部晶振頻率為6MHZ,內核主頻最高可達到66MHZ,平臺以2MB的AMD29LV160DB做 rom,其地址空間為0~1fffff,以HY57V1620HG sdram做內存,地址空間為0c000000~0c7fffff,共8MB,以RTL8019as作為網絡控制芯片,接在的Bank5 上,通過JTAG與PC機的并口連接支持在線調試與程序燒寫。

        48.jpg
        圖1 硬件平臺框圖

        3

        3.1 交叉編譯環境的建立

        交叉編譯是運行在某機器(宿主機)上的編譯器編譯某個源程序生成在另一臺機器(目標機)上運行的目標代碼的過程。本文的交叉編譯環境建立如下:在PC機上安裝Linux操作系統做為我們的宿主機,版本為Fedore Core 5,從http : // www. .org/上下載交叉編譯工具鏈arm-elf-tools20040427并安裝在Linux 宿主機上,這樣就建立了uClinux-arm的交叉編譯環境。

        3.2 -1.1.2的

        Bootloader是系統加電后運行的第一段代碼,在一個基于ARM的嵌入式系統中,系統上電或復位時通常都從地址0X00000000處開始執行,而這個地址處通常就是系統的bootloader,通過這段程序可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境調整到一個合適的狀態,以便為最終的調用操作系統內核準備好正確的環境。

        本文中bootloader采用對進行移植來的。的全稱是Universal Boot Loader,是德國DENX小組開發的用于多種嵌入式CPU的Bootloader引導程序, 支持PowPC、ARM、MIPS、M68K等多種處理器平臺,支持Linux、VxWorks、NetBSD等多種嵌入式操作系統,主要用來開發嵌入式系統初始化代碼bootloader,其易于裁剪和調試,尊循GPL (通用公共許可) 公約,完全開放源代碼。可以從http://sourceforge.net/projects/u-boot得到它多個版本的源碼,本文是以u- boot-1.1.2為例進行移植的。

        在移植前可以通過查看doc文檔了解U-Boot源碼的主要結構,在眾多的目錄中與移植相關的主要是board、cpu、drivers等幾個目錄。移植的基本過程如下:

        (1) 查找以S3C44B0處理器為核心的硬件平臺,此目的是為了簡化移植難度;

        在board/下運行 find -exec grep -l 44B0 {} 找到/dave/B2/B2.c,由此我們知道dave公司的B2平臺是以S3C44B0處理器為核心的,所以移植可以參考B2平臺進行;

        (2) 建立我們目標平臺的目錄lanlan,把B2板的文件拷到建立的目錄中,但需要修改文件的名稱;

        (3) 修改新建目錄中的文件的名稱,將文件中所有的B2都改成lanlan;

        (4) 在include/configs/添加目標平臺的配置文件lanlan.h;此文件可以參考B2.h建立;

        (5) 修改總目錄下的Makefile文件,添加目標板的編譯信息;

        這個過程完成后可以在u-boot/目錄下依次運行make lanlan_config ; make進行編譯,編譯完成后如果能生成u-boot.bin等文件,則說明前面的過程無誤,如果出現錯誤,則需要根據錯誤信息進行相關修改;

        (6) 修改硬件相關的文件,在cpu/中有S3C44B0的目錄,說明U-Boot已經提供了對S3C44B0的支持,我們只是需要修改部分文件使其適合我們的目標平臺,主要修改的是cpu/下start.S 和serial.c,include/configs/下的lanlan.h中關于cpu的頻率、串口波特率、PLLCON寄存器、flash和 sdram的大小、基地址和網絡控制芯片的基地址等內容,確定修改正確后運行make lanlan_config;make命令,編譯生成的u-boot.bin就是我們需要的引導程序;

        (7) 通過JTAG將生成的u-boot.bin燒寫到目標平臺的0x0地址,配置Linux下的minicom或者Windows下的超級終端,注意配置的串口及串口波特率要與U-Boot中設置的一樣,按復位鍵或上電重啟目標平臺后可以從minicom或超級終端看到U-Boot在系統中運行了。

        通過以上步驟,完成了U-Boot移植的主要工作。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 仁布县| 西充县| 阿拉善盟| 梅河口市| 弋阳县| 余干县| 收藏| 靖边县| 旌德县| 旬阳县| 广昌县| 九寨沟县| 遂平县| 双流县| 资中县| 城口县| 玉溪市| 湘乡市| 恩施市| 安丘市| 枞阳县| 东港市| 霍城县| 彭山县| 西华县| 涿州市| 台湾省| 剑川县| 金坛市| 岐山县| 三明市| 湟中县| 鲁山县| 南投县| 遂川县| 安顺市| 荃湾区| 宣武区| 神农架林区| 周宁县| 孝感市|