嵌入式設計系統范例6篇

前言:中文期刊網精心挑選了嵌入式設計系統范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。

嵌入式設計系統

嵌入式設計系統范文1

關鍵詞:黑盒測試;嵌入式系統;程序流程圖;插樁處理

引言

黑盒測試是從用戶觀點出發的測試,依據需求功能說明書中的預期用途、定時和性能的要求,推斷測試結果。黑盒測試根據測試階段可分為單元測試、集成測試、確認測試、系統測試四個階段[1]。嵌入式計算機系統具有與傳統軟件測試不同的新特性,因此需要采取針對性的測試方法。通用的測試方法可分為靜態時間分析和動態時間分析。

1嵌入式軟件測試的環境分析

在線仿真配備了CPU芯片接口,提供和應用程序交流信息橋,不足之處在于對硬件的依賴性較強,測試范圍較窄;目標機仿真測試結果真實,但由于實際運行中連接外部設備,很難辨識軟件和硬件錯誤。在實際測試中,根據測試效率、成本、可靠性、自動化程度等因素選擇測試環境[2]。

2嵌入式測試系統的技術實現

CodeTest一方面吸取軟件插樁技術,另一方面從硬件測試那里吸取從總線獲取數據的技術,并進行升級改造。在硬件測試時,CodeTest選擇插入點的方式為主動獲取關鍵數據。和CodeTest相比,純軟件測試對目標測試的影響大大降低。因此選用Cereal仿真器。嵌入式軟件測試系統由功能測試模塊、代碼測試模塊、數據分析和文檔報告模塊、通信接口轉換模塊組成。對于黑盒測試來說,功能測試模塊居主導地位,它主要通過接收目標系統輸出信號和需要的信號進行比對來判定目標系統在功能上是否達到最優[3]。

3詞法語法分析的設計與實現

3.1Lex⁃Yacc

Lex是檢測字符匹配性的詞法生成程序,Yacc是測定語法的生成程序。一個Lex程序由三段組成:首先是C和Lex定義;第二段是C代碼;第三段是C函數。一個Yacc程序也是由三段組成,分別是聲明、語法規則和C代碼。Lex同Yacc的工作原理如圖1所示。

3.2Lex⁃Yacc之間的聯系

Lex程序用來計算數字字符串,能對各種符號進行識別,當插碼時可以以注釋的形式插入插樁代碼,等程序完成,可以自行取消代碼插樁,不影響整體進程。Yylval用來傳遞Lex與Yacc之間數字字符串轉化后的數值,利用lineno傳遞正在處理的代碼行號和標號。本次設計全程在Linux下,通過Lex編譯后生成詞法分析程序的C代碼,通過Yacc編譯后生成語法分析程序的C程序代碼。兩者通過gcc命令進行編譯形成綜合分析。最后運行該綜合分析器就可以對51系列的匯編語言進行分析[4⁃5]。

3.3被測源程序靜態結構分析

Lex⁃Yacc工具對單文件逐行掃描,得出當前語句各類參數類型,不同參數類型分別進入不同的單鏈表中。其中除了順序單鏈表外,其他四種處理方式基本相同。待詞法、語法分析完畢,五個單鏈表中存儲了對應的匯編程序。因為單鏈表本身只是一個轉換器,無法顯示匯編程序之間的邏輯關系,所以需要對程序進行二次分析,確定所有邏輯關系。其中五個單鏈表形成的流程圖如圖2所示。針對程序流程圖的建立,首先搜索匹配節點,根據節點不同進入相應分支處理。當前語句在順序節點,則進入順序處理模塊。從關鍵字“結束行號+1”開始遍歷單鏈表,存在兩種結果:一是算法出錯;另外一種就是在主程序中時則表明當前分支分析完成。接著要判斷條件跟蹤鏈表中的順序分支(規定為右分支)是否都已分析完畢。

4覆蓋率分析及評測

4.1被測源程序覆蓋率分析

虛擬插樁技術就是在匯編語言基本結構的特點上,在源程序的插樁點處設置斷點,在源程序執行到斷點處,響應斷點處指令,給出具體的PC地址,自動記錄并打印出來,接連下去形成PC值的數據鏈。通過查詢五類單鏈表與之建立對應關系,就可以獲得到源程序的真實運行軌跡,進而計算出各類覆蓋指標。

4.2基于代碼的覆蓋評測

在仿真測試平臺原型系統上,基于代碼的覆蓋測試首先需要選定適合用作黑盒測試的子過程模塊。提取的子過程模塊必須具備獨立運行的能力,根據覆蓋測試的標準和要求對代碼邏輯結構進行認真分析,設計出多個測試用例,然后通過手工運行該子程序的方式,在某一特定測試用例驅動下運行,測定出運行路徑,通過計算得出兩種覆蓋率理論評測指標,與仿真測試平臺上實現的兩種覆蓋率相對比,得出覆蓋率分析法與虛擬插樁的正確性驗證結果。

5嵌入式系統平臺設計

設計一個可以代替人工進行黑盒測試的平臺系統,見圖3,其基本原理是通過腳本語言記錄狀態信息,之后通過PC回放測試信息以判斷結果是否與記錄腳本一致,以此決定本次測試是否通過。為此,在編輯源代碼時就需要滿足錄制腳本和腳本回放兩個階段的需求。

5.1插裝代碼分析

在PC上運行插裝系統最重要的原則就是要保證軟件原有功能的穩定性和完整性。因此在設計嵌入式系統的插裝代碼時不能改變程序的原有邏輯和原有執行流程,應盡量降低在嵌入式系統所占的資源,盡可能將部分功能和操作交付于PC進行。嵌入式系統中的模擬用戶輸入模塊的主要功能是將計算機發送的命令進行分析,并將結果回復到處理模塊中,其操作模擬流程見圖4。

5.2系統狀態的定義和獲取

(1)聲音信息的獲取嵌入式系統中對聲音信息的獲取主要是通過識別每個聲音惟一的ID編號和固定的音頻編碼進行的。工作時,由系統中的服務函數獲得ID聲音的音頻編碼并發送到PC中。(2)獲取LED信息LED的運行方法和聲音相似,都有一套惟一的LED編碼,并由LED控制器控制。常用的設計方法是將LED中的編碼放到嵌入式系統中的緩沖區內,通過定時刷新函數提取LED信息[6]。(3)獲取LCD信息由于LCD需要顯示的信息較多,且各消息屬性復雜,因此較難提取。目前常用的提取方法是點陣截取法和消息截取法。由于點陣截取法操作簡單、測試結果準確率高,因此本文使用點陣截取法獲取LCD信息。(4)系統狀態的獲取主動請求和被動獲取是嵌入式系統獲取信息的主要方式。主動請求是指嵌入式系統在處理完PC發出的操作命令時,主動將搜集好的信息發送到PC上。被動獲取是指嵌入式系統并不主動發送檢測信息,而是當狀態出現時才決定是否繼續后續操作。

5.3自動化比較和測試

軟件是否準確輸出結果,需要經過多次測試實際輸出和預期輸出的差別。本文在設計嵌入式系統時綜合考慮了一些智能比較思想來優化設計流程。由于實際的嵌入式系統會產生上百個復雜的狀態信息[7],為便于比較,本文采用了相對比較的辦法對錄制腳本時的狀態變遷進行比較。最后設計完成的嵌入式系統需對腳本進行測試,這是交互式應用的重要組成部分。腳本測試的準確度主要依賴于所選用的測試工作和腳本技術。當前主要的腳本技術有共享腳本、數據驅動腳本、結構化腳本等。這些腳本都包括了三個命令,即人工操作命令、狀態檢查命令、邏輯控制命令。測試腳本主要就是對這三個命令進行檢查,其中在自動化檢測中采用何種腳本記錄測試結果可依據模塊要求進行選定。

6結語

黑盒測試技術的匯編語言測試系統用例研究在我國已經很多,本文最大的亮點是引入虛擬插樁技術,實現真正插樁,即在被測源程序的插樁點處設置中斷指令,當源程序運行到該點處時自動運行斷點指令,給出具體的PC地址,進而給出一系列地址數據,根據事先設定的用例判定運行效果,得出黑盒測試的正確驗證結果。此方法最大的優點在于高效、精確、成本較低,在實際運用中具有較高的實用價值。

參考文獻

[1]孫昌愛,靳若明,劉超,等.實時嵌入式軟件的測試技術[J].小型微型計算機系統,2000,21(9):920⁃924.

[2]杜曉東.面向嵌入式系統的測試工具研究[D].成都:電子科技大學,2003.

[3]蘇銘,宋宗宇,王華.多計算機的自動插樁與監測系統[J].計算機工程與應用,2002(4):79⁃82.

[4]楊作梅,張旭東.1ex與yacc[M].北京:電子工業出版社,2003.

[5]鄧支益,何亦征,田翼.嵌入式軟件測試研究[J].航空電子技術,2003,34(1):37⁃42.

[6]曹文靜,宮云戰.軟件測試性計算方法研究[J].計算機工程與設計,2003,24(10):67⁃70.

嵌入式設計系統范文2

關鍵詞: 地理信息系統;嵌入式;全球定位系統;空間數據

Abstract: based on embedded system design of the structure of the geographic information system, and puts forward the comprehensive GIS architecture using a variety of modern technology, they include GIS technology and embedded technology, and RS technology, GPS technology, mobile computing technology and communication technology, etc.

Keywords: geographic information systems; Embedded; Global positioning system; Spatial data

中圖分類號:S611文獻標識碼:A 文章編號:

1.引言

隨著GIS技術的不斷成熟和它給人們帶來的巨大便利,以及嵌入式設備性能的提高和普及,兩者的結合成為一種必然的發展趨勢。近年來,嵌入式GIS技術正成為GIS發展的熱點之一,它的應用包括了汽車導航、野外測繪、物流運輸、軍事指揮等眾多的領域。我國也已經開發出了自己的嵌入式GIS產品,比如武漢中地軟件的MAPGIS-Embedded和北京超圖公司的eSuperMap等。本章提出了一種基于嵌入式設備的地理信息系統的完整的體系架構,對于架構中涉及到的技術以及每一個模塊都做了比較詳細的說明。同時需要指出的是:這個架構不僅具有一定的理論價值,還具有很強的現實意義。我們已經按照此架構中提出的思想進行了代碼實現,當然由于時間和精力的關系,只是實現了其中的一些基本的功能,但這卻是自主開發嵌入式地理信息系統的一次有意的嘗試,并具體介紹實現的過程和步驟,以及實現過程中一些難點、關鍵問題的解決。

2.嵌入式GIS體系架構

嵌入式地理信息系統的體系架構如圖1所示。從圖中可以看出,整個系統是基于C/S模式的,它由嵌入式設備、高性能計算機、全球定位系統(GPS)和空間數據庫四個部分組成。

嵌入式設備由嵌入式硬件系統和嵌入式軟件系統構成,其中嵌入式硬件系統要集成GPS定位信息的接收功能;在嵌入式硬件之上的一層是嵌入式操作系統(如ARM-Linux等),它是嵌入式軟、硬件之間的橋梁,主要負責文件管理、進程調度等功能;運行在嵌入式設備上的GIS軟件(也就是客戶端程序)包括地圖的顯示、縮放、漫游、緩沖分析、通訊等幾個模塊,通訊模塊可以通過無線網絡與高性能計算機(服務器)進行通信和數據傳輸。

高性能計算機(服務器)要實現最短路徑、最優路徑的查詢等地理信息系統中比較復雜的功能,同時還要實現與客戶端進行通訊、文件格式的轉換,以及訪問數據庫服務器等功能。

對于系統中數據的存儲,我們采取的是客戶端-服務器兩級數據存儲模式,大部分的數據存放在服務器端(高性能計算機),客戶端(嵌入式設備)只保留少量常用的數據;如果系統中的數據量過于龐大,甚至可以由一個具有海量存儲器的計算機專門來存儲服務器端的數據,并向服務器提供訪問接口,這樣可以減輕服務器的負擔,提高整個系統的效率和處理數據的速度。在必要時,客戶端可以向服務器提出更新數據的請求,服務器在接到請求后把相應的數據文件回傳給客戶端。

圖1 基于嵌入式設備的GIS架構示意圖

對系統的功能模塊進行了劃分,把地圖顯示、圖層管理、緩沖分析、縮放和漫游等比較簡單,對硬件資源消耗小的應用放在客戶端,而把最優路徑、最短路徑的分析等復雜的應用放在服務器端。這樣做的原因在于嵌入式硬件本身的資源非常有限,如存儲空間偏小、處理器的速度也不是十分理想等,所以它不可能發展較為復雜的GIS空間分析功能。當客戶端需要調用最短(優)路徑查詢等復雜的GIS分析功能時,就向服務器發出請求(其中包括客戶端當前的位置、目的地等參數),服務器根據客戶端傳遞的參數,對數據庫進行一系列的查詢、檢索等操作后,將分析的結果回傳給客戶端,從而為客戶提供決策支持,同時也減輕了嵌入式設備的負擔,提高了它的工作效率。

3.全球定位系統及3S集成技術

3S技術為科學研究、政府管理、社會生產提供了新一代的觀測手段、描述語言和思維工具。3S的結合應用,取長補短,是一個自然的發展趨勢,三者之間的相互作用形成了“一個大腦,兩只眼睛”的框架,即RS和GPS向GIS提供或更新區域信息以及空間定位,GIS進行相應的空間分析(圖2),以從RS和GPS提供的浩如煙海的數據中提取有用信息,并進行綜合集成,使之成為決策的科學依據。RS、GIS、GPS集成的方式可以在不同的技術水平上實現,最簡單的辦法是三種系統分開而由用戶綜合使用,進一步是三者有共同的界面,做到表面上無縫的集成,數據傳輸則在內部通過特征碼相結合,最好的辦法是整體的集成,成為統一的系統。

圖2 3S的相互作用與集成

4.空間數據的無線傳輸

空間數據無線傳輸技術是完善嵌入式GIS 功能的重要技術之一。但是目前該技術的發展受到諸多因素的制約,下面就這些制約因素加以闡述和分析,并針對無線傳輸網絡提出相應的解決方案。雖然GPRS是作為現有GSM網絡向第三代移動通信演變的過渡技術,但是它相對于原來GSM的撥號方式的電路交換數據傳送方式,在許多方面都具有顯著的優勢。正是由于GPRS具有以上的這些特點和優勢,在我們設計的基于嵌入式設備的GIS系統架構中,采用了GPRS作為空間數據的無線傳輸網絡。

5.試驗結果

ECI GIS的開發嚴格遵循了軟件工程的思想,并且針對嵌入式軟件開發的特點,對軟、硬件平臺以及專業需求等因素也進行了綜合的分析和考慮。但由于時間、技術等方面的原因,我們的軟件只是實現了GIS中的一些基本功能。本節將重點向您介紹這些功能的實現,即程序運行的結果。說明:地圖中的當前圖層為上海市區縣和主要河流。

圖3全圖顯示

圖4屬性數據庫的顯示

結束語

ECI GIS1.0是一個基于嵌入式設備的地理信息系統軟件,它經過了架構的搭建、模塊設計、代碼實現、軟件移植和應用檢驗幾個階段,具備了地圖縮放、信息查詢等基本的功能。ECI GIS與其他的嵌入式地理信息系統相比,最大的特點就是它沒有借助任何商業的操作系統(如WinCE)和GIS系統軟件,實現過程中用到的Linux和GDAL函數庫的源代碼都是免費開放的。ECI GIS1.0是我們為開發出中國擁有自己完全版權的GIS軟件而進行的有意的嘗試和探索,這一點或許遠遠大于其在商業上的價值。

參考文獻:

[1] 龔健雅. 地理信息系統基礎[M]. 北京:科學出版社,2001.

[2] 張超,陳丙咸,鄔倫.地理信息系統[M]. 北京:高等教育出版社,1995.

[3] 鄔倫.地理信息系統――原理、方法和應用[M].北京:科學出版社, 2001.

嵌入式設計系統范文3

關鍵詞:嵌入式;系統軟件;設計;實現

中圖分類號:TP273.5 文獻標識碼:A 文章編號:1674-7712 (2014) 12-0000-01

當前時代,科學技術快速發展,信息技術被應用于我們日常生活的各個方面。高科技為我們的生活帶來了無限的便利,目前采用高科技手段為人們提供一個安全的生活和工作環境。本文針對嵌入式系統在門禁卡的應用上進行研究,解決了傳統門禁卡很多的不便功能。為實現門禁卡自動、智能化管理提供建議,以此來對門禁卡功能與嵌入式系統軟件設計與實現相關問題進行研究[1]。

一、嵌入式門禁系統設計

(一)嵌入式系統設計介紹。隨著科學技術的快速發展,嵌入式門禁卡系統已經逐漸進入人們的生活,逐漸由傳統的門禁卡系統轉變為現代的生物特征識別技術門禁卡系統。嵌入式系統的門禁卡主要分為了圖像采集、自動照明、語音提示、申請功能、無人監測等具體功能實現[2]。其具體的架構如圖1所示。

圖1 門禁系統功能圖示

(二)系統硬件設計概述。如果要設計出完善的門禁系統,不僅需要軟件系統的支持,還需要硬件支撐,否則整個軟件系統難以實現。嵌入式多功能門禁系統其本質由嵌入式技術與圖像處理技術融合應用。其中嵌入式的硬件支撐硬件結構主要有照明控制、網絡接口、攝像頭、按鍵、CF卡、音頻接口、LVDS以及DDR2等。

二、嵌入式系統在門禁卡中的實現

(一)圖像采集實現。量化后的數字圖像信號和連續信號取樣的數字圖像信號是數字圖像處理的對象,當這些最原始的信號經過圖像處理后即可獲得可觀測的連續信號。對連續信號進行取樣其本質是將信號的空間離散化,而量化則是將離散后的圖像信號幅度上進行離散化,所以量化和取樣后的圖像信號應該是原始連續圖像信號。

對于視頻圖像的獲取方法通常有兩種,一是利用視頻捕捉卡中的SDK工具獲取,二是使用Video for Windows,這給視頻捕獲編程帶來了很大的福利,對視頻捕獲的靈活性有很大的提高。視頻數據的實時采集主要是調用AVICap32.dll來穿件一個AVICap窗口類,它給應用程序提供了一個簡單而方便的數據接口,使用戶能夠訪問音頻和視頻,并且還能在硬盤上對視頻捕獲進行控制,它在捕獲視頻的能力很強,可以直接訪問視頻緩沖區,也不生成中間文件,視頻捕獲的速度快,及時性高,也可以將視頻保存在設置好的文件夾中,整個視頻捕捉過程都可以實現控制[3]。

(二)自動照明實現。整個照明系統主要分為了兩個部分,照明系統通過發送指令給單片機實現對整個電路進行調整。整個照明系統分為控制部分和圖像亮度檢測部分,照明系統中的圖像檢測與電路照明具有很強的聯系。嵌入式軟件系統進行照明攝像控制時,通過采集信息的亮度,而其亮度與圖像的象素有關,將圖像做為一個二維圖像,橫坐標表示圖像各個像素點的灰度級r;縱坐標則表示弧度制出現的概率Pr(r);那么對于某一個灰度值ri的象素個數為ni。則概率密度為:Pr(r)= ; =1。

(三)語音提示實現。該系統運用的是ALC655音頻解碼器,Mic用于連接麥克風,Line用于錄制聲源的聲音,Audio_Out用于揚聲器或者耳機。本系統主要根據不用的命令來實現功能,通過調用不同文件得到不同的效果,根據不同情況播放不同的提示音。系統中的MFC附帶的音頻播放組可以有效的提高開發是速度,通過媒體控制接口API實現停止功能MCI提供了控制媒體接口的能力,對波形音頻設備、CD/視頻播放設備等媒體進行控制。系統對音頻的播放采用的是DirectX,作為低級應用程序的編程接口,在開發上降低難度。對于聲音,主要的API是DirectSound,具備播放、處理混音、錄音等功能,Microsoft DirectSound API為聲音的捕獲、播放、混音的處理、錄音提供了鏈接,DirectSound可以給多媒體提供直接訪問聲音設備、低延遲混合、硬件加速。

(四)申請功能實現。所謂的申請來訪功能主要門禁卡在進行檢測的時候如果遇到不相匹配者,則需要進行申請之后才能夠進入。系統通過語音告知模塊的主人,采取系統中斷方式來進行受訪申請。受訪者來進行訪問申請時,需要按下按鈕然后系統給予語音提示,并且顯示出來訪者的面貌,以此來進行判斷,決定通過或者拒絕。嵌入式軟件系統在門禁卡的顯示上將來訪者的信息顯示在LVDS屏幕桑,然后通過系統對來訪人員進行判斷[4]。

(五)無人監測功能實現。無人監測功能則是當受訪者進行訪問時,遇到公司無人的時候,由門禁卡系統提示訪問者內部無人,并且拍下來訪者的照片,發送到系統設定的郵箱之中。在此自動發送郵件的功能中,該系統主要采取以太網作為接口進行數據通訊,并且根據TCP/IP協議來發送報文,實現信息交換。

三、結束語

隨著科學技術的不斷發展,新型的軟件技術被應用到我們日常的生活之中,本文主要針對嵌入式系統在門禁卡中的應用情況,以及在系統設計過程中所占據的地位進行研究。實現嵌入式軟件系統在門禁卡中的應用探索,主要針對門禁卡的各項功能的設計與實現進行了詳盡的介紹,希望為采用嵌入式方法進行門禁卡開發的企業提供借鑒。

參考文獻:

[1]周海龍.嵌入式門禁系統的設計與實現[D].西安電子科技大學,2012.

[2]吳若無.基于光學逆向器門禁的驅動和檢測系統設計與實現[D].電子科技大學,2013.

嵌入式設計系統范文4

    摘要:設計一種能夠在典型嵌入式環境下應用的線性文件系統,為嵌入式系統Flash空間的管理提供一種非常有效的手段。它包裝和通用文件系統類似的API接口,設計的實現獨立于實時操作系統(RTOS)和具體的Flash典型,可方便移植到不同的嵌入式應用中。

在嵌入式系統中,為了便于對閃存(Flash)空間進行管理,會采用文件的形式來訪問Flash。目前,可以購買到的Flash文件系統一般都是兼容DOS的文件系統(Flash File System,FFS),這對需要一個具有復雜的目錄層次,并且DDS文件兼容的系統來說是必要的;但是對大多數的嵌入式應用來說,這種文件系統太過奢侈。筆者在參與嵌入式系統項目的時候,設計了一種線性文件系統,它適用于大多數的嵌入式應用對Flash文件系統的需求。

線性文件系統設計基于三個目標:一是提供給應用程序通過文件名而不是物理地址訪問系統Flash的能力;二是文件系統的設計獨立于實時操作系統(RTOS),這樣可以很容易移植到不同的嵌入式應用中;三是設計統一的底層接口,適應不同的Flash類型。本文設計的線性文件系統為典型的嵌入式系統提供了所需的類文件系統能力。需要注意的是,本文件系統不支持復雜的Flash扇區擦寫次數均衡算法,沒有目錄層次,并且和其它的文件系統不兼容。

1 線性文件系統

線性文件系統的設計思路是這樣的:文件分為文件頭和文件數據區兩個部分,每個文件按照順序存放在Flash中,以單向鏈表來鏈接文件。文件的起始部分是文件頭,包含文件的屬性、指向下一個文件頭的指針、文件頭和文件數據區的32位循環冗余校驗和(CRC32)等。文件頭用一個32位的字來表示文件屬性,每位表示一種屬性,如數據文件或者是可執行文件,是否已刪除的文件等,具體可以根據應用的需要來定義文件的屬性;文件頭和文件數據區維護獨立的CRC32校驗,使文件系統能更精確檢測文件的完整性。文件的起始地址沒有特殊需求,分配給文件系統的Flash大小限制了文件的大小。另外,線性文件系統作為嵌入式系統的一個功能模塊,它為應用程序提供與標準文件系統類似的API接口,如:read()、write()、open()、close()、stat()和seek()等。對于同時在多片Flash的系統而言,每片Flash相當于一個目標,文件都可存儲在任何一片中(當然受物理空間限制),但不能跨片存儲。

圖1 Flash文件系統空間

    在第一個文件創建之前,必須進行初始化,將所有分配給文件系統的Flash空間擦除。當創建第一個文件時,起始位置從文件系統的起始地址開始,文件頭指針指向下一個空文件的起始位置(鏈表尾部);第二個文件的位置從當前的鏈表尾部開始,同時文件頭中的鏈表指針指向新的尾部。刪除文件時,僅僅是簡單地把文件頭的標識位中的活動文件標識位置0,表示刪除。這樣,在經過多次刪除之后,就有必要運行碎片整理模塊來進行文件系統Flash空間的碎片整理。碎片整理模塊還需要在文件系統Flash空間尾部留一個扇區來數據備份,以便當碎片整理被打斷時(如下電或者復位)可以恢復文件系統。這個保留的扇區稱空閑扇區。它必須放在文件系統空間之后,這樣可以保證文件系統的所有文件在所占用的Flash空間是連續的。整個文件空間的分配如圖1所示。

陰影部分是文件頭,數據結構如下:

struct hdr{

unsigned short hdrsize; /*文件頭字節數*/

long filsize; /*文件頭版本*/

long filsize; /*文件大小*/

long flags; /*描述文件的標識*/

unsigned long filcrc; /*文件數據的CRC32的值*/

unsigned long hdrcec; /*文件的最后修改時間*/

struct hdr *next; /*指向下一個文件頭的指針*/

char name[NAMESIZE]; /*文件名*/

char info[INFOSIZE]; /*文件描述信息*/

};

碎片整個記錄區包含兩種數據類型:碎片整理文件頭信息表defraghdr和文件區扇區整理前后的CRC值備份表sectorcre。具體的地址分配從空閑扇區的起始地址減1開始,往前分配文件系統扇區數乘以4字節作為sectorcrc的空間;從sectorcrc起始地址減1開始,往前分配活動文件個數乘以64字節作為碎片整理文件頭信息表。這兩個結構定義如下:

struct defraghdr{

struct hdr *ohdr; /*文件頭的原始位置指針*/

struct hdr *nextfile; /*指向下一個文件的指針*/

long filsize; /*文件大小*/

unsigned long crc; /*這個頭的CRC32值*/

unsigned long ohdrcrc; /*原始文件頭CRC32值的拷貝*/

long idx; /*碎片整理表頭的索引*/

long nesn; /*新的文件尾的扇區號*/

long neso; /*新的文件尾的扇區偏移量*/

char *nda; /*新的文件起始地址*/

char fname[NAMESIZE]; /*文件名*/

};

struct sectorcrc{

unsigned long precrc; /*碎片整理前扇區數據CRC32的值*/

unsigned long postcrc; /*碎片整理后扇區數據CRC32的值*/

};

從上面介紹可知,除了文件數據之外,文件系統還需要如下4種額外的開銷。

①文件頭:這是每個文件必須的開銷,如果文件名和信息域各24字節,那么整個文件頭共76字節。

②碎片整理文件頭信息表:每個活動(非刪除)的文件在進行碎片整理時在這個表里創建一個表項,每個表項64字節。

③碎片整理前后的扇區CRC32值表:保存文件整理前后的CRC32值,總的字節數約為文件所占扇區數的4倍。

④空閑塊:用來在碎片整理過程中備份當前整理扇區數據。它必須不小于文件系統其它所有扇區。

可以用下面方程計算系統開銷的總和:

overhead=(FTOT*(HDRSIZE+64))+SPARESIZE+(SECTORCOUNT*8)

其中:

FTOT是總的文件數;

HDRSIZE是文件頭字節數(目前為76字節);

SPARESIZE是空閑塊的大??;

SECTORCOUNT是分配給文件系統的Flash扇區數,不包括空閑塊。

圖2 文件碎片整理

2 碎片整理

創建新文件需要占用文件系統空間;但是,由于Flash的底層技術不允許Flash中的任意地址空間被刪除,而是按照扇區為單位刪除,為此在刪除一個文件的時候,暫時沒有把整個文件所占的空間刪除,僅僅是在文件頭的標識里作一個刪除標識,并保留在Flash中。這樣,被刪除文件積累到一定的數量時,就會占用相當大的空間。因此,需要整理文件系統Flash空間,使被刪除文件占用的空間重新使用。圖2顯示了碎片整理過程。文件F1、F2和F5已經被刪除,并且在碎片整理之后從Flash中被清除。

進行碎片整理的方法可以有多種。對于嵌入式系統來說,選擇哪種方法,衡量的依據是復雜性和功能之間的平衡。下面討論兩種不同的方法:第一種方法相當簡單,但是有缺陷;第二種方法功能強大得多,筆者在線性文件實現中即采用這種方法。當然,存在更加復雜的解決辦法,但通常的情況是,所添加的復雜性會使整個文件系統的實現更加復雜。目標是保持文件存儲的簡單和線性,保證所有的文件都是以連續的空間存儲在Flash中。

最簡單的方法是將活動的文件備份在RAM中,刪除分配給文件系統的Flash空間,然后將RAM中備份的所有文件拷貝回Flash。這種方法很簡單,并且不需要分配一個扇區作為空閑區;但問題是,需要有一整塊和分配給文件系統的空間一樣大的RAM來完成這項工作。更糟的是,如果此時系統被復位,或者在刪除扇區內容卻還沒有將文件拷貝回Flash的時候被斷電,文件系統將會崩潰。因為RAM中的內容會隨之選擇,文件內容會被破壞掉。

我們在文件系統實現設計了一種碎片整理方法,可以防止在碎片整理過程中系統復位導致文件崩潰的情況。采用這種方法,不需要大塊的RAM,但是需要預選先分配給碎片整理過程一個Flash扇區作為備份區。這個扇區的字節數不小于任何分配給文件系統的扇區。在整個文件系統中,這個扇區位于分配給文件系統最后一個扇區的下一個扇區。因為扇區可能比需要分配給非刪除文件的備份的空間要小,所以它必須逐個扇區進行處理,而不是一下就把所有的碎片整理完。采用備份扇區的好處是,在碎片整理過程中,無論斷電或者復位都不會破壞文件系統。當下次系統重新恢復時,會根據在碎片整理前記錄的每個扇區碎片整理前后CRC值,來判斷當前的文件碎片整理狀態。如果上次文件整理沒有完成,就會繼續上次的整理。這種技術的一個缺陷是空閑扇區的擦寫次數會較多。這樣空閑扇區就可能因為達到擦寫壽命而失敗。達到這一點的關鍵依賴于使用的Flash、所分配給文件系統的扇區數、文件刪除和重建的頻率。一個可行的解決辦法采用電池備份的RAM來替換空閑扇區,可以增加Flash的整體壽命,但是對那些預算緊張的應用來說太過奢移。

具體的碎片整理過程是,首先建立碎片整理區。①為每個扇區建立2個CRC32表項;第一個CRC32是這個扇區在碎片整理前的CRC值;第二個CRC32值是計算出來的碎片整理后的CRC32值。這些CRC是當碎片整理過程被打斷時,用來重新恢復整理用的。②創建碎片整理文件頭信息表,每個活動的文件占用一個表項。③計算①和②的CRC值,并保存。①~③的數據保存在圖1中的碎片整理記錄區。第二步是文件重定位;遍歷文件系統的每個扇區,處理重新定位后存儲空間和該扇區相覆蓋的文件。在每個扇區被重寫之前,扇區原來的信息被保存在空閑扇區里。第三步,擦除Flash;遍歷未使用的扇區,確認所有的扇區被刪除。第四步,完整性檢測:對新的文件進行檢測,保證所有重定位的文件都是完整的。

3 應用分析

Flash的扇區有最大擦寫次數。當前的Flash芯片一般支持10萬~100萬次的擦除。文件系統的應用各不相同,所以這里不能下結論說采用線性文件系統Flash的壽命會有多長。下面解釋文件系統訪問Flash的方法。這樣用戶可以根據應用來判斷Flash的預期壽命。

我們所設計的線性文件系統并不進行扇區刪除次數均衡,以延長Flash的使用壽命。如果所需要的文件系統頻繁修改并需要扇區刪除次數均衡,可以購買現成的Flash文件系統。扇區刪除均衡算法大大增加了底層實現的復雜性,并且超出本文的討論范圍。一般來說,通過文件系統來管理Flash的需求遠大于對Flash扇區擦寫次數均衡的需求,特別是現在越來越多的Flash扇區都支持100萬次的擦寫。

如上面所提到的,文件系統本身提供給編程者的接口API與標準OS提供的接口類似。這可能誤導開發者認為文件系統可以看作是一個硬盤,以任意的頻率進行讀寫操作。事實并不是這樣,線性文件系統碎片整理同制并沒有進行擦寫次數均衡,這意味著空閑扇區可能會是最早損壞的Flash扇區。因為在碎片整理過程中,空閑扇區被用作其它所有扇區的暫時存放扇區。例如在設計里,有13個扇區Flash用來作線性文件系統區,有1個扇區作為空閑扇區。假設對于最壞情況的碎片整理(13個扇區都影響到),如果每天進行1次碎片整理,對于100 000次擦寫次數的Flash而言,可用期能夠超過20年(100 000/13/365=21)。20年是基于每天進行1次碎片整理,并且所有扇區都影響到的情況。碎片整理的頻率和整理所影響到的扇區數受應用程序使用文件的限制。用戶可以根據文件系統的應用來估算Flash扇區的磨損情況,并作相應的處理。

下面討論文件系統是如何使用扇區的。Flash扇區僅僅在碎片整理時候才被擦除。當刪除文件的時候,只是簡單地作一個標識(文件頭的一個位)。如果一個存在的文件以寫的方式打開,實際的修改步驟是,刪除原有的文件,并在當前文件系統的最后一個文件之后重寫該文件。最后,這個過程會使文件系統的Flash空間被耗盡,這要就需要運行碎片整理程序。碎片整理程序會使已被刪除文件所占用的空間被清除,所有活動的文件在Flash中的位置以連續的方式存放。每個扇區的整理過程是,扇區被拷貝到空閑扇區作備份,然后原來的扇區被刪除,計算出該扇區在文件整理后的內容,寫入扇區,之后刪除空閑扇區的備份。文件系統從頭到尾每個扇區重復這樣作。在碎片整理時,如果一個扇區不需要進行碎片整理,碎片整理程序就不會動這個扇區因此,受碎片整理程序影響的扇區數目依賴于當前被文件系統占用的Flash扇區數和被刪除文件在Flash中的位置。

在一個典型的嵌入式應用里,文件系統中的可執行文件本身就是應用程序。可執行文件一般是最大的文件,也是最不可能經常改變的文件。這意味著執行文件所占用的空間是相對固定的,將會減少空閑扇區因為碎片整理而進行的擦寫次數。另外一方面,如果有任何文件需要定期改動,碎片整理將會更加頻繁運行。

嵌入式設計系統范文5

關鍵詞:SEP4020;音頻系統;驅動程序;IIS總線;UDA1341

中圖分類號:TP338文獻標識碼:A文章編號:1009-3044(2008)31-0964-03

Design of Embedded Audio System Based on SEP4020

QI Hao-chun

(IC Embedded System Lab,Southeast University,Nanjing 210096,China)

Abstract: SEP4020 which is developed by National ASIC System Engineering Research Center of SEU is a microprocessor based on ARM7TDMI core. The playing and sampling of audio signals is realized with an embedded audio system constructed by connecting the SEP4020 and CODEC UDA1341 with IIS bus. The hardware system structure and design of device driver of Embedded Audio device based on SEP4020 and IIS Bus interface have been introduced in the article. The explanations of relative hardware designs, as well as the key features of the audio devices' driver under embedded system are provided.

Key words: SEP4020; audio system; driver; IIS bus; UDA1341

1 引言

嵌入式音頻系統廣泛應用于GPS自動導航、PDA、3G手機等嵌入式領域,音頻系統基于某種處理器和操作系統,由音頻設別和驅動程序兩部分組成。音頻設別主要完成聲音數據的采集、回放、混音和聲音信號的模數轉換,驅動程序在系統啟動時對硬件進行初始化,在系統啟動后實現硬件和應用程序之間的數據交互。

音頻系統設計包括軟件設計和硬件設計兩方面,硬件部分采用基于IIS總線的音頻系統體系結構。IIS(Inter-IC Sound bus)是飛利浦公司提出的串行數字音頻總線協議,它主要針對數字音頻處理技術和設別的標準接口,它將音頻數據和時鐘信號分離,從而避免了由時鐘帶來的抖動問題,系統中不再需要消除抖動的器件。隨著該標準的廣泛應用,不同廠家紛紛開發了支持該標準的語音芯片,但大多數由于功能單一,操作復雜,沒有得到廣泛應用。PHILIPS生產了一種支持IIS總線數據格式的音頻編解碼新品啊UDA1341TS,由于其功能強大、低功耗、低電壓及其具有DSP語音功能等特征,目前已廣泛應用于各種嵌入式語音系統中。

在軟件上,作為一個功能復雜的嵌入式系統,需要有嵌入式操作系統支撐。Nucleus PLUS是美國ATI公司位實時性要求較高的嵌入式系統應用設計的操作系統內核。約95%的Nucleus PLUS代碼用ANSI C語言編寫,因此,非常便于移植并能夠支持大多數類型的微處理器。由于音頻應用對實時性有很高的要求,且需要處理的數據量較大,所以必須合理分配資源,使用合適的算法。本文針對東南大學的SEP4020處理器和PHILIPS公司的UDA1341TS型立體聲音頻CODEC構造了基于IIS的嵌入式音頻系統, 給出了整個系統的軟硬件實現方案。

2 硬件體系結構的配置

2.1 SEP4020微處理器簡介

SEP4020由東南大學國家專用集成電路系統工程技術研究中心設計的基于ARM720T的一款ARM處理器,采用0.18um標準CMOS的工藝設計,內嵌32位RISC內核,兼容ARM720T,帶8KB指令數據Cache,三級流水線作業,支持片上斷點、調試點設置,具有先進的軟件開發環境和調試環境。圖1為SEP4020處理器的結構框圖。

2.2 IIS總線

IIS(Inter-IC Sound)總線是PHILIPS公司提出的串行數字音頻總線協議。它是一種面向對媒體的音頻總線,專用于音頻設備之間的數據傳輸,為數字立體聲提供序列的連接至標準編解碼器。IIS總線只處理聲音數據。其他信號(如控制信號)必須單獨傳輸。為了使必需的引腳數最小并且保持連線簡單,IIS總線由3條信號線組成:時分復用的數據銅導線(SD)、字選擇線(WS)和時鐘線(SCK)。

I2S工作模式分為MASTER模式和SLAVE模式,MASTER模式下,I2S向外輸出時鐘,SLAVE模式下,時鐘由外部芯片提供。常見的SOC芯片的I2S工作在MASTER模式,芯片外接音頻CODEC,SOC芯片向外提供數據,CODEC做DA轉換發出聲音,錄音則是CODEC提供AD轉換后的數據,SOC芯片把數據接收到MEMORY中。

無論在MASTER模式還是在SLAVE模式,I2S都可以作為TRANSMITTER或者RECEIVER,如果I2S向外接CODEC提供數據,I2S是TRANSMITTER,如果I2S從外接CODEC接收數據,I2S是RECEIVER。

圖2 MASTER = TRANSMITTER圖3 MASTER = RECEIVER

SCK由總線時鐘分頻而來,分頻比可配。WS是占空比為50%的周期性信號,高低電平分別對應左右(或者右左)聲道,周期長度和音頻數據的字長有關,例如,8位的雙聲道音頻數據,對應的WS周期就是16個SCK,8個左聲道數據,8個右聲道數據;若是單聲道,WS的高低電平將使用相同的數據。左右聲道對應的WS信號電平可配,可以左低右高或者左高右低。

圖4I2S信號傳輸波形(左先) 圖5 I2S信號輸出波形(右先)

I2S的數據(SD信號)的變化比字選擇(WS)晚一個時鐘。I2S支持8位、16位、32位字傳輸,數據的傳輸支持DMA模式。在單聲道模式下,左右聲道輸出同樣的數據。

當I2S作為TRANSMITTER工作時,數據從總線傳輸到I2S的數據FIFO,然后根據設定的字長、聲道將數據送出,數據的高位先出。當FIFO為半空的時候,發出中斷和DMA請求,當FIFO為空時,發出空中斷,I2S將繼續重復發送最后一個數據(這種情況下,CODEC將會發出不是用戶想要的聲音),直到有新的數據寫到FIFO中。

當I2S作為RECEIVER工作時,數據從外接的CODEC輸入到FIFO,當FIFO半滿時發出中斷和DMA請求,當FIFO為滿時,發出滿中斷,I2S將繼續接收數據,但之后接收的數據會被丟棄而不被存入FIFO中。

除了工作在標準的I2S模式,I2S模塊還可以工作在WS和SD對齊的方式。

圖6 對齊數據輸出波形(左先) 圖7 對齊數據輸出波形(右先)

SEP4020內置IIS總線接口,可直接外接8/16比特的立體聲CODEC。它還可以給FIFO通道提供DMA傳輸模式而非中斷模式,從而使數據發送和接收同時進行。該IIS接口有3種工作方式(正常傳輸模式,DMA模式,傳輸/接收模式),可以通過設置IISCON寄存器來選擇,本系統使用正常傳輸模式,該模式下,IIS數據線將通過DMA接收和發送音頻數據,IIS總線接口為FIFO隊列的訪問提供DMA傳輸模式來取代中斷,從而發送和接收數據。

2.3 支持IIS的編解碼芯片UDA1341TS介紹

UDA1341支持IIS總線數據格式,采用位元流轉換技術進行信號處理,完成聲音信號的模數轉換,具有可編程增益放大器和數字自動增益控制器,其低功耗、低電壓的特點使其非常適合用于MD/CD、筆記本電腦等便攜式設備。

UDA1341提供兩個音頻通道,分別輸入和輸出,對應的引腳連接:IIS總線的音頻輸出IISSDO對應UDA1341的音頻輸入;IIS總線的音頻輸入IISSDI對應于DA1341的音頻輸出。UDA1341的L3接口相當于一個混音器控制接口,可以用來控制輸入/輸出音頻信號的音量大小、低音等。L3接口的引腳L3MODE、L3DATA、L3CLOCK分別連接到SEP4020的GPA8、GPA3、GPA2。

2.4 L3總線介紹

本文中UDA1341TS采用微控制器輸入模式。在該模式總,所有的數字音頻處理特征和系統控制特征由微控制器通過l3m總線控制。如UDA1341TS在放音過程中去重音、音量控制、低音增強、高音和軟件靜音等DSP特征可通過L3 總線控制。

UDA1341TS和微控制器之間數據和控制信息的交換是通過一個L3硬件接口實現的。它包括以下引腳:

L3DATA,微控制器接口數據線;

L3MODE,微控制器接口模式線;

L3CLOCK,微控制器接口時鐘線;

通過微控制器總線的信息傳輸是按照“L3”格式來組織的。它有兩種不同的操作模式:地址模式和數據傳輸模式。地址模式通過L3總線來選擇通道設備并且指明數據傳輸的目的寄存器。數據傳輸模式中數據傳輸可以是雙向的,向UDA1341TS輸入數據,對它的音頻處理和控制功能進行編程;向外輸出峰值電平的值。

L3控制的本質就是向UDA1341TS寫數據的過程。向設備寫控制字分兩步進行:第一步是在地址模式根據地址選擇設備,同時指名后來數據要發送到的寄存器類型;第二步是在數據傳輸模式下,傳送一個8位字節。要想正確地配置硬件以完成正確的功能,SEP4020提供的5根IIS信號線IISDI,IISDO,IISLRCK,IISCLK及CODEC必須和UDA1341TS提供的IIS信號線DATAO,DATAI,WS,BCK及SYSCLK對應連接。

至此,使用SEP4020芯片和UDA1341TS及其它必需設備構建了一個功能完善的嵌入式音頻硬件系統。為接下來的與本系統對應的底層控制軟件的開發做好了準備,接下來進行基于硬件的底層軟件設計。

3 底層驅動程序設計

嵌入式系統硬件設備種類繁多,且缺乏PC中標準的體系結構,所以必須為各種設備編寫驅動程序,驅動程序的主要任務是控制音頻數據在硬件中流動,并為音頻應用提供標準接口。

通過配置IIS和CODEC,以及對DMA傳輸進行配置,可以實現IIS的錄音和放音等功能,本系統音頻采樣規格為44.1Hz,采樣精度為16bit。具體配置如下:

3.1 L3總線配置

本系統將GPA2配置為L3CLOCK信號,GPA3,GPA8分別配置為L3DATA和L3MODE。SEP4020和UDA1341連接配置程序如下:

static void IIS_PortSetting(void)

{ #define L3C (1

#define L3D (1

#define L3M (1

static void _WrL3Addr(U8 data)

{

S32 i,j;

rGPBDAT= rGPBDAT &~(L3D|L3M|L3C)|L3C;//L3D=L, L3M=L(in address mode), L3C=H

for(j=0;j 190ns

//GPB[4:2]=L3C:L3D:L3M

for(i=0;i

{

if(data & 0x1) //If data's LSB is 'H'

{

rGPBDAT &= ~L3C; //L3C=L

rGPBDAT |= L3D;//L3D=H

for(j=0;j 500ns

rGPBDAT |= L3C;//L3C=H

rGPBDAT |= L3D;//L3D=H

for(j=0;j 500ns

}

else //If data's LSB is 'L'

{

rGPBDAT &= ~L3C; //L3C=L

rGPBDAT &= ~L3D; //L3D=L

for(j=0;j 500ns

rGPBDAT |= L3C;//L3C=H

rGPBDAT &= ~L3D; //L3D=L

for(j=0;j 500ns

}

data >>= 1;

}

rGPBDAT= rGPBDAT & ~(L3D|L3M|L3C)|(L3C|L3M); //L3M=H,L3C=H

}

3.2 DMA傳輸配置

本系統相應的DMA寄存器配置如下,I2S Transmitter 表示放音,I2S Receiver表示錄音。

// I2S Transmitter DMA Configuration

write_reg(DMACC0SrcAddr, EMIADDR_CSC_BASE); //source addr

write_reg(DMACC0DestAddr, I2S_T_DR); //destination addr

write_reg(DMACC0Control, TRANSFERSIZE(16)+DI(0)+SI(1)+DESTSIZE(2)+SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));

//control, 16, SI, 32, Burst = 4

write_reg(DMACC0Configuration, 0X200B); //configuration, mem to I2S_T,

//completionmask, enable

// I2S Receiver DMA configuration

write_reg(DMACC2SrcAddr, I2S_R_DR);

write_reg(DMACC2DestAddr, EMIADDR_CSD_BASE);

write_reg(DMACC2Control, TRANSFERSIZE(0x800)+DI(1)+SI(0) + DESTSIZE(2) + SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));//re:256 -- tr:16, add int

write_reg(DMACC2Configuration, 0X038D); //I2S_R(MMC) TO mem,

//completion not mask

// I2S_T DMA Configuration as receiver

write_reg(DMACC0SrcAddr, I2S_T_DR);//source addr

write_reg(DMACC0DestAddr, EMIADDR_CSGBAB_val);//destination addr

write_reg(DMACC0Control, TRANSFERSIZE(16) + DI(1) + SI(0) + DESTSIZE(2)+SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));//control, 16, SI, 32, Burst = 4

write_reg(DMACC0Configuration, 0X020D);//configuration, mem to I2S_T,

//completionmask, enable

// I2S_R DMA configuration as transmitter

write_reg(DMACC2SrcAddr, EMIADDR_CSB_BASE);

write_reg(DMACC2DestAddr, I2S_R_DR);

write_reg(DMACC2Control, TRANSFERSIZE(256)+DI(0)+SI(1)+DESTSIZE(2)+SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));//re:256--tr:16, add int

write_reg(DMACC2Configuration, 0X280B);//I2S_R(SSI) TO mem,

//completion not mask

4 結束語

本文介紹了在嵌入式系統中構建基于IIS總線的音頻系統,實現音頻的播放和錄音的采集。具體講述了基于東南大學ASIC中心SEP4020型微處理器的CODEC硬件連接的實現及嵌入式操作系統下音頻驅動的實現。該系統已經在基于SEP4020的開發平臺上得到了實現,可以順利進行音頻的播放和采集,并取得了良好的效果。

參考文獻:

[1] SEP4020移動終端應用處理器用戶手冊[S].國家用集成電路系統工程技術中心,2008-01.

[2] FURBERS.ARM SoC System Structure[M].田澤,于敦山,盛世敏,譯.北京:北京航空航天大學出版社,2002:87-159.

[3] 徐睿,李斐,王申康.基于IIS總線的嵌入式音頻系統設計[J].計算機應用,2004(4):7-9.

[4] 黎想,馬欣.基于VxWorks的音頻系統的設計與實現[J].計算機工程,2002(12):233-235.

嵌入式設計系統范文6

【關鍵詞】嵌入式系統;開放型;虛擬實驗平臺

嵌入式課程是電子信息類專業的一門核心課程,具有理論學習難度大、實踐操作性強等特點。隨著現代計算機仿真技術的飛速發展,在嵌入式課程的實驗教學中采用仿真軟件進行虛擬實驗已變得非常普遍。國內外已經有不少大學對這方面進行了研究,主要是利用計算機仿真技術實現實驗內容、完成實驗操作。虛擬實驗在嵌入式課程體系教學中的應用,也取得了一些成果。如何結合自己的教學實際,設計一套性能穩定良好的嵌入式系統虛擬實驗平臺,使學生真正對課程感興趣、更全面的提高學生的動手實踐技能,就成了一個亟待解決的問題。

1嵌入式實驗教學存在的問題

1.1實驗教學難以開展

對于嵌入式系統的遠程教學、網絡教學等開放教學模式來說,受空間和時間等因素的影響,很難開展實驗教學,學生沒有辦法動手操作直接參與實驗。而對于傳統的面授教學來說,雖大部分院校配備有相關的配套實驗箱,但ARM實驗箱價格較為昂貴,所以課程的實體實驗資源非常有限,實驗需要分批、分時進行,當然,還有部分院校因實驗條件和資金的限制,根本不具備實驗的條件,只能單純進行理論教學。缺乏了實驗教學的輔助作用,大大增加了ARM嵌入式教學的難度。

1.2實驗教學缺乏創新

目前,課程的實驗教學一般采用驗證性實驗模式,實驗內容較為單一。學生一般在老師的指導下,按照實驗手冊進行簡單接線,然后直接將編寫好的程序下載到芯片中,觀察實驗現象,機械被動地進行實驗操作。學生做完了實驗,只能做到實驗結果的表象認知,缺乏“從概念到產品”的系統訓練,對于嵌入式系統產品的設計并沒有深入的學習體會。

2虛擬實驗平臺設計

為了有效加強課程實驗內容的深度,提高學生綜合運用知識的能力,適應市場的變化,在借鑒前人成果的基礎上,結合筆者的實際教學經驗,采用仿真軟件Proteus和編程工具Keil,設計完成了一套適用于開放型教學的虛擬實驗平臺。本虛擬實驗平臺采用基于ARM7內核的LPC2138微控制器作為核心控制芯片,共包括14個實驗模塊,除“匯編語言實驗模塊”外,其他模塊均采用C語言實現軟件程序的編寫,并且,在完成基本實驗要求的基礎上,學生可自行設計程序并修改。設計完成的適用于開放型教學的虛擬實驗平臺如圖1所示。

2.1最小系統實驗模塊

最小系統實驗模塊包括LPC2138微控制器,3.3V供電電路,復位電路和時鐘電路,其中時鐘電路采用振蕩模式產生時鐘信號。通過學習可幫助學生理解最小系統的概念和組成部分。

2.2匯編語言實驗模塊

通過一個簡單的ARM匯編程序實現兩個寄存器的循環相加??勺寣W生了解有關ARM匯編指令格式、程序結構和基本風格。

2.3輸入輸出(GPIO)實驗模塊

采用引腳分別連接1個按鍵輸入和1個蜂鳴器及1個LED輸出,完成最基本的GPIO輸入輸出控制。當按鍵按下的情況下,蜂鳴器響,LED發光二極管滅;當按鍵松開的情況下,蜂鳴器不響,LED發光二極管亮。為了和定時器實驗模塊中的定時功能進行對比學習,本實驗模塊中的延時功能采用for循環語句實現。

2.4外部中斷實驗模塊

輸出元件采用1個蜂鳴器、2個發光二極管,輸入元件采用1個按鍵模擬外部中斷信號。正常狀態下,2個發光二極管依次循環點亮,按下按鍵,檢測到中斷信號,進而執行中斷處理函數,執行完畢后,再返回主函數繼續執行發光二極管的點亮任務,模擬中斷流程。

2.5定時器(Timer)實驗模塊

主要使用定時器1實現比較匹配輸出控制LED閃爍,并采用四通道虛擬示波器的A端口檢測輸出信號的波形。為了讓學生熟悉示波器的使用以及各種信號的比較學習,虛擬示波器的B、C、D端口分別輸入脈沖信號、時鐘信號和正弦信號三種信號源。

2.6SPI實驗模塊

采用串入并出顯示驅動芯片74HC595控制1個LED數碼管循環顯示0~F字符。通過學習可掌握全雙工同步串行接口SPI的工作原理、SPI的接口電路連接和LED數碼管顯示的編程控制方法。

2.7I2C實驗模塊

主要是通過操作帶I2C接口的存儲芯片FM24C02完成,FM24C02是2048位的串行電可擦除只讀存儲器,內部有256個字節。該實驗模塊主要是實現向該存儲芯片中寫入10字節數據,然后讀回數據,并判斷是否正確。讓學生學習和掌握設置I2C引腳連接、I2C時鐘頻率、主機發送起始信號、發送從機地址和判斷總線狀態等方法。

2.8UART實驗模塊

通過串行接口UART0輸出字符串,輸出字符串可通過編程控制,采用虛擬終端接收并顯示,同時采用虛擬串行接口器件COMPIM,向上位機PC發送該字符串,并且使PC終端顯示收到字符串,實現微控制器芯片與上位機PC的通信。

2.9ADC實驗模塊

主要通過可調電阻改變輸入引腳的電壓提供模擬量輸入,實驗平臺通過ADC對模擬量外部輸入電壓進行AD采樣轉換,并把結果轉換成電壓值,然后發送到串行接口UART0,結合UART實驗模塊中的虛擬終端進行顯示。

2.10WDT實驗模塊

看門狗定時器實驗模塊開始主要先控制4個LED發光二極管循環閃爍8次,期間不斷進行喂狗處理,然后只點亮其中1個LED發光二極管,并進入死循環,等待WDT復位。通過學習讓學生了解看門狗的原理以及如何設置相關寄存器完成看門狗的使能、啟動、喂狗等操作。

2.11PWM實驗模塊

主要采用PWM2輸出PWM信號,并由按鍵控制PWM的占空比,每按一次按鍵將會改變一次PWM的占空比,從而控制LED發光二極管的閃爍亮度。利用虛擬交流電壓表檢測輸出端口的電壓大小,并利用示波器顯示輸出端口的波形,便于觀察LED發光二極管的閃爍亮度和理解PWM的作用。

2.12RTC實驗模塊

主要采用微控制器內部RTC的實時時鐘控制LED發光二極管的閃爍,即通過設置RTC秒值的增量產生中斷,每產生一次中斷,取反LED發光二極管控制口,并利用示波器檢測輸出端口的波形。

2.13LCD實驗模塊

實現通過輸出端口控制液晶顯示屏LM032L顯示字符,顯示字符可通過程序改變。

2.14UC/OS-II操作系統實驗模塊

基于UC/OS-II實時操作系統,通過芯片引腳分別控制1個按鍵輸入和1個蜂鳴器及1個LED發光二極管輸出,實現基于實時操作系統的GPIO輸入輸出功能。通過學習幫助學生簡單理解芯片在操作系統下進行控制的方法以及和在沒有操作系統的情況下進行控制的區別。該實驗平臺已通過打包工具生成了安裝包,學生只需將安裝包通過現有網絡版實驗管理系統下載到PC機中或通過U盤等存儲工具復制到PC機中,按照安裝步驟完成簡單安裝后,就可以利用虛擬仿真技術在PC機上進行實驗操作。

3仿真效果舉例

本節主要選取虛擬實驗平臺中的一個模塊ADC實驗模塊演示仿真效果,ADC實驗模塊主要通過可調電阻改變輸入引腳的電壓提供模擬量輸入,進行AD采樣轉換,并把結果轉換成電壓值,發送到串行接口UART0進行顯示。圖2為ADC實驗模塊的主函數;圖3為ADC實驗模塊的仿真演示效果。

4實驗平臺建設意義

4.1節省資金投入

本文設計完成的虛擬實驗平臺可方便快捷的安裝到計算機中,這樣既可以緩解實驗設備緊張、建設資金有限的問題,也可以解決實驗設備更新速度慢等問題,保證每個學生都能做到真正參與實驗。

4.2培養實踐能力

通過虛擬實驗平臺,可讓學生形象深刻的了解嵌入式系統的工作原理,掌握知識本身,如在實驗條件允許的情況下,在虛擬實驗的基礎上,再加上傳統的實驗箱教學,形成“虛實”結合的實驗模式,將大大有利于學生學習課程的興趣和學生動手實踐技能的提高。

4.3突破時空的局限該平臺的實現

為學生提供了開放的學習環境,學生可選擇合適的時間和地點進行學習,從而很好的解決了學生學習時在時空上的局限性。4.4提供借鑒意義隨著仿真軟件的功能越來越強大和應用越來越成熟,在實驗教學中采用仿真軟件進行虛擬仿真實驗已變得非常普遍。本文對嵌入式虛擬實驗平臺的研究對其它各類專業虛擬實驗室的建設具有一定的借鑒意義。

5結論

亚洲精品一二三区-久久