基于ARM處理器的PC/104總線嵌入式計(jì)算機(jī)的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘 要:本文介紹了基于ARM 處理器的 PCI/1O4總線嵌入式計(jì)算機(jī)的構(gòu)成,對(duì) ARM 實(shí)現(xiàn) PIC/1O4總線嵌入式計(jì)算機(jī)技術(shù)進(jìn)行了研究。最后,描述了用刪處理器替代X86在.z-_,Ik控制領(lǐng)域應(yīng)用的方法和具體設(shè)計(jì)。
1 引言
嵌入式系統(tǒng)設(shè)計(jì)正在向著軟硬件相結(jié)合的方向發(fā)展, 嵌入式操作系統(tǒng)應(yīng)用越來(lái)越廣泛,而基于刪處理器和Linux操作系統(tǒng)的嵌入式計(jì)算機(jī)以其設(shè)計(jì)靈活、軟硬件可裁剪、性能優(yōu)越、成本低等優(yōu)勢(shì),倍受設(shè)計(jì)者和使用者的青睞。本文對(duì)ARM處理器和嵌入式 Linux的應(yīng)用進(jìn)行了研究探索,介紹了相關(guān)設(shè)計(jì)思路 ,并且結(jié)合基于ARM處理器的PC/104總線嵌入式計(jì)算機(jī)的開(kāi)發(fā)過(guò)程,對(duì)嵌入式系統(tǒng)研究中的關(guān)鍵技術(shù)進(jìn)行了研究。通過(guò)對(duì)傳統(tǒng)的X86嵌入式設(shè)備的弊端的分析以及針對(duì) ARM處理器迅猛發(fā)展的勢(shì) 頭,提出了用 ARM 處理器替代 X86在工業(yè)控制領(lǐng)域應(yīng)用的思路,并在此思路指導(dǎo)下完成了基本研究和具體設(shè)計(jì)。
2 嵌入式系統(tǒng)
“嵌入式系統(tǒng)”是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ), 軟、硬件可裁減,適合應(yīng)用于對(duì)功能、可靠性、成本、體積、功 耗等要求較高的專(zhuān)用計(jì)算機(jī)系統(tǒng)。“嵌入性”、“專(zhuān)用性”與 “計(jì)算機(jī)系統(tǒng)”是嵌入式系統(tǒng)的三個(gè)基本要素。
嵌入式系統(tǒng)由硬件和軟件兩大部分組成。
嵌入式系統(tǒng)的核心部件是各種類(lèi) 型的嵌 入式處理器[1]。根據(jù)其現(xiàn)狀,嵌入式計(jì)算機(jī)可以分成幾類(lèi) :嵌入式微處理器(MP U)、嵌入式微控制器(MCU)、嵌入式 DSP處理器(DSP)、嵌入式片上系統(tǒng)( )。其中,微處理器與微控制器在嵌入式領(lǐng)域應(yīng)用最為廣泛。
微處理器表示的芯片內(nèi)只包括 CPU本身,而不包括存儲(chǔ)器、I/O接口等其他功能模塊;嵌入式系統(tǒng)的 CPU不一定需要像通用 CPU那么強(qiáng)的處理能力 ,但對(duì)體積和功耗等指標(biāo)要求較高。其中,ARM 處理器是微處理器中的典型代表。AR M處理器是一種高性能、低功耗的 RISC器件。SAMSUNG公司的 $3C2410芯片基于 王M920T內(nèi)核,采用五級(jí)流水線,提供 1.1MIPS/MHz的性能 ,是高性能和低功耗的宏單元。ARM920T具有全性能的 MMU指令和數(shù)據(jù) Cache以及高速 AMBA總線接 口。S3C2410提供了比較完整的通用系統(tǒng)的外圍設(shè)備,并且使整個(gè)系統(tǒng)消耗降到最低。
由S3C2410上述特點(diǎn)可以看出,這種芯片功能很強(qiáng)大,集成了各種常用的重要接口,如 UAR T、SPI、IIC、SD卡、USB接口和觸摸屏接口等。接口應(yīng)用范圍很廣,適用于工業(yè)控制等領(lǐng)域。
在嵌入式軟件方面,Linux為嵌入式操作系統(tǒng)提供一個(gè)極有吸引力的選擇,它是一個(gè)和 Unix相似、以核心基礎(chǔ)的、完全內(nèi)存保護(hù)、多任務(wù)和多進(jìn)程的操作系統(tǒng)[Linux系統(tǒng)因其卓越的性能、開(kāi)放的源代碼、模塊化設(shè)計(jì)支持多種硬件平臺(tái)以及函數(shù)接 口符合國(guó)際和工業(yè)標(biāo)準(zhǔn)等點(diǎn),在操作系統(tǒng)中尤其是嵌入式系統(tǒng)中得到了廣泛的應(yīng)用相對(duì)于其他嵌入式操作系統(tǒng),Linux在很多方面獨(dú)具特色與目前其他流行的專(zhuān)用嵌入式操作系統(tǒng)相 比,嵌入Linux操作系統(tǒng)具有以下優(yōu)勢(shì):模塊化設(shè)計(jì)的操作系統(tǒng);以用于嵌入式系統(tǒng);具有小巧的功能完善的內(nèi)核;強(qiáng)大的程管理、內(nèi)存管理;符合 POSIX標(biāo)準(zhǔn);強(qiáng)大的網(wǎng)絡(luò)支持能;高適應(yīng)性和可靠性;可移植性;支持大量的外圍硬件備;軟件開(kāi)發(fā)者的廣泛支持。Linux的 自由精神吸引了千上萬(wàn)的程序員投入到其開(kāi)發(fā)和測(cè)試中來(lái) ,這使得 Linnxu在短時(shí)間內(nèi)就成為一個(gè)功能強(qiáng)大的操作系統(tǒng)。
3 PC/104計(jì)算機(jī)
PC/104是一種優(yōu)化的、小型的、堆棧式結(jié)構(gòu)的嵌入控制系統(tǒng),包括特定的結(jié)構(gòu)和總線接口。PC/104總線共104根引腳,其中絕大多數(shù)與 ISA總線信號(hào)特性完全一致具體如下:
(1)dx尺寸結(jié)構(gòu):標(biāo)準(zhǔn)模塊的機(jī)械尺寸是 3.6×3.8寸 ,即 96×90mm。
(2)堆棧式連接:去掉總線背板和插板滑道,總線“針”和“孔”形式層疊連接,即 PC/104總線模塊之間總的連接是通過(guò)上層的針和下層的孔相互連接,這種層疊封裝有極好的抗震性。
(3)輕松總線驅(qū)動(dòng):減少元件數(shù)量和電源消耗,4mA線驅(qū)動(dòng)即可使模塊正常工作,每個(gè)模塊 1~2瓦能耗。
4 硬件設(shè)計(jì)
4.1 總線接口部分
ARM和 PC/1O4總線接口原理如圖 1所示。
在電路設(shè)計(jì)上 ,㈣ 采用了XIL Ⅸ的 XC95l44) 。ARM的數(shù)據(jù)、地址總線,以及讀寫(xiě)等需要使用的控制信號(hào)全部連接到 CPLD上作為ARM處理器訪問(wèn) CPLD的信號(hào)線,并將CPLD的部分I/O引出,通過(guò)BUFFER后,全部連接到Pc/104的總線接口上。這樣,ARM處理器直接訪問(wèn)CPLD,CPLD則根據(jù)信號(hào)線上的變化完成相應(yīng)的PC/1O4 總線上的操作。
對(duì)于接口設(shè)計(jì)來(lái)說(shuō),最主要的就是時(shí)序設(shè)計(jì)。時(shí)序設(shè)計(jì)關(guān)系到系統(tǒng)能否正確地工作。同時(shí),CPLD的標(biāo)準(zhǔn)輸入 輸出為L(zhǎng) I,電平,輸人電平則可以兼容 rL電平。因此,雖然 CPLD可以直接與1vrL電平的 PC104總線相連, 但可能因?yàn)橐恍╇姎馓匦浴⑿盘?hào)完整性方面的問(wèn)題導(dǎo)致系 統(tǒng)的可靠性下降。所以,使用了BUFFER來(lái)進(jìn)行兩個(gè)電平 間的轉(zhuǎn)換,確保系統(tǒng)的穩(wěn)定性和可靠性。
4.2 時(shí)序分析
PC/104總線的 I/0讀寫(xiě)時(shí)序如圖 2和圖3所示;Mem 空間的訪問(wèn)和 I/O空間基本類(lèi)似,只是把信號(hào)由IOW、IOR換成了MEMW、MEMR。
設(shè)計(jì) Pc/104總線的訪問(wèn)時(shí)序,只需使用以下總線信號(hào) :
(1)DATA[IS..O]:PC/104數(shù)據(jù)總線;
(2)ADDR[23..O]:PC/1O4地址總線 ;
(3)IOW:I/O空間寫(xiě)控制,低電平有效 ;
(4)IOR:I/O空間讀控制,低電平有效;
(5)MEMW:Mem空間寫(xiě)控制 ,低電平有效;
(6)MEMR:Mere空問(wèn)讀控制,低電平有效;
(7)SYSCLK;PC/104總線時(shí)鐘;
(8) :地址鎖存信號(hào),在此不用作地址鎖存,而是用作總線周期的開(kāi)始同步,它的下降沿表示總線周期開(kāi)始;[!--empirenews.page--]
(9)IOCHRDY:I/O設(shè)備就緒信號(hào),當(dāng)該電平為低(無(wú)效狀態(tài))時(shí),表示 I/O設(shè)備要延長(zhǎng)總線周期 ,信號(hào) 由三態(tài)門(mén)或集電極開(kāi)路門(mén)驅(qū)動(dòng) ;
(10)IRQ:中斷請(qǐng)求信號(hào) ,當(dāng)處理器收到中斷請(qǐng)求后,完成相應(yīng)操作。
PC/104總線速度比較慢,ARM 處理器的總線速度要明顯高于 Pc/104。為了保證通信的正確性,需要降低ARM處理器的總線速度。因此,在進(jìn)行 PC/104總線訪問(wèn) 時(shí),采用變延遲 IO(Variable Latency IO)的訪問(wèn)模式,總線速度受 nWAIT信號(hào)控制。其讀時(shí)序如圖 4所示,寫(xiě)時(shí)序和讀時(shí)序基本類(lèi)似。
根據(jù) ARM總線的訪問(wèn)時(shí)序,實(shí)際參與操作控制的信號(hào)包括 :
(1)DATA[15..o3:ARM數(shù)據(jù)總線;
(2)ADDR[23..o3:ARM地址總線;
(3)a :訪問(wèn)有效,低電平有效;
(4)nOE:讀控制信號(hào),低電平有效;
(5)nWE:寫(xiě)控制信號(hào),低電平有效。
在 PC/1O4總線控制器的設(shè)計(jì)上,需要完成 ARM 訪問(wèn)時(shí)序和 PC/1O4訪問(wèn)時(shí)序之間的轉(zhuǎn)換。在本系統(tǒng)中是通過(guò)可編程邏輯 CPLD完成的,其連接示意圖如圖 5所示。
在可編程邏輯中,刪 處理器的每次訪問(wèn)通過(guò)對(duì)關(guān) 鍵訪問(wèn)信號(hào) NCS、NEW 和 NRE的解碼,識(shí)別出相對(duì)應(yīng)的ISA IO讀寫(xiě)或內(nèi)存讀寫(xiě),通過(guò)處理器的 RDY信號(hào)將訪問(wèn) 邏輯配合產(chǎn)生 ISA訪問(wèn)時(shí)序,并且降低訪問(wèn)速度。在 ISA信號(hào)這邊 ,通過(guò) ISA的 IOCHRDY信號(hào)指示本次讀寫(xiě)操作完成。具體的操作流程如圖 6所示。
S3C2410內(nèi)部集成了 MMU協(xié)處理器,在應(yīng)用程序或驅(qū)動(dòng)中對(duì)它的地址訪問(wèn)只能采用虛地址訪 問(wèn)的方式。因此,需要在 Linux系統(tǒng)中,把用于 Pc/1O4的地址從實(shí)地址映射到虛地址,才能在系統(tǒng)中對(duì)這塊空間進(jìn)行操作(為了保證系統(tǒng)的安全性,用戶(hù)態(tài)函數(shù)通常是不允許訪問(wèn)地址空間的,應(yīng)用程序只有進(jìn)入內(nèi)核狀態(tài)才由操作系統(tǒng)完成相關(guān)的訪問(wèn),并獲取返回值);還需要在內(nèi)核中設(shè)置這片空間的總線模式為變延遲 IO,這樣才能通過(guò) CPLD進(jìn)行總線轉(zhuǎn)換。Linux內(nèi)核提供了很方便的地址映射方式,在初始啟動(dòng)的映射表內(nèi)將需要映射的地址對(duì)應(yīng)設(shè)置好,系統(tǒng)就可以自動(dòng)進(jìn)行地址映射了。通過(guò)設(shè)置用戶(hù)可讀寫(xiě)屬性,在應(yīng)用程序也可以通過(guò)內(nèi)存操作操作 PC/1O4總線 ,大大方便了用戶(hù)程序的編寫(xiě)。
5 軟件設(shè)計(jì)
5.1 開(kāi)發(fā)環(huán)境的建立與交叉編譯
交叉編譯環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件 的環(huán)境,它與運(yùn)行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采 用宿主機(jī)/目標(biāo)機(jī)模式。在主機(jī)中安裝 RedHat9.0嵌入式 Linux操作系統(tǒng)[3],并裝入 arm-linux-gcc編譯器 和 Linux 的 2.4.19版本內(nèi)核。其中,arm-linux-gcc就是交叉編譯工 具。目標(biāo)機(jī)就是自行開(kāi)發(fā)的基于 ARM 的 CPU模塊。
5.2 配置、編譯內(nèi)核
在開(kāi)發(fā)環(huán)境建立后 ,針對(duì)具體的應(yīng)用對(duì) Linux內(nèi)核進(jìn)行裁減、配置和編譯。可以分為以下幾個(gè)具體操作步驟:
(1)make mrproper:用于清除所有的臨時(shí)文件、中間文件、配置文件。
(2)make menuconfig:進(jìn)行核心配置,在其中每個(gè)選項(xiàng)都有兩種選擇 Y和 N,分別表示支持和不支持相應(yīng)的特性或驅(qū)動(dòng)程序,個(gè)別選項(xiàng)有 M選擇,表示把相應(yīng)的特性或驅(qū)動(dòng)程序編譯成可加載模塊的方式。根據(jù)不同的應(yīng)用,對(duì)內(nèi)核進(jìn)行裁減 系統(tǒng)將新的配置保存成.config文件。
(3)make dep:用于生成依賴(lài)性。
(4)make zImage:產(chǎn)生壓縮的核心映像。內(nèi)核壓縮映像被系統(tǒng)保留在/arch/arm/boot/目錄中。
(5)make modules:組織內(nèi)核中各個(gè)子目錄已經(jīng)配置的模塊。
(6)make modules install:在/lib/modules/2.4.19/目錄中組—織模塊。
經(jīng)過(guò)以上的裁減與編譯,生成的內(nèi)核映像減小到1M以?xún)?nèi),大小在 600~700kb左右。
5.3 系統(tǒng)安裝
Bootloader引導(dǎo)程序是嵌入式 開(kāi)發(fā)很重要的組成部 分。它是系統(tǒng)上電后執(zhí)行的第一個(gè)程序,并由它最終將操作系統(tǒng)啟動(dòng)起來(lái)并將控制權(quán)交給操作系統(tǒng)。Bootloader引導(dǎo)程序最基本的功能是對(duì)硬件系統(tǒng) 的初始化、內(nèi)核啟動(dòng)參數(shù)設(shè)置和內(nèi)核啟動(dòng)。采用 VⅣI作為 內(nèi)核 的啟動(dòng)加載程序,其主要功能有:
(1)初始化 CPU的主頻、SDRAM、中斷、串口等硬件;
(2)通過(guò)串口下載內(nèi)核或文件系統(tǒng)到 目標(biāo)板上 ;
(3)對(duì) FLASH進(jìn)行格式化,并完成分區(qū);
(4)將修改過(guò)的內(nèi)核或文件系統(tǒng)寫(xiě)入到 FLASH內(nèi);
(5)為用戶(hù)提供一個(gè)命令接口。
下面介紹安裝的完整過(guò)程:
(1)在宿主機(jī)上安裝 VIⅥ 源文件 ,并利用編譯器對(duì)源代碼進(jìn)行配置、編譯 ,得到原始二進(jìn)制可執(zhí)行映像 vivi。生成 的vivi映像 通過(guò) JTAG模式燒錄到 FLASH中。
(2)在 vivi安裝完成后,需要對(duì) FLASH進(jìn)行格式化和分區(qū)。 需要根據(jù)實(shí)際的應(yīng)用情況,對(duì)分區(qū)的起始位置和大小進(jìn)行設(shè)計(jì)。 在 FLASH上至少建立三個(gè)分區(qū),第一個(gè)分 區(qū)一定要從 0地址開(kāi)始,這是由處理器的硬件結(jié)構(gòu)決定的,同時(shí) vivi默認(rèn)前三個(gè)分區(qū)分別是 vivi、內(nèi)核、文件系統(tǒng)。當(dāng)然,可以進(jìn)行更多的分區(qū),但這三個(gè)分區(qū)是必不可少的。
(3)利用 vivi的下載功能,并借助于 minicom、超級(jí)終端這樣的系統(tǒng)工具,通過(guò)串口把內(nèi)核和文件系統(tǒng)移植到目標(biāo)板。
(4)設(shè)置內(nèi)核啟動(dòng)參數(shù),譬如內(nèi)核在內(nèi)存中的運(yùn)行位置、根文 件系統(tǒng)路徑等。Linux已經(jīng)可以在目標(biāo)系統(tǒng)板上運(yùn)行了。
為了方便使用,確保系統(tǒng)的穩(wěn)定性和可維護(hù)性 ,在建立 FLASH分區(qū)和內(nèi)核代碼中進(jìn)行獨(dú)特設(shè)計(jì)。FLASH分區(qū)結(jié)構(gòu)示意圖如圖 7所示。[!--empirenews.page--]
在內(nèi)核代碼中,將 48M 64M 這 16M 空間的地址映射從 MMU中去掉,因此在應(yīng)用程序中不可能訪 問(wèn)到這16M空間的地址 當(dāng)應(yīng)用程序出現(xiàn)異常,程序指針產(chǎn)生混亂的時(shí)候,通過(guò)這種軟件和硬件相結(jié)合的設(shè)計(jì)方法保證其依然不可能訪問(wèn)到維護(hù)態(tài)下的數(shù)據(jù)。因此 ,如果系統(tǒng)崩潰,還可以進(jìn)入維護(hù)態(tài)系統(tǒng),并在維護(hù)態(tài)系統(tǒng) 中對(duì)默認(rèn)系統(tǒng)進(jìn)行恢復(fù)。它避免系統(tǒng)崩潰后,又要重新進(jìn)行 FLASH分區(qū)、內(nèi)核下載這樣一些繁瑣的過(guò)程。
6 實(shí)驗(yàn)測(cè)試比較
為了對(duì)ARM和 X86兩種架構(gòu)進(jìn)行更加直觀的比較我們對(duì)兩款嵌入式平臺(tái)進(jìn)行 了測(cè)試比較。其 中,ARM 平臺(tái)使用的是 S3C2440 400MHz處理器,X86平臺(tái)使用的是威盛 65Mhz的嵌入式 X86處理器。各項(xiàng) 比較指標(biāo)如表所示
測(cè)試表明,X86平臺(tái)的計(jì)算機(jī)更適合于完成處理、運(yùn)算功能要求比較強(qiáng)大的應(yīng)用環(huán)境。在嵌入式這樣以控制為主的應(yīng)用場(chǎng)合中,選擇 ARM 處理器更加合適。
7 結(jié)束語(yǔ)
嵌入式系統(tǒng)設(shè)計(jì)正在向著軟硬件相結(jié)合的方向發(fā)展嵌入式操作系統(tǒng)的應(yīng)用越來(lái)越廣泛,而基于 ARM 處理器和 Linux操作系統(tǒng)的嵌入式計(jì)算機(jī)以其設(shè)計(jì)靈活、軟硬件可裁剪、性能優(yōu)越、成本低等優(yōu)勢(shì),倍受設(shè)計(jì)者和使用者的青睞。本文對(duì) ARM處理器和嵌入式 Linux的應(yīng)用進(jìn)行了研究探索,介紹了相關(guān)設(shè)計(jì)思路,并結(jié)合基于 ARM處理器的PC/1O4總線嵌入式計(jì)算機(jī)的開(kāi)發(fā)過(guò)程,對(duì)嵌入式系統(tǒng)中的關(guān)鍵技術(shù)進(jìn)行了研究。通過(guò)對(duì)傳統(tǒng)的 X86嵌入式設(shè)備弊端的分析以及針對(duì) ARM 處理器的迅猛發(fā)展的勢(shì)頭,提出了用ARM處理器替代 X86在工業(yè)控制領(lǐng)域應(yīng)用的思路,并在此思路指導(dǎo)下完成了基本研究和具體設(shè)計(jì)。