嵌入式系統移植流程


1、環境說明

  虛擬機上將Linux系統移植到S3C2440的TQ2440開發板上,軟件平台為Ubuntu14.0下的交叉編譯環境。

2、任務流程

1、虛擬機安裝

2、虛擬機上安裝ubuntu系統

3、建立交叉編譯環境

4、Uboot移植

5、操作系統內核移植

6、文件系統制做

3、移植准備

       首先在電腦上下載VMware,根據提示直接安裝,然后下載Ubuntu的鏡像文件,在VMware中新建虛擬機,安裝程序光盤中映像文件(iso),根據提示一步步安裝,配置空間大小,網絡連接,I/0控制器類型等等,最后就可以在VMware環境中運行Ubuntu系統。

       隨后,在Ubuntu系統中安裝交叉編譯環境,用天嵌給的交叉編譯文件,在Ubuntu系統下解壓文件,配置環境,顯示下圖表示交叉編譯環境搭建完成。

 

 

圖1、交叉編譯環境搭建完成

3、uboot移植

3.1、Bootloader簡介

       嵌入式操作系統中,BootLoader是在操作系統內核運行之前運行。可以初始化硬件設備、建立內存空間映射圖,從而將系統的軟硬件環境帶到一個合適狀態,以便為最終調用操作系統內核准備好正確的環境。在嵌入式系統中,通常並沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內嵌一段短小的啟動程序),因此整個系統的加載啟動任務就完全由BootLoader來完成。在一個基於ARM7TDMI core的嵌入式系統中,系統在上電或復位時通常都從地址0x00000000處開始執行,而在這個地址處安排的通常就是系統的BootLoader程序。Uboot是就是一種功能強大的bootloader。

3.2、Uboot移植流程

(1) 在board下新建一個目錄embedsky,將sansung/smdk2410目錄復制到embedsky目錄下,並將文件夾改成smdk2440。

(2) 將smdk2440/smdk2410.c改名為smdk2440.c。

(3) 在include/configs目錄下,將smdk2410.h復制為smdk2440.h。

(4) 修改頂層的makefile文件在在1880行加入自己的處理器信息。

(5) 修改board/embedsky/smdk2440下的Makefile文件,將COBJS:=smdk2410.o flash.o改為smdk2440.olash.o。

(6) 修改/cpu/arm920t/start.S文件,使u-boot可以從NandFlash啟動。

(7) 在board/smdk2440/目錄下加入NandFlash讀取函數。

(8) 修改board/smdk2440/lowlevel-init.S文件。

(9) 修改include/configs/smdk2440.h如下。

上述修改完后,就直接make,得到u-boot.bin燒到Nand Flash即可。

圖2、uboot.bin文件生成

4、內核移植

4.1、內核移植簡介

Linux內核高效穩定,易於定制,具有完善的網絡通信和文件管理機制,優秀的開發工具等優點,使得Linux成為計算機領域,特別是嵌入式系統領域里的新寵.在諸如工業控制、PDA、智能手機等領域都有一定程度的應用.然而,在嵌入式領域中,硬件的體系結構多種多樣,種類繁多。

4.2、Kernel移植

       Linux kernel的配置體系由三部分構成,分別是:  

Makefile:分布在 Linux 內核源代碼根目錄及各層目錄中,定義Linux kernel的編譯規則,依據.config中定義的CONFIG_xxxx=xxxxx確定xxx以何種方式編譯進kernel。

Kconfig:配置選項的文件,各個子目錄下的Kconfig定義了子目錄的功能模塊的配置選項。

配置工具:配置命令解釋器(對配置腳本中使用的配置命令進行解釋)和配置用戶界面(提供基於字符界面、基於Ncurses 圖形界面以及基於Xwindows圖形界面的用戶配置界面,各自對應於make config、make menuconfig和make xconfig)。通過對配置工具選項進行配置后生成配置文件.config,.config文件決定Kconfig中的配置項是否編譯進入kernel。

 

圖3、Kconfig配置項

編譯配置好的內核,即可生成內核鏡像文件zImage。

5、文件系統

5.1、嵌入式文件系統

       嵌入式文件系統(Embedded file system)是指嵌入式系統中實現文件存取、管理等功能的模塊,提供一系列文件輸入輸出等文件管理功能,為嵌入式系統和設備提供文件系統支持。在嵌入式系統中,應用程序通常需要對信息進行存取操作,當任務運行的時候,任務可以在其任務堆棧中存放少量信息,但是存儲量要受到內存空間的嚴格限制,而且在內存空間中的信息隨着任務的退出而消失,不適於存放要長期保存的信息。

“在Linux系統中一切皆是文件”這句話是我們學習Linux系統的時候常常聽到的一句話。雖然有些誇張,但是它揭示了文件系統對於Linux系統的重要性;實際上文件系統對於所有的操作系統都很重要,因為它們把大部分的硬件設備和軟件數據以文件的形式進行管理。

5.2、文件系統制作

       制作文件系統,首先需要用busybox編譯出文件系統所需的應用程序,然后再做文件系統。先獲取BusyBox源碼、解壓、修改並配置BusyBox。配置過程先修改makefile文件中編譯器,使用arm-Linux,然后make menuconfig進入配置單,配置完成編譯安裝BusyBox。完成編譯后會生成“bin”、“sbin”、“usr”目錄和“linuxrc”。將其放入自己新建的一個文件目錄中,然后新建“dev”、“etc”、“home”、“lib”、“mnt”、“opt”、“proc”、“root”、“sddisk”、“sys”、“tmp”、“udisk”、“var”、和“web”目錄,同時在原有的“usr”目錄下面新建一個“lib”和“share”目錄。然后在文件中添加內容。

 

圖4、BusyBox配置單

       然后使用制作yaffs文件系統的軟件,它做出的yaffs文件系統格式的鏡像就可以使用了,操作指令#mkyaffsimage_2 文件名 鏡像文件名。其中mayaffsimage_2軟件在交叉編譯中就提供了,安裝交叉編譯器同時也安裝了它。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM