摘 要:為了能夠在硬件基礎(chǔ)之上,按照產(chǎn)品要求或者研究需要進(jìn)行各種嵌入式應(yīng)用程序的開發(fā),在介紹ARM和Linux特點(diǎn)的基礎(chǔ)上,通過宿主機(jī)和開發(fā)板的對(duì)接模式,成功地將嵌入式Linux操作系統(tǒng)移植到32位微處理器S3C2410A上,從而建立所需的嵌入式開發(fā)平臺(tái)。簡(jiǎn)要討論幾種調(diào)試方法,并提出一種整體打包的方法,最后以一個(gè)簡(jiǎn)單的Qtopia菜單程序?yàn)槔?,說明嵌入式應(yīng)用程序的開發(fā)過程。關(guān)鍵詞:ARM; 嵌入式系統(tǒng); Linux; Qtopia
中圖分類號(hào):TN911-34; TP316 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)18-0030-05
Establishment and Application of Embedded System Development Platform Based on Linux
LIN Ji-min, WU Yi, LIN Xiao
(School of Physics and Optoelectronics Technology, Fujian Normal University, Fuzhou 350007, China)
Abstract: As the mass application of embedded products and particular dominance of Linux system, the development and study about embedded systems have become a main topic of discussion. In order to develop various embedded applications based on hardware according to the requirement of products and the need of study, the embedded Linux system is transplanted into the 32 bit micro-processor S3C2410A successfully with the docking mode of the host and development board according to the characters of ARM and Linux, and then the needed embedded development platform is set up. Several debugging methods are discussed and a overall package method is put forward. Taking a Qtopia application as an example, the development process of an embedded application program is depicted.Keywords: ARM; embedded system; Linux; Qtopia
0 引 言
嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁減,適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、 成本、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng),通常由嵌入式微處理器、 外圍硬件設(shè)備、嵌入式操作系統(tǒng)、及用戶應(yīng)用程序四部分組成,用于實(shí)現(xiàn)對(duì)其他設(shè)備的控制、監(jiān)視或者管理等功能[1],類似于PC機(jī)上的Windows XP系統(tǒng)。嵌入式操作系統(tǒng)是一種更加精簡(jiǎn)、功能相對(duì)完整的操作系統(tǒng),目前比較流行的嵌入式操作系統(tǒng)主要有Linux,Windows CE,Vxworks,μC/OS-Ⅱ等。Linux操作系統(tǒng)是一個(gè)免費(fèi)并且源代碼開放的操作系統(tǒng),用戶可以免費(fèi)獲得Linux源代碼,然后根據(jù)自己的應(yīng)用需求對(duì)系統(tǒng)進(jìn)行定制和改造[2]。
本文選用的32位ARM920T內(nèi)核微處理器是三星公司的S3C2410A-20[3],它可以支持2.4版本和2.6版本內(nèi)核的Linux操作系統(tǒng)。本文把2.4版本內(nèi)核的Linux操作系統(tǒng)嵌入到ARM體系結(jié)構(gòu)中,并在此基礎(chǔ)上搭建嵌入式開發(fā)平臺(tái),然后進(jìn)行各種應(yīng)用程序的開發(fā)。
1 硬件平臺(tái)
本文使用的硬件平臺(tái)是杭州立宇太電子有限公司的ARMSYS系列嵌入式系統(tǒng)開發(fā)板。它使用三星公司的S3C2410A處理器。S3C2410A是一款包含ARM920T內(nèi)核的16/32位精簡(jiǎn)指令集計(jì)算機(jī)(RISC)嵌人式微處理器。ARM920T核由ARM9TDMI、存儲(chǔ)管理單元(MMU)和高速緩存3部分組成。該處理器主要面向手持設(shè)備以及高性價(jià)比、 低功耗的應(yīng)用,運(yùn)行頻率可達(dá)203 MHz,可支持ARM-Linux,Windows CE等操作系統(tǒng)的嵌入式硬件平臺(tái)。
ARMSYS2410開發(fā)板的硬件資源主要由CPU、存儲(chǔ)器、串口、2個(gè)USB Host A型接口、1個(gè)USB Slave B型接口、以太網(wǎng)控制器CS8900及接口、JTAG調(diào)試口、LCD(夜晶顯示屏)觸摸屏接口,音頻接口、電源復(fù)位等電路組成。其中,CPU采用S3C2410A;存儲(chǔ)器由1片64 MB的SDRAM,1片1 MB的NOR FLASH和1片64 MB NADN FLASH構(gòu)成;2個(gè)串口為COM0和COM1。
2 嵌入式Linux系統(tǒng)的移植
有些操作系統(tǒng)如Linux,Windows CE等經(jīng)過移植后可以運(yùn)行在不同的硬件平臺(tái)上。移植就是把某一個(gè)平臺(tái)上的代碼運(yùn)行在其他平臺(tái)上的過程。
2.1 U-Boot的移植
一般而言,計(jì)算機(jī)系統(tǒng)都需要有啟動(dòng)的引導(dǎo)程序。PC機(jī)的引導(dǎo)代碼就是BIOS引導(dǎo)程序,而嵌入式Linux系統(tǒng)的引導(dǎo)加載程序稱之為Bootloader。Bootloader是系統(tǒng)加電后運(yùn)行的第一段代碼,它的主要運(yùn)行任務(wù)就是將內(nèi)核映像從硬盤上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行,即開始啟動(dòng)操作系統(tǒng)[4]。通過Bootloader小程序可以初始化硬件設(shè)備,建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境[3]。Uboot是最常見的Bootloader,主要用來完成系統(tǒng)環(huán)境的初始化,將后期執(zhí)行代碼復(fù)制到SDRAM空間,為L(zhǎng)inux內(nèi)核的運(yùn)行準(zhǔn)備好條件。
2.1.1 Windows 和Linux系統(tǒng)的文件共享
實(shí)現(xiàn)Windows下文件到Linux系統(tǒng)的共享方法有很多種,比如使用Samba,硬盤掛載mount和直接使用虛擬機(jī)的Shared Folders等。在PC上安裝一個(gè)虛擬機(jī)VMware和Red Hat Linux,虛擬機(jī)的好處就是可以在虛擬機(jī)中打開操作系統(tǒng)Linux,實(shí)現(xiàn)Windows XP系統(tǒng)下資源的共享和Linux操作系統(tǒng)圖像界面的全屏化,共享的文件可以在/mnt/hgfs目錄下看到[5]。
2.1.2 配置和編譯U-boot
不同硬件板的U-boot配置也稍有不同。移植U-boot主要包括添加開發(fā)板硬件相關(guān)的文件等。為了不改動(dòng)原來的smkd2410.h文件,在uboot2410/include/configs/下的smdk2410.h復(fù)制一份并更名為armsys2410.h,可以通過armsys2410.h來修改U-boot軟硬件配置,包括硬件板直接相關(guān)聯(lián)的CPU類型、開發(fā)板IP、波特率等。設(shè)置所需要的配置后就能編譯U-boot。U-boot編譯的具體過程如下:
(1) 將板子取名為armsys2410,在Makefile中加入armsys2410_config:unconfig@./mkconfig $(@:_config=) arm arm920t armsys2410 NULL s3c24x0.
(2) 在/u-boot_2410/board/下建立armsys2410目錄,并把/board/smdk2410/下的文件拷貝到/board/armsys2410下,將smdk2410.c更名為armsys2410.c
(3) 編譯U-boot,即可生成u-boot.bin可執(zhí)行文件,具體的執(zhí)行命令如下:
make smdk2410_config
make all ARCH = arm
(4)下載u-boot.bin到S3C2410開發(fā)平臺(tái)的NAND FLASH,成功下載后開發(fā)板上電就能從超級(jí)終端上看到剛下載的U-boot啟動(dòng)程序。啟動(dòng)過程中按下任意鍵,出現(xiàn)如圖1所示的啟動(dòng)畫面。
2.2 zImage的移植
Linux內(nèi)核主要由以下5個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)接口、進(jìn)程間通信。內(nèi)核結(jié)構(gòu)中的幾個(gè)主要目錄存放著大量的源代碼等信息[3]。ARMSYS2410開發(fā)板的CPU內(nèi)核可以移植2.4和2.6版本的Linux內(nèi)核,本文選用2.4版本的Linux內(nèi)核。對(duì)Linux內(nèi)核的移植是一個(gè)龐大的工程,首先要對(duì)其源碼結(jié)構(gòu)有清楚的認(rèn)識(shí),并能深刻理解其中的源代碼,然后在此基礎(chǔ)上修改或編寫需要的源代碼,以達(dá)到預(yù)期的目的。Linux內(nèi)核目錄[2]如下:/Documentation:存放了許多的文檔/arch:不同體系結(jié)構(gòu)特定的內(nèi)核代碼;/drivers:設(shè)備的驅(qū)動(dòng)程序; /fs:文件系統(tǒng)代碼;/include:相關(guān)庫文件;/init:內(nèi)核的初始化代碼;/ipc:進(jìn)程通信代碼;/kernel:主內(nèi)核代碼;/lib:存放高速體系結(jié)構(gòu)特有的和通用函數(shù)的實(shí)現(xiàn);/mm:內(nèi)存管理代碼;/net:網(wǎng)絡(luò)相關(guān)代碼;/scripts:存放了配置內(nèi)核的一些腳本文件。
圖1 啟動(dòng)畫面
2.2.1 交叉編譯環(huán)境
開發(fā)板是ARM9處理器,開發(fā)板平臺(tái)上沒有編譯器,只負(fù)責(zé)存放編譯好的目標(biāo)代碼,并能夠執(zhí)行。源代碼的編譯器是存放主機(jī)Linux系統(tǒng)上的,為了使在主機(jī)Linux系統(tǒng)上編譯的代碼能夠在ARM9處理器中執(zhí)行,必須有一交叉編譯工具。交叉編譯器和鏈接器是在宿主機(jī)上運(yùn)行的,并且能夠生成在目標(biāo)機(jī)上直接運(yùn)行的二進(jìn)制可執(zhí)行文件。安裝cross-2.95.3.tar.bz2,并設(shè)置好交叉編譯器的啟動(dòng)路徑,完成交叉編譯環(huán)境的建立,上文編譯u-boot.bin時(shí)已經(jīng)用到arm-linux-gcc。
2.2.2 配置和編譯Linux內(nèi)核
tar zxvf kernel_armsys_070730.tar.gz(解壓內(nèi)核文件),當(dāng)出現(xiàn)文件夾/kernel時(shí),就能看到上述幾個(gè)目錄。每個(gè)目錄下都有很多的相關(guān)模塊,通過篩選和裁剪,選擇所需要的極少部分即可。開發(fā)板的內(nèi)存容量比較有限,而且有很多的用途,不能一味地去裝很大的內(nèi)核,所以只有通過適當(dāng)?shù)夭眉舨拍苷嬲_(dá)到移植的目的。
配置內(nèi)核:make menuconfig,對(duì)開發(fā)板做進(jìn)一步的裁剪,Load an Alternate Configuration File,選擇一個(gè)ARMSYS2410板的內(nèi)核配置文件作為模板:Armsys2410_cfg;選擇適合LCD和觸摸屏規(guī)格的配置,Console drivers→Frame-buffer support→S3C2410 Board LCD Display Size→320x240;觸摸屏選擇:Character devices→S3C2410 TOUCHSCREEN Size→X>Y,表示橫放模式。為了使嵌入式目標(biāo)系統(tǒng)的Linux內(nèi)核支持NFS客戶端,在進(jìn)行配置內(nèi)核時(shí)必須選擇File systems->Network File Systems->Provide NFSv3 client support 和NFS file system support。做這樣簡(jiǎn)單的配置之后就可以進(jìn)行編譯了,make clean,make dep,創(chuàng)建內(nèi)核的依賴關(guān)系;make zImage,創(chuàng)建內(nèi)核鏡像文件,編譯成功后可得到剛裁剪配置的Linux內(nèi)核壓縮映像文件zImage。
2.2.3 zImage的下載
系統(tǒng)映像的下載只能由 bootloader 提供。通過bootloader 提供的命令行或者交互Shell界面可以指定內(nèi)核映像和文件系統(tǒng)映像的下載位置,也可以檢查目標(biāo)板上內(nèi)存地址中的內(nèi)容[6]。使用U-boot下載Linux內(nèi)核的最快捷方法是通過網(wǎng)絡(luò)傳輸。TFTP是TCP/IP協(xié)議族中一個(gè)用來在客戶機(jī)與服務(wù)器之間進(jìn)行簡(jiǎn)單文件傳輸?shù)膮f(xié)議,用于提供不復(fù)雜、開銷不大的文件傳輸服務(wù),它基于UDP協(xié)議實(shí)現(xiàn)。U-boot支持TFTP協(xié)議,因此可以利用網(wǎng)絡(luò)接口,使用tftp傳輸?shù)姆椒▉硐螺dzImage,在根目錄下建一個(gè)/tftpboot目錄,把zImage拷到/tftpboot目錄下,啟動(dòng)tftp:/etc/init.d/vsftpd start。假設(shè)PC主機(jī)設(shè)IP為10.192.3.100,則開發(fā)板的設(shè)置如下:
表1 開發(fā)板的參數(shù)設(shè)置
開發(fā)板IP 地址10.192.3.200
Tftp服務(wù)器IP地址10.192.3.100
內(nèi)核啟動(dòng)參數(shù)linux_arg noinitrd root=/dev/mtdblock/2init=linuxrc console=ttyS0
Bootcmd啟動(dòng)命令bootcmd nandr c e0000 30008000/bootm
使用ping命令查看是否與主機(jī)連通,若顯示host 10.192.3.100 is alive,說明宿主機(jī)已經(jīng)與目標(biāo)機(jī)建立鏈接。傳輸zImage到開發(fā)板的內(nèi)存為:
SMDK2410 # tftp 30000000 zImage;映像文件zImage傳送到暫存地址0x30000000
SMDK2410 # nandw c e0000 30000000;寫入內(nèi)核的起始?jí)K號(hào)為c的NAND FLASH
這樣就可以把zImage固化到開發(fā)板的內(nèi)存中,通過boot命令即可啟動(dòng)內(nèi)核。
2.3 文件系統(tǒng)的移植
文件系統(tǒng)是操作系統(tǒng)中用來管理用戶文件的內(nèi)核軟件層。根文件系統(tǒng)是Linux系統(tǒng)的核心部分,包括系統(tǒng)使用的軟件和庫,以及所有用來為用戶提供支持架構(gòu)和用戶使用的應(yīng)用軟件,并作為存儲(chǔ)數(shù)據(jù)讀/寫結(jié)果的區(qū)域。在Linux系統(tǒng)啟動(dòng)時(shí),首先完成內(nèi)核安裝及環(huán)境初始化,最后尋找一個(gè)文件系統(tǒng)作為根文件系統(tǒng)被加載。嵌入式系統(tǒng)中通??梢赃x擇的根文件系統(tǒng)有:Romfs,Cramfs,Ramfs,YAFFS,JFFS和JFFS2等。本文使用的YAFFS是專為NAND FLASH存儲(chǔ)器設(shè)計(jì)的嵌入式文件系統(tǒng),適用于大容量的存儲(chǔ)設(shè)備,YAFFS 是可讀寫的文件系統(tǒng),而且保存在文件系統(tǒng)的文件和設(shè)置在掉電后不會(huì)丟失[1-2]。
U-boot也支持nfs掛載功能,把開發(fā)板提供的root-armsys-nfs-050801.tgz放到/armsys2410目錄下,解壓后的文件名更改為root,這是網(wǎng)絡(luò)文件系統(tǒng)。在/armsys2410/root/bin/目錄下有一個(gè)用于下載根文件系統(tǒng)到NAND FLASH的下載工具Writerootfs。把根文件系統(tǒng)壓縮包root_armsys_l35t32.tgz拷到在/armsys2410/root目錄下,這個(gè)壓縮包就是用于固化在NAND FLASH上的根文系統(tǒng)YAFFS。
(1) 關(guān)閉Windows XP和Linux系統(tǒng)的防火墻,設(shè)置文件系統(tǒng)的nfs掛載,在宿主機(jī)上先啟動(dòng)NFS服務(wù):/etc/rc.d/init.d/nfs start。設(shè)置服務(wù)器的共享目錄,編輯文件/etc/exports,在文件中添加內(nèi)容:/armsys2410/root *(rw,sync,no_root_squash),然后保存退出。其中:/armsys2410/root代表要共享輸出的root文件系統(tǒng)的共享目錄;*代表所有客戶機(jī)都可以掛載次文件系統(tǒng);rw代表客戶機(jī)可以讀寫許可地掛載它們的根文件系統(tǒng);no_root_squash表示允許客戶機(jī)以主機(jī)上的root身份掛載根文件系統(tǒng)[2]。
(2) 開發(fā)板的啟動(dòng)參數(shù)設(shè)置:setenv linux_arg root=/dev/nfs init=/linuxrc nfsroot=10.192.3.100:/armsys2410/root ip=10.192.3.200:10.192.3.100:10.192.3.1:255.255.255.0:jmaylin:eth0:off console=ttyS0。它說明宿主機(jī)掛載在目標(biāo)機(jī)上的目錄是/armsys2410/root。
(3) 重啟開發(fā)板,看到Welcome to NFS root file system!說明成功掛載主機(jī)目錄/armsys2410/root。使用Writerootfs命令開始下載文件系統(tǒng)root_armsys_l35t32.tgz,該文件系統(tǒng)集成了Qtoqia等應(yīng)用程序,開發(fā)板上電后,除了進(jìn)入文件系統(tǒng)外,還在LCD上顯示Qtoqia應(yīng)用程序圖形界面。
3 嵌入式Linux應(yīng)用程序的開發(fā)
經(jīng)過上面的過程,一個(gè)嵌入式開發(fā)平臺(tái)基本搭建完成。在這個(gè)平臺(tái)上就能進(jìn)行各種應(yīng)用程序的開發(fā)。基于ARMSYS2410開發(fā)板,其源程序的編寫、編譯調(diào)試等過程都在主機(jī)上進(jìn)行,最后再把編譯生成的可執(zhí)行文件固化到開發(fā)板上去運(yùn)行,下面討論幾種調(diào)試方法。
3.1 調(diào)試方法
(1) Nfs掛載
在配置內(nèi)核的時(shí)候,選擇選項(xiàng)File systems→Network File Systems→Provide NFSv3 client support 和NFS filesystem support,這樣才能保證正常地從開發(fā)板的文件系統(tǒng)去掛載主機(jī)上的共享目錄。然后可以在主機(jī)上使用交叉編譯工具編譯和直接運(yùn)行,只要把相應(yīng)的庫文件設(shè)置好即可。這種方法不用傳遞可執(zhí)行文件,即可在開發(fā)板的文件系統(tǒng)直接運(yùn)行主機(jī)上的可執(zhí)行文件,方便快捷,是較為常用的一種調(diào)試方法。
(2) ftp傳輸方法
① 查看主機(jī)有沒有裝ftp服務(wù):rpm -qa|grep vsftpd,然后啟動(dòng)ftp:/sbin/service vsftpd start。主機(jī)上的/var/ftp目錄就是ftp的共享目錄,把可執(zhí)行文件(比如hello)放在該目錄下。
② 開發(fā)板文件系統(tǒng):設(shè)置開發(fā)板的IP,使其與宿主機(jī)IP處于同一網(wǎng)段。在開發(fā)板的文件系統(tǒng)里ftp登錄主機(jī):ftp 10.192.3.100,使用匿名登錄,顯示主機(jī)共享/var/ftp目錄下的hello可執(zhí)行文件,下載可執(zhí)行文件到開發(fā)板的文件系統(tǒng):ftp>get hello。通常,使用這種方法還要修改可執(zhí)行文件的執(zhí)行模式。
(3) U盤掛載
可以把在主機(jī)上可執(zhí)行文件hello拷到U盤里面,利用開發(fā)板的USB HOST端口把U盤掛載到板上,然后拷貝U盤里的hello到文件系統(tǒng)里執(zhí)行。
(4) 整體打包
上面幾種方法都是在已有的文件系統(tǒng)上操作的,整體打包的方法是對(duì)預(yù)下載的整個(gè)文件系統(tǒng)進(jìn)行編輯。加載的文件系統(tǒng)YAFFS是壓縮格式的root_armsys.tgz,只有當(dāng)開發(fā)板上電啟動(dòng)后,才把根文件系統(tǒng)解壓出來。在主機(jī)Linux系統(tǒng)/armsys2410目錄下,新建一個(gè)test文件夾,把root_armsys.tgz拷到/test目錄下并解壓,再把應(yīng)用程序的可執(zhí)行文件放到/test目錄下,重新把所有文件打包成root_armsys.tgz:tar -czvf root_armsys.tgz ./* ,再一次加載到NAND FLASH中,更新原來的文件系統(tǒng)。這種方法是直接對(duì)整個(gè)根文件系統(tǒng)進(jìn)行編輯,適用于在開發(fā)文件系統(tǒng)時(shí)使用,但是每次都要重新下載整個(gè)文件系統(tǒng),比較繁瑣。
3.2 Qtopia應(yīng)用程序
Qt/Embedded是Trolltech公司開發(fā)的面向嵌入式系統(tǒng)的Qt版本,2000年11月發(fā)布了第一個(gè)Qt/E版本,而Qtopia則是構(gòu)建于Qt/E之上的類似桌面系統(tǒng)的應(yīng)用環(huán)境,包括PDA和手機(jī)等掌上系統(tǒng)常見的功能,如:電話簿、圖像瀏覽、Media播放器、日歷等[6]。Qt應(yīng)用程序?qū)崿F(xiàn)的是對(duì)靜態(tài)圖像的顯示及其形態(tài)的處理操作[7]。
為了開發(fā)和調(diào)試Qtopia應(yīng)用程序,必須安裝基于PC和ARM的Qt開發(fā)環(huán)境。下面以一個(gè)簡(jiǎn)單的菜單程序?yàn)槔齺碚f明Qtopia應(yīng)用程序的開發(fā)過程。程序開發(fā)流程如圖2所示。
圖2 Qt應(yīng)用程序開發(fā)流程圖
(1) 使用基于PC的Qt開發(fā)環(huán)境編譯
在建立基于PC的Qt開發(fā)環(huán)境時(shí),需要編輯/etc/ld.so.conf,使得在源程序編譯鏈接過程中能找到相應(yīng)的庫文件:/armsys2410/qt_x86/qt/lib和/armsys2410/qt_x86/qtopia/lib。保存退出后激活設(shè)置ldconfig。當(dāng)用完庫后可以把/etc/ld.so.conf改回來,不然會(huì)影響系統(tǒng)上其他應(yīng)用程序的啟動(dòng),加上“#”將其注釋掉。設(shè)置基于PC的Qt開發(fā)環(huán)境的環(huán)境變量,保證編譯的正確路徑:source set-env。主程序源代碼main.cpp如下:
#include\"menu.h\"
int main(int argc,char **argv)
{ QApplication app(argc,argv);//define a application
MainWidget *mainwidget = new MainWidget(0);//define a MainWidget object
mainwidget->setGeometry(10,30,320,240);//set the object′s coordinate and size
app.setMainWidget(mainwidget);//send the creating object to current application
mainwidget->show();//show window
int result = app.exec();//run or execute the application repeatedly
return result;
}
利用Qt環(huán)境調(diào)試過程:
①產(chǎn)生工程文件:progen -t app.t -o main.pro;
②產(chǎn)生Makefile文件:tmake -o Makefile main.pro,修改Makefile中的lib,加鏈接庫-lm lstdc++即可;
③運(yùn)行make產(chǎn)生menu的可執(zhí)行文件;
④打開虛擬幀緩存:qvfb ,運(yùn)行可執(zhí)行文件menu:./menu -qws。
(2) 使用基于開發(fā)板的Qt開發(fā)環(huán)境編譯
設(shè)置基于ARM的Qt開發(fā)環(huán)境的環(huán)境變量:source set-env。為了能生成可在目標(biāo)板上運(yùn)行的可執(zhí)行文件,需要把生成Makefile文件中的編譯器、鏈接器gcc,g++分別改為arm-linux-gcc和arm-linux-g++,其他步驟同上。最后選擇一種文件傳輸辦法,把menu送到ARM板上運(yùn)行,執(zhí)行界面如圖3所示。
圖3 執(zhí)行界面
4 結(jié) 語
本文在分析ARM和Linux特點(diǎn)的基礎(chǔ)上,詳細(xì)介紹了Linux系統(tǒng)移植的各個(gè)部分,其中包括U-boot,zImage和YAFFS文件系統(tǒng)的具體操作過程。由此構(gòu)建了嵌入式Linux開發(fā)系統(tǒng)平臺(tái),指出Linux移植過程中系統(tǒng)的精簡(jiǎn)度、安全性、穩(wěn)定性等方面均需要開發(fā)人員做進(jìn)一步的考慮和研究。 給出了幾種常見的嵌入式開發(fā)的調(diào)試方法,并進(jìn)行簡(jiǎn)單的討論和比較。最后通過調(diào)試和編譯簡(jiǎn)單的Qtopia應(yīng)用程序,說明了嵌入式應(yīng)用程序的開發(fā)過程,為開發(fā)實(shí)際應(yīng)用程序和驅(qū)動(dòng)程序奠定了基礎(chǔ)。
參考文獻(xiàn)
[1]孫天澤,袁文菊,張海峰.嵌入式設(shè)計(jì)及Linux驅(qū)動(dòng)開發(fā)指南——基于ARM9處理器[M].北京:電子工業(yè)出版社,2005.
[2]王黎明,陳雙橋,閆曉玲,等.ARM9嵌入式系統(tǒng)開發(fā)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[3]Samsung Electronic. User′s mannual S3C2410X 32Bit RISC microprocessor[M].South Korea: Samsung Electronic, 2003.
[4]葉林,方建軍. 基于ARM9嵌入式系統(tǒng)的BootLoader設(shè)計(jì)[J].科技信息,2009(11):36-37.
[5]鄒穎婷,李紹榮.ARM9上的嵌入式Linux 系統(tǒng)移植[J].自動(dòng)化技術(shù)與應(yīng)用,2009,28(6):43-45.
[6]劉文峰,李程院,李善平.嵌入式Linux操作系統(tǒng)的研究[J].浙江大學(xué)學(xué)報(bào):工學(xué)版,2004,38(4):447-452.
[7]劉福才,趙佳偉,湯麗娜.基于嵌入式Linux系統(tǒng)的Qt/Embedded圖像處理界面開發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(11):116-117,149.
[8]孫瓊.嵌入式Linux應(yīng)用程序開發(fā)詳解[M].北京:人民郵電出版社,2006.
[9]鄒思軼.嵌入式Linux設(shè)計(jì)與應(yīng)用[M].北京:清華大學(xué)出版社,2002.
[10]歐文盛.ARM嵌入式Linux應(yīng)用實(shí)例開發(fā)[M].北京:中國(guó)電力出版社,2008.