引言
數(shù)據(jù)交換區(qū)是指程序執(zhí)行中使用到的各種數(shù)據(jù)所存放的內(nèi)存空間。本文提出了在μClinux操作系統(tǒng)下為嵌入式工業(yè)網(wǎng)絡(luò)服務(wù)器開辟數(shù)據(jù)交換萄思想和解決方案。嵌入式工業(yè)網(wǎng)絡(luò)服務(wù)器項目的開發(fā)目的是構(gòu)建一個以Client/Server模式工作的工業(yè)遠(yuǎn)程監(jiān)控系統(tǒng),其前端是一個嵌入式服務(wù)器,它安裝在工業(yè)現(xiàn)場,可以與三菱PLC組成的控制系統(tǒng)接口,對該系統(tǒng)實施實時監(jiān)控。其中數(shù)據(jù)交換區(qū)部分起到承上啟下的樞紐作用,向上負(fù)責(zé)對客戶端交互現(xiàn)場設(shè)備數(shù)據(jù),向下負(fù)責(zé)與接口緩沖區(qū)交互設(shè)備實時數(shù)據(jù)。系統(tǒng)以Motorola公司的32位控制器Cold Fire5307為CPU,使用2個現(xiàn)代公司的HY57V641620型(4M×16bit)的SDRAM拼成4M×32位的SDRAM,使系統(tǒng)具有16 bytes的RAM空間。
1 μClinux操作系統(tǒng)
系統(tǒng)選取μClinux操作系統(tǒng)為開發(fā)平臺,為有2個SDRAM(4M×16bit)的嵌入式工業(yè)網(wǎng)絡(luò)服務(wù)器開辟數(shù)據(jù)交換區(qū)。
Cold Fire 5307微處理器上可以運行很多操作系統(tǒng),但是可以說μClinux是最合適、性價比最高的操作系統(tǒng)。目前商用的實時操作系統(tǒng),如VxWorks和Nuclesus等價格比較昂貴,而且需要附加的C編譯器和相關(guān)的調(diào)試工具。而μCOS等免費的實時操作系統(tǒng)又沒有很好的文件系統(tǒng)和TCP/IP協(xié)議的支持,就嵌入式工業(yè)網(wǎng)絡(luò)服務(wù)器的應(yīng)用特點而言,μClinux內(nèi)核采用模塊化設(shè)計,很多功能塊可以獨立地加載或卸載,在設(shè)計內(nèi)核時可以把這些內(nèi)核模塊作為可選項,編譯系統(tǒng)內(nèi)核時指定。一種較通用的做法是對μClinux內(nèi)核重新編譯,在編譯時仔細(xì)的選擇嵌入式系統(tǒng)所需要的功能支持模塊,同時刪除不需要的功能模塊。通過對內(nèi)核的重新配置,可以使系統(tǒng)運行所需要的內(nèi)核顯著減小,從而縮減需要的控制器RAM和ROM資源。
μClinux同標(biāo)準(zhǔn)Linux的最大區(qū)別在于內(nèi)存管理,對SDRAM數(shù)據(jù)交換區(qū)的管理就屬于內(nèi)存管理范疇。標(biāo)準(zhǔn)Linux使用虛擬存儲器技術(shù),對于μClinux來說,其設(shè)計針對沒有MMU(memory management unit)的處理器。但μClinux仍然采用存儲器的分頁管理,系統(tǒng)在啟動時把實際存儲器進行分頁。在加載應(yīng)用程序時程序分頁加載。但是由于沒有MMU管理,所以實際上μClinux采用實存儲器管理策略(real memory management)。μClinux系統(tǒng)對于內(nèi)存的訪問是直接的,它對地址的訪問不需要經(jīng)過MMU,而是直接送到地址線上輸出,所有程序中訪問的地址都是實際的物理地址。μClinux對內(nèi)存的管理從編譯內(nèi)核開始,從而系統(tǒng)將在啟動的初始化階段對內(nèi)存進行分頁,并且標(biāo)記已使用的和未使用的內(nèi)存。系統(tǒng)將在運行應(yīng)用時使用這些分布內(nèi)存。另外由于采用實存儲器管理策略,用戶程序同內(nèi)核以及其他用戶程序在一個地址空間,程序開發(fā)時要保證不侵犯其他程序的地址空間,以使得程序不至于破壞系統(tǒng)的正常工作,或?qū)е缕渌绦虻倪\行異常。
2 數(shù)據(jù)交換區(qū)硬件架構(gòu)
系統(tǒng)采用Motorola公司的Cold Fire 5307型32位控制電路為CPU,用2個現(xiàn)代公司的HY57V641620型的SDRAM(4M×16bit)拼成4M×32位的SDRAM,使系統(tǒng)具有16M bytes的RAM空間。
Clod Fire系列微處理器是Motorola公司繼其M68K系列微處理器之后推出的新一代內(nèi)核的32位高位能嵌入式微處理器。Clod Fire系列微處理器繼承了M68K系列優(yōu)秀的指令集設(shè)計和CISC架構(gòu)的優(yōu)點,融入了RISC架構(gòu),在速度和架構(gòu)之間得到了很好的平衡。Cold Fire 5307型微處理器運行在外部總線時鐘45MHz,內(nèi)部總線時鐘90MHz,速率可達(dá)75MIPS。
與Flash存儲器相比較,SDRAM不具有掉電保存數(shù)據(jù)的特性,但其存取速度大大高于Flash存儲器,且具有讀/寫的屬性。因此,SDRAM在系統(tǒng)中主要用于程序的運行空間、數(shù)據(jù)交換區(qū)及堆棧區(qū)。當(dāng)系統(tǒng)啟動時,CPU首先從復(fù)位地址0x0處讀取啟動代碼,在完成系統(tǒng)初始化后,程序代碼一般應(yīng)調(diào)入SDRAM中運行 ,以提高系統(tǒng)的運行速度,同時,系統(tǒng)及用戶堆棧、運行數(shù)據(jù)也都放在SDRAM中。SDRAM具有單位空間存儲容量大價格便宜的優(yōu)點,已廣泛應(yīng)用在各種嵌入式系統(tǒng)中。SDRAM的存儲單元可以理解為一個電容器,總是傾向于放電,為避免數(shù)據(jù)丟失,必須定時刷新(充電)。
嵌入式工業(yè)網(wǎng)絡(luò)服務(wù)器項目中的數(shù)據(jù)交換區(qū)根據(jù)數(shù)據(jù)交換匹配置文件生成。向上負(fù)責(zé)與客戶端交互現(xiàn)場設(shè)備數(shù)據(jù),向下負(fù)責(zé)與接口緩沖區(qū)交互設(shè)備實時數(shù)據(jù)。每個SDRAM由4M×16bit的內(nèi)部Bank組成,這個Bank的選擇由SDRAM外部引腳BA0和BA1來完成,筆者將BA0和BA1都連接在Cold Fire 5307的高端地址線上;其他信號和Cold Fire 5307都一一對應(yīng)。UDQM和LDQM是SDRAM的高低字節(jié)片選信號,因為每個SDRAM都是16位架構(gòu),所以將二片SDRAM拼成32位時,除數(shù)據(jù)線和這二個片選信號之外,其他信號線對二個SDRA來說都是共用的。這二個信號分別接Cold Fire 5307的CAS0、CAS1和CAS2、CAS3。SDRAM與MCF5307的連接如圖1所示。






