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