基于PXA255的PDA交通管理系統(tǒng)在Linux環(huán)境下的實(shí)現(xiàn)
4 嵌入式 Linux的應(yīng)用
4.1 嵌入式Linux
高端嵌入式系統(tǒng)要求許多高級(jí)的功能,如圖形用戶界面和網(wǎng)絡(luò)支持。很多高端RTOS供應(yīng)商已經(jīng)提供了這些功能,但其價(jià)格較高。微軟的Windows CE有此類功能,但不具備大多數(shù)嵌入式系統(tǒng)要求的實(shí)時(shí)性能,而且難以移植。以DOS為基礎(chǔ)用單獨(dú)的第三方工具拼湊成一個(gè)操作系統(tǒng),同樣不能滿足嵌入式系統(tǒng)的要求。嵌入式Linux操作系統(tǒng)以價(jià)格低廉、功能強(qiáng)大又易于移植而被廣泛采用,成為新興的操作系統(tǒng)。Linux嵌入式操作系統(tǒng)是一種實(shí)時(shí)的、支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,是嵌入式系統(tǒng)極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動(dòng)軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動(dòng)接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等。嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時(shí)高效性、硬件的相關(guān)依靠性、軟件固態(tài)化及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。
Linux是與Unix相似、以核心為基礎(chǔ)、完全內(nèi)存保護(hù)、多任務(wù)多進(jìn)程的操作系統(tǒng),為嵌入操作系統(tǒng)提供了一個(gè)極有吸引力的選擇。PDA選擇嵌入式Linux作為操作系統(tǒng),主要原因如下:
(1)系統(tǒng)處理實(shí)時(shí)性好,性能穩(wěn)定。
(2)文件管理系統(tǒng)更適合于大量的圖像數(shù)據(jù)。
(3)內(nèi)核小巧和高效,作為專用系統(tǒng),具有系統(tǒng)小、指令精簡(jiǎn)、處理速度快等特點(diǎn)。
(4)系統(tǒng)數(shù)據(jù)置于ROM/FLASH MEMORY,調(diào)用速度快,不會(huì)被改變,穩(wěn)定性好。
(5)本身內(nèi)置網(wǎng)絡(luò)支持。
4.2 PAD中嵌入式 Linux內(nèi)核實(shí)現(xiàn)方法
Linux系統(tǒng)分為三個(gè)層次:用戶、核心和硬件。Linux 內(nèi)核可直接從Internet下載,也可從一發(fā)行版本如Red Hat Linux、Turbo Linux得到。Linux核心源代碼執(zhí)行GPL 版權(quán)協(xié)議,任何人都可在遵循GPL版權(quán)協(xié)議條件下對(duì)Linux核心進(jìn)行修改和補(bǔ)充,并可根據(jù)自身應(yīng)用系統(tǒng)的需求,進(jìn)行裁減定制,形成針對(duì)應(yīng)用的嵌入式Linux內(nèi)核。本方案采用Red hat Linux 6.0,內(nèi)核版本2.2.5,在保留TCP/IP 網(wǎng)絡(luò)支持、STAR902以太網(wǎng)卡驅(qū)動(dòng)的情況下,定制后的內(nèi)核大小為360KB,足以滿足本系統(tǒng)中嵌入式硬件及軟件的需求。
Linux核心源程序通常都安裝在/usr/src/linux下,核心源程序文件按樹(shù)形結(jié)構(gòu)進(jìn)行組織。在這里,對(duì)Linux內(nèi)核進(jìn)行分析:
(1)系統(tǒng)的引導(dǎo)和初始化:Linux系統(tǒng)的引導(dǎo)有Lilo、 Loadin引導(dǎo)和Linux的自舉引導(dǎo)三種。而Linux的自舉引導(dǎo)所對(duì)應(yīng)源程序?yàn)閍rch/i386/boot/bootsect.S,它為實(shí)模式匯編程序。無(wú)論哪種引導(dǎo)方式,最后都要跳轉(zhuǎn)到 arch/i386/Kernel/setup.S。setup.S主要進(jìn)行實(shí)模式下的初始化,為系統(tǒng)進(jìn)入保護(hù)模式做準(zhǔn)備。此后,系統(tǒng)執(zhí)行 arch/i386/kernel/head.S。head.S 中定義的一段匯編程序setup_idt,負(fù)責(zé)建立一張256項(xiàng)idt表,此表保存著所有自陷和中斷的入口地址,其中包括系統(tǒng)調(diào)用總控程序system_call 入口地址。除此之外,head.S還要做一些其他初始化工作。
(2)系統(tǒng)初始化后,運(yùn)行第一個(gè)內(nèi)核程序asmlinkage void__init start_kernel(void),它定義在/usr/src/linux/init/main.c中。它通過(guò)調(diào)用usr/src/linux/arch/i386/kernel/traps.c中的函數(shù)void__init trap_init(void),把各個(gè)自陷和中斷服務(wù)程序的入口地址設(shè)置到idt表中。其中系統(tǒng)調(diào)用的總控程序system_call就是中斷服務(wù)程序之一。void__init trap_init(void)函數(shù)則通過(guò)調(diào)用一個(gè)宏 set_system_gate,把系統(tǒng)調(diào)用的總控程序入口掛在中斷0x80上。其中SYSCALL_VECTOR是定義在/usr/src/linux/arch/i386/kernel/irq.h中的一個(gè)常量0x80,而 system_call 為中斷總控程序的入口地址。中斷總控程序是用匯編語(yǔ)言在/usr/src/linux/arch/i386/kernel/entry.S中定義。
(3)中斷總控程序主要負(fù)責(zé)保存處理機(jī)執(zhí)行系統(tǒng)調(diào)用前的狀態(tài),檢驗(yàn)當(dāng)前調(diào)用是否合法,并根據(jù)系統(tǒng)調(diào)用向量,使處理機(jī)跳轉(zhuǎn)到保存在sys_call_table 表中的相應(yīng)系統(tǒng)服務(wù)例程的入口。從系統(tǒng)服務(wù)例程返回后退回用戶程序狀態(tài),而系統(tǒng)調(diào)用向量則在/usr/src/linux/include/asm-386/unistd.h中定義,sys_call_table 表是在/usr/src/linux/arch/i386/kernel/entry.S中定義,系統(tǒng)調(diào)用的用戶編程接口在 /usr/src/linux/include/asm-386/unistd.h 中定義。
(4)由此可見(jiàn),Linux的系統(tǒng)調(diào)用也象DOS系統(tǒng)的 int 21h中斷服務(wù),把0x80中斷作為總的入口,然后轉(zhuǎn)到保存在sys_call_table表中的各種中斷服務(wù)例程的入口地址,形成各種不同的中斷服務(wù)。由以上源代碼分析可知?熏要增加一個(gè)系統(tǒng)調(diào)用就必須在sys_call_table表中增加一項(xiàng),并在其中保存好系統(tǒng)服務(wù)例程的入口地址,然后重新編譯內(nèi)核。當(dāng)然,系統(tǒng)服務(wù)例程是必不可少的。
5 GPRS通信
該系統(tǒng)采用GPRS通信方法。GPRS(通用分組無(wú)線業(yè)務(wù))是GSM標(biāo)準(zhǔn)化組織制定的一套標(biāo)準(zhǔn),以實(shí)現(xiàn)移動(dòng)分組數(shù)據(jù)業(yè)務(wù)。GPRS網(wǎng)是一個(gè)傳輸承載平臺(tái),提供端到端分組傳輸模式下數(shù)據(jù)發(fā)送和接收。GPRS具有五大特點(diǎn):傳輸速率快;可靈活支持多種數(shù)據(jù)應(yīng)用;網(wǎng)絡(luò)接入速度快;可長(zhǎng)時(shí)間在線連接;計(jì)費(fèi)更加合理。所以,采用GPRS通信可實(shí)現(xiàn)遠(yuǎn)距離、傳輸速度高的通信。
PDA中應(yīng)用PXA255處理器,運(yùn)行速度快,系統(tǒng)性能得到極大提高。嵌入式Linux作為PDA操作系統(tǒng),可根據(jù)需要定制內(nèi)核大小,簡(jiǎn)單方便。Linux源代碼公開(kāi),可充分利用已有資源,節(jié)約開(kāi)發(fā)人員工作量。Linux不存在“黑箱”,操作系統(tǒng)安全性得到了保障。采用該系統(tǒng),提高了交通管理質(zhì)量。該系統(tǒng)提高了數(shù)據(jù)傳輸速度,減少了系統(tǒng)建造的費(fèi)用,降低了施工難度。
評(píng)論