當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]μClinux下SDRAM數(shù)據(jù)交換區(qū)的生成和使用

    摘要:提出在μClinux操作系統(tǒng)下,用Motorola公司的Cold Fire 5307型32位控制器為CPU的嵌入式工業(yè)網絡服務器的SDRAM開辟數(shù)據(jù)交換區(qū)的思想和解決方案。

    關鍵詞:μClinux 嵌入式系統(tǒng) SDRAM 數(shù)據(jù)交換區(qū)

引言

數(shù)據(jù)交換區(qū)是指程序執(zhí)行中使用到的各種數(shù)據(jù)所存放的內存空間。本文提出了在μClinux操作系統(tǒng)下為嵌入式工業(yè)網絡服務器開辟數(shù)據(jù)交換萄思想和解決方案。嵌入式工業(yè)網絡服務器項目的開發(fā)目的是構建一個以Client/Server模式工作的工業(yè)遠程監(jiān)控系統(tǒng),其前端是一個嵌入式服務器,它安裝在工業(yè)現(xiàn)場,可以與三菱PLC組成的控制系統(tǒng)接口,對該系統(tǒng)實施實時監(jiān)控。其中數(shù)據(jù)交換區(qū)部分起到承上啟下的樞紐作用,向上負責對客戶端交互現(xiàn)場設備數(shù)據(jù),向下負責與接口緩沖區(qū)交互設備實時數(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è)網絡服務器開辟數(shù)據(jù)交換區(qū)。

Cold Fire 5307微處理器上可以運行很多操作系統(tǒng),但是可以說μClinux是最合適、性價比最高的操作系統(tǒng)。目前商用的實時操作系統(tǒng),如VxWorks和Nuclesus等價格比較昂貴,而且需要附加的C編譯器和相關的調試工具。而μCOS等免費的實時操作系統(tǒng)又沒有很好的文件系統(tǒng)和TCP/IP協(xié)議的支持,就嵌入式工業(yè)網絡服務器的應用特點而言,μClinux內核采用模塊化設計,很多功能塊可以獨立地加載或卸載,在設計內核時可以把這些內核模塊作為可選項,編譯系統(tǒng)內核時指定。一種較通用的做法是對μClinux內核重新編譯,在編譯時仔細的選擇嵌入式系統(tǒng)所需要的功能支持模塊,同時刪除不需要的功能模塊。通過對內核的重新配置,可以使系統(tǒng)運行所需要的內核顯著減小,從而縮減需要的控制器RAM和ROM資源。

μClinux同標準Linux的最大區(qū)別在于內存管理,對SDRAM數(shù)據(jù)交換區(qū)的管理就屬于內存管理范疇。標準Linux使用虛擬存儲器技術,對于μClinux來說,其設計針對沒有MMU(memory management unit)的處理器。但μClinux仍然采用存儲器的分頁管理,系統(tǒng)在啟動時把實際存儲器進行分頁。在加載應用程序時程序分頁加載。但是由于沒有MMU管理,所以實際上μClinux采用實存儲器管理策略(real memory management)。μClinux系統(tǒng)對于內存的訪問是直接的,它對地址的訪問不需要經過MMU,而是直接送到地址線上輸出,所有程序中訪問的地址都是實際的物理地址。μClinux對內存的管理從編譯內核開始,從而系統(tǒng)將在啟動的初始化階段對內存進行分頁,并且標記已使用的和未使用的內存。系統(tǒng)將在運行應用時使用這些分布內存。另外由于采用實存儲器管理策略,用戶程序同內核以及其他用戶程序在一個地址空間,程序開發(fā)時要保證不侵犯其他程序的地址空間,以使得程序不至于破壞系統(tǒng)的正常工作,或導致其他程序的運行異常。

2 數(shù)據(jù)交換區(qū)硬件架構

系統(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系列微處理器之后推出的新一代內核的32位高位能嵌入式微處理器。Clod Fire系列微處理器繼承了M68K系列優(yōu)秀的指令集設計和CISC架構的優(yōu)點,融入了RISC架構,在速度和架構之間得到了很好的平衡。Cold Fire 5307型微處理器運行在外部總線時鐘45MHz,內部總線時鐘90MHz,速率可達75MIPS。

與Flash存儲器相比較,SDRAM不具有掉電保存數(shù)據(jù)的特性,但其存取速度大大高于Flash存儲器,且具有讀/寫的屬性。因此,SDRAM在系統(tǒng)中主要用于程序的運行空間、數(shù)據(jù)交換區(qū)及堆棧區(qū)。當系統(tǒng)啟動時,CPU首先從復位地址0x0處讀取啟動代碼,在完成系統(tǒng)初始化后,程序代碼一般應調入SDRAM中運行 ,以提高系統(tǒng)的運行速度,同時,系統(tǒng)及用戶堆棧、運行數(shù)據(jù)也都放在SDRAM中。SDRAM具有單位空間存儲容量大價格便宜的優(yōu)點,已廣泛應用在各種嵌入式系統(tǒng)中。SDRAM的存儲單元可以理解為一個電容器,總是傾向于放電,為避免數(shù)據(jù)丟失,必須定時刷新(充電)。

嵌入式工業(yè)網絡服務器項目中的數(shù)據(jù)交換區(qū)根據(jù)數(shù)據(jù)交換匹配置文件生成。向上負責與客戶端交互現(xiàn)場設備數(shù)據(jù),向下負責與接口緩沖區(qū)交互設備實時數(shù)據(jù)。每個SDRAM由4M×16bit的內部Bank組成,這個Bank的選擇由SDRAM外部引腳BA0和BA1來完成,筆者將BA0和BA1都連接在Cold Fire 5307的高端地址線上;其他信號和Cold Fire 5307都一一對應。UDQM和LDQM是SDRAM的高低字節(jié)片選信號,因為每個SDRAM都是16位架構,所以將二片SDRAM拼成32位時,除數(shù)據(jù)線和這二個片選信號之外,其他信號線對二個SDRA來說都是共用的。這二個信號分別接Cold Fire 5307的CAS0、CAS1和CAS2、CAS3。SDRAM與MCF5307的連接如圖1所示。

Cold Fire 5307可以支持二個Bank的SDRAM,在本系統(tǒng)中只使用了第一個Bank,另外一個Bank的控制信號懸空不使用。其中,SDRAM和FlashRom以及其他外設一同使用32位數(shù)據(jù)總線D0-D31;SDRAM映射到內部物理地址,但是因為SDRAM的特殊性,并不需要所有的地址線信號A0-A31,而是使用其中一部分信號線,這個地址映射的工作由DRAM控制器來完成;RAS0-RAS1是Bank片選信號,本設計中只使用RAS0來片選所使用的SDRAM Bank;CAS0-CAS3是SDRAM 32位數(shù)據(jù)線中4個8位數(shù)據(jù)線(Byte)獨立的片選信號;SCAS和SRAS分別是SDRAM的行、列地址鎖存信號;DRAMW是DRAM寫信號;BCLK0是系統(tǒng)時鐘輸出,連接到SDRAM的時鐘輸入引腳CLK端;SCKE是SDRAM時鐘使能信號,來使能輸入給SDRAM的時鐘信號,高電平時SDRAM自動進入休眠狀態(tài)。

3 數(shù)據(jù)交換區(qū)軟件實現(xiàn)

服務器依據(jù)數(shù)據(jù)交換區(qū)配置文件生成設備數(shù)據(jù)交換區(qū)。

服務器進入運行模式之后,首先檢查生成數(shù)據(jù)交換區(qū)與底層緩沖區(qū)的配置文件是否存在。如果不存在則打印錯誤信息,存在則依據(jù)配置文件在系統(tǒng)SDRAM區(qū)開辟數(shù)據(jù)交換區(qū)與底層緩沖區(qū)。接著系統(tǒng)檢查PLC通信協(xié)議交換是否存在,不存在則打印錯誤信息,存在則將COM2口置為PLC通信端口。一切就緒之后,系統(tǒng)啟動任務調度完成各種任務。

數(shù)據(jù)交換區(qū)生成及使用流程圖如圖2所示,數(shù)據(jù)緩沖區(qū)生成子程序流程如圖3所示。

在2.4片μClinux內核中,內核引導時,通過訪問系統(tǒng)所有的物理內存,然后調用各個子系統(tǒng)的初始化函數(shù)進行初始化,允許初始化代碼分配私有的緩沖區(qū),并減少了留給常規(guī)系統(tǒng)操作的RAM數(shù)量。在2.4版μClinux內核中,這種分配通過調用下列函數(shù)之一進行:

#include<linux/boot mem.h>

void*alloc_bootmem(unsigned long size);

void*alloc_bootmem_low(unsigned long size);

void*alloc_bootmem_low-pages(unsignedlong size);

分配內存空間所使用的函數(shù)調用如下:

函數(shù)malloc和calloc都用于分配動態(tài)內存空間的函數(shù)。

函數(shù)malloc的參考size表示申請分配的內存空間的大小,以字節(jié)計算;

函數(shù)calloc的參數(shù)nmemb表示分配的內存空間占的數(shù)據(jù)項數(shù)目。參數(shù)size表示每一個數(shù)據(jù)項的大小,以字節(jié)計算。也就是說,calloc函數(shù)分配大小為nmemb*size大小的內存空間。

Calloc函數(shù)與malloc函數(shù)最大的區(qū)別是calloc函數(shù)被初始化所分配的內存空間,把所有位置為0。調用成功時,malloc函數(shù)為calloc函數(shù)的返回值都為被分配的內存空間的指針;調用失敗時,返回值為NULL。動態(tài)內存被釋放。

在C語言中,指針是處理許多數(shù)據(jù)結構的關鍵。沒有指針,也許根據(jù)不能使用動態(tài)內存的諸多特性。在編寫程序的時候,它允許程序員建立復雜的內存系統(tǒng)。提高了處理未知內容或者類型數(shù)據(jù)的靈活性。在C中還有一點對字符串處理和數(shù)據(jù)的輸入輸出很重要。對指針的徹底了解有助于我們寫出更好、更高效的代碼。

如果使用一種算法不夠,鏈表可以解決這個問題。當從未知大小的數(shù)據(jù)塊中讀入數(shù)據(jù)時,用戶不得不把數(shù)據(jù)讀到內存中。這是因為處理讀入數(shù)據(jù)的函數(shù)必須把數(shù)據(jù)讀到一塊一定大小的內存中。在讀入以后,必須找到一種接合分離數(shù)據(jù)的辦法。一般使用fgets()把數(shù)據(jù)讀到n個字節(jié)大小的內存中。緩沖區(qū)是n+1個字節(jié)大,但是請注意必須使用1個字節(jié)放結束標記。然后使用了一簡單的鏈表保存數(shù)據(jù)。這個鏈表中一個特殊項:一個名為iscontinuing的整型變量。如果這個變量有值,表示當前結構中的數(shù)據(jù)不是字符串最后的部分,最后的部分將包含在以后的結構后。這個變量再把數(shù)據(jù)從內存中調出來,重新組裝的時候使用。

還有一種更明智的保存數(shù)據(jù)的方法。逐步處理數(shù)據(jù)直到達到數(shù)據(jù)末尾。首先要修改的是結構的定義。在結構中包含字符串。在結構中定義一個指針,指向動態(tài)申請的內存區(qū)域。這樣做的好處是,字符串可以很長。

現(xiàn)在產生輸出的代碼更簡單了。它做的所有的事情就是計算和顯示。不再需要合并字符串。因為已經被合并。

4 結束語

數(shù)據(jù)交換區(qū)的生成和使用對嵌入式工業(yè)網絡服務器項目尤為重要,它是WEB服務器正常運行的先決條件,起到承上啟下的樞紐作用。向上負責對客戶端交互現(xiàn)場設備數(shù)據(jù),向下負責與接口緩沖區(qū)交互設備實時數(shù)據(jù)。目前,該部分設計工作已經完成,并在試運行期間情況良好,達到預期效果。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉