時間:2023-08-18 17:26:02
序論:在您撰寫嵌入式設計系統時,參考他人的優秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發您的創作熱情,引導您走向新的創作高度。
[中圖分類號]TP368.1[文獻標識碼]A[文章編號]1007-9416(2010)03-0009-01
嵌入式系統是以應用為中心,以計算機技術為基礎,軟件硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。嵌入式系統是將先進的計算機技術、半導體技術、電子技術和具體應用相結合的產物。
近年來,在計算機、互聯網和通信技術高速發展的同時,嵌入式系統開發技術取得迅速發展,嵌入式系統應用范圍也急劇擴大。從小到電子手表、電子體溫計、翻譯機等,大到如冷氣機、電冰箱、電視機,甚至馬路上紅綠燈的控制器、戰斗機中的飛控系統等。嵌入式系統幾乎無處不在:
1 嵌入式系統的特點
與通用計算機系統相比,嵌入式系統有其自身的特點:
(1)嵌入式系統是將先進的計算機技術、半導體技術以及電子技術與各個行業的具體應用相結合的產物,這一點就決定了它必然是一個技術密集、資金密集、高度分散、不斷創新的知識集成系統。
(2)嵌入式系統通常是面向用戶、面向產品、面向特定應用的。
(3)嵌入式系統和具體應用相結合,其升級換代也是和具體產品同步進行的。因此嵌入式系統產品一旦進入市場,就具有較長的生命周期。
2 嵌入式系統的發展趨勢
消費家電的智能化,為嵌入式系統的發展展現出美好的市場前景,也對嵌入式系統提出新的發展要求;微電子技術和系統設計方法的進步,使得嵌入式系統的發展呈現出以下趨勢:
(1)隨著嵌入式系統功能的增加,嵌入式系統處理的信息和數據量越來越大,系統對處理的響應時問也要求更嚴格,嵌入式處理器的主頻會越來越高,甚至采用多核的方式來應付日益增長的性能要求。
(2)嵌入式系統在工業領域和某些特殊場合的廣泛應用,要求嵌入式系統具有遠程控制軟件更新和故障診斷的能力。
(3)隨著嵌入式系統在手持設備上的大量應用,手持設備的特點要求嵌入式系統功耗、體積更小,重量更輕。
(4)嵌入式系統將具有更加高速的通信接口,如USB2.0、千兆以太網等。
3 嵌入式系統設計流程
嵌入式系統開發分為軟件開發部分和硬件開發部分。嵌入式系統開發過程一般都采用“宿主機/目標板”開發模式,即利用宿主機(PC機)上豐富的軟硬件資源及良好的開發環境和調試工具來開發目標板上的軟件,然后通過交叉編譯環境生成目標代碼和可執行文件,通過串口FUSB/以太網等方式下載到目標板上,利用交叉調試器在監控程序運行,實時分析,最后,將程序下載固化到目標機上,完成整個開發過程。當前,嵌入式開發已經逐步規范化,在遵循一般工程開發流程的基礎上,嵌入式開發有其自身的一些特點,圖1所示為嵌入式系統開發的一般流程。流程主要包括系統需求分析佞求有嚴格規范的技術要求)、體系結構設計、軟硬件及機械系統設計、系統集成、系統測試、最終產品。具體情況如下:
(1)系統需求分析:確定設計任務和設計目標,并提煉出設計規格說明書,作為正式設計指導和驗收的標準。系統的需求一般分功能性需求和非專題與綜述功能性需求兩方面。功能性需求是系統的基本功能,如輸入輸出信號、操作方式等;非功能需求包括系統性能、成本、功耗、體積、重量等因素。
(2)體系結構設計:描述系統如何實現所述的功能和非功能需求,包括對硬件、軟件和執行裝置的功能劃分,以及系統的軟件、硬件選型等。一個好的體系結構是設計成功與否的關鍵。
(3)硬件/軟件協同設計:基于體系結構,對系統的軟件、硬件進行詳細設計。為了縮短產品開發周期,設計往往是并行的。嵌入式系統設計的工作大部分都集中在軟件設計上,采用面向對象技術、軟件組件技術、模塊化設計是現代軟件工程經常采用的方法。
(4)系統集成:
把系統的軟件、硬件和執行裝置集成在一起,進行調試,發現并改進單元設計過程中的錯誤。
(5)系統測試:對設計好的系統進行測試,看其是否滿足規格說明書中給定的功能要求。
4 嵌入式系統設計面臨的挑戰
要求更高的應用需求推動嵌入式設計從8/16位轉向功能更強大的32位MCU。這種升級給工程師帶來了嚴峻的挑戰,提出了一系列前所未有的全新問題。
(1)轉變觀念,需要熟悉新的開發模式。嵌入式系統應用不再是過去單一的單片機應用模式,而是越來越多樣化,嵌入式系統實現的最高形式是片上系統SoC,而SoC的核心技術是重用和組合IP核構件。從單片機應用設計到片上系統設計及其中間的一系列的變化,從底層大包大攬的設計到利用FPGA和IP模塊進行功能組合PSoC/SOPC設計。
(2)技術門檻提高,需要學習全新的RTOS技術。
(3)選擇合適的開發工具,熟悉新的開發環境。目前從8位升級到32位的一個最大障礙就是開發工具的投入。32位開發工具要比8位開發工具復雜得多,使用的技術門檻要高得多,同時其投資也要高得多。
(4)熟悉硬件/軟件協同設計和驗證技術、設計管理技術。軟/硬件并行設計是嵌入式系統設計的一項關鍵任務。在設計過程中的主要問題,是軟硬件設計的同步與集成。這要求控制一致性與正確性,但隨著技術細節不斷增加,需要消耗大量的時間。目前,業界已經開發Polis、Cosyma及Chinook等多種方法和工具來支持集成式軟硬件的協同設計。目標是提供一種統一的軟硬件開發方法。它支持設計空間探索,并使系統功能可以跨越硬件和軟件平臺復用。團隊開發的最大問題就是設計管理問題。
(5)SoC設計所面臨的巨大的挑戰。SoC已經開始成為新一代應用電子技術的核心,這已成為電子技術的革命標志。過去應用工程師面對的是各種ASIC電路,而現在越來越多所面對的是巨大的IP模塊庫,所有設計工作都是以IP模塊為基礎。SoC設計技術使嵌入式系統設計工程師變成了一個面向應用的電子器件設計工程師。隨著SoC應用的日益普及,在測試程序生成、工程開發、硅片查錯、量產等領域對SoC測試技術提出了越來越高的要求。
[參考文獻]
[1] DSP技術及應用.黃仁欣.2002年出版.
[2] 單片機技術.彭永.2007年12月出版.
[3] 電子感測技術.周南山.2007年出版.
[4] 電子技術基礎.韋鴻.2008年出版.
關鍵詞:嵌入式系統;開發環境
中圖分類號:TP311 文獻標識碼:A文章編號:1009-3044(2011)07-1649-02
A Reseach on Design of Embedded System
FANG Jian-gang
(Computer College, Wuhan University of Technology, Wuhan 473000, China)
Abstract: Embedded technique as a new and great development force's science technique has been concerned by more and more people.The article discusses the feature of embedded system,embedded software and hardware developing process and design methods.
Key words: embedded system; development environment
嵌入式系統已經廣泛的應用到通信、家電、汽車、工業控制等領域,極大的便利了人們的生活。嵌入式系統是指以應用為核心,以計算機技術為基礎,軟硬件可裁剪,對功能、可靠性、成本、體積和功耗嚴格要求的專用計算機系統,,也是為實現對象體系智能化控制的計算機系統。嵌入式系統如圖1。
嵌入式系統由硬件和軟件兩大部分組成,其分類可以從硬件和軟件進行劃分。從硬件方面來講,各式各樣的嵌入式處理器是嵌入式系統硬件中的最核心的部分,而目前世界上具有嵌入式功能特點的處理器已經超過1000種,流行體系結構包括MCU,MPU等30多個系列。很多半導體制造商都大規模生產嵌入式處理器,并且公司自主設計處理器也已經成為了未來嵌入式領域的一大趨勢,從軟件方面劃分,主要可以依據操作系統的類型。目前嵌入式系統的軟件主要有兩大類:實時系統和分時系統。其中實時系統又分為兩類:硬實時系統和軟實時系統。
嵌入式系統應該具備4個特性:1) 執行特定的功能;2) 以微處理器和設備構成核心;3) 需要嚴格的時序與穩定性;4)全自動操作。
1 嵌入式處理器
嵌入式處理器可以分成下面幾類:嵌入式微處理器(Micro Processor Unit,MPU)、嵌入式微控制器(Microcontroller Unit, MCU)、嵌入式DSP處理器(Embedded Digital Signal Processor, EDSP)、嵌入式片上系統(System On Chip),其中采用RISC架構的ARM微處理器以它優越的性能被廣泛的應用與嵌入式開發各個領域。
2 嵌入式操作系統
嵌入式操作系統負責嵌入式系統的全部軟、硬件資源的分配、調度、控制、協調;它必須體現其所在系統的特征,能夠通過加載卸載某些模塊來達到系統所要求的功能。實時操作系統是嵌入式系統目前最主要的組成部分。
Linux是目前最為流行的一款開放源代碼的操作系統,在當今開發嵌入式系統中,70%以上的項目選擇的Linux作為嵌入式系統。另一種常見的嵌入式Linux是UcLinux,它去掉了內存管理單元,該系統直接訪問內存,所有的程序中訪問的地址都是物理地址。嵌入式Linux有以下特點:精簡的內核,性能高、穩定,支持多任務、多種體系結構等。
3 嵌入式系統的設計方法
3.1 嵌入式系統的總體結構
一個嵌入式系統一般都由嵌入式微處理器系統和被控制對象組成,其中微處理器系統是整個系統的核心,由硬件層、中間層、軟件層和功能層組成。硬件層是嵌入式微處理器、電路和外設,軟件層主要是操作系統,功能層是基于操作系統開發的應用程序組成,用來完成對被控對象的控制功能。中間層是將系統軟件與底層硬件部分隔離,使系統的底層設備驅動程序與硬件無關。
3.2 嵌入式系統的開發特點和流程
開發特點:1) 采用宿主機|目標機的方式。2) 生成的代碼需要固態化存儲。3) 軟件代碼具有高質量、高可靠性。
開發流程一般由5個階段構成:需求分析、體系結構設計、硬件|軟件設計、系統集成和代碼固化。各個階段之間往往要求不斷地反復和修改,直至完成最終設計目標。
3.3 嵌入式系統調試
在嵌入式系統中系統調試是非常困難的,不同于傳統軟件的調試,因為開發程序平臺和目標平臺是分開的。一般來說,大部分的工作是在RAM中進行的,只有當程序完成并能運行后才切換到ROM上。調試方法有多種,可分為模擬器方式、在線仿真器方式、在線調試器方式、監控器方式。
4 嵌入式Linux應用程序開發
4.1 開發環境的建立
進行項目開發前,首先要搭建一套基于Linux操作系統的應用開發環境,一般由目標機和宿主機所構成。目標板用于運行操作系統和系統應用軟件,而目標板所用到的操作系統的內核編譯、應用程序的開發和調試則需要通過宿主機來完成。雙方之間通過關鍵接口如串口、以太網口或USB口建立連接關系。個人進行嵌入式開發可以在自己的PC上安裝一套Linux,使用系統中的工具來編譯、調試。多人開發的最好建立個Linux服務器,使用服務器的Linux系統的gcc編譯生成目標代碼,通過ftp傳到每個開發人員的PC,然后通過串口或網絡下載開發板上。開發人員也可以在Windows下安裝模擬Linux環境的軟件(如Cygwin、虛擬機等)來開發。
交叉編譯環境是一個由編譯器、連接器和解釋器組成的綜合開發環境。交叉編譯工具主要包括針對目標系統的編譯器gcc、目標系統的二進制工具binutils、目標系統的標準c庫glibc、gdb代碼調試器和目標系統的Linux內核頭文件。
4.2 引導程序
一個嵌入式軟件系統通??梢苑譃橐龑С绦駼ootLoader、操作系統內核、文件系統和用戶程序4個層次。
BootLoader和PC機中的BIOS很相似,整個系統的加載啟動任務完全由它來完成。BootLoader是在操作系統內核或用戶應用程序運行之前運行的一段小程序,可以初始化硬件設備,建立內存的映射圖,從而將系統的軟硬件環境帶來一個合適的狀態,為最終調用內核和應用程序準備好正確的環境。大多數BootLoader都包含兩種不同的操作模式:啟動加載模式和下載模式。
BootLoader的啟動過程大多數分兩個階段,第一階段主要包含依賴于CPU的體系結構硬件的初始化代碼,通常是用匯編語言實現的,這一階段任務是硬件設備初始化,為加載BootLoader的階段2準備RAM空間,拷貝BootLoader階段2的代碼到RAM中,設置好堆棧,跳轉到階段2的C程序入口。階段2通常是用C語言來實現,這階段任務是初始化本階段要使用的硬件設備,檢測系統的內存映射,將內核映像和跟文件系統映射從FLASH上讀到RAM空間中,為內核設置參數,調用內核。
4.3 Linux操作系統的移植
Linux系統實際上由兩個比較獨立的部分組成,即內核部分和系統部分。Linux系統的移植分為內核移植和系統移植,內核可以視為由5個功能部分組成:進程管理、內存管理、設備管理、虛擬文件系統、網絡。由于Linux內核良好的分層結構將硬件相關的代碼獨立出來,在做系統移植時,只需要改動進程管理、內存管理和設備管理中被獨立出來的那部分與硬件相關的代碼,開發者要將自己開發的代碼加到Linux內核中,需要確定代碼放入到內核的位置,了解Linux的內核配置系統,把開發功能增加到Linux的配置選項中,使用戶能夠選擇此功能。
4.4 應用程序的移植和調試
在開發環境和操作系統建立后,就可以開始應用程序的開發了,應用程序的開發一般先在宿主機上調試完成,然后下載到目標板,宿主機和目標板必須建立可靠的連接,連接主要方式是串口連接、網絡連接和JTAG口連接。
Linux中可以使用應用程序資源非常豐富,可將現成的程序移植到嵌入式系統中,可以極大加快開發流程,提高開發效率。
調試應用程序:Linux包含一個gun調試程序gdb,它是一個用來調試C和C++程序的調試器。通過gdb還可以在程序運行時觀察內部結構和內存的使用情況。
5 嵌入式Linux驅動程序開發
由于嵌入式設備硬件種類豐富,對于Linux系統的開發,很大工作量是為各種設備編寫驅動程序。操作系統一般提供設備驅動程序來完成對特定硬件的控制,以建立應用程序和設備之間的抽象接口。設備驅動程序實際是處理和操作硬件控制器的軟件,從本質上講是內核中具有最高特權硬件的、駐留內存的、可共享的底層硬件處理例程。驅動程序是內核的一部分,屏蔽了硬件的細節,Linux操作系統將所有的設備全部看成文件,都納入文件系統的范疇,并通過文件的操作界面進行操作。
5.1 驅動程序的開發過程
實現一個嵌入式Linux設備驅動的流程:
1) 查看原理圖,理解設備工作原理。2) 定義設備號。3) 實現初始化函數,在驅動程序中實現驅動的注冊和卸載。4) 設計所要實現的文件操作。5) 實現所要的文件操作調用。6) 實現中斷服務,并用request-irq向內核注冊。7) 編譯該驅動程序到內核中,或者用insmod命令加載模塊。8) 測試該設備,編寫應用程序,對驅動程序進行調試。
5.2 模塊化驅動程序
當談到軟件時,我們通常稱執行態為內核空間和用戶空間,模塊是在內核空間中運行的,而應用程序則是在用戶空間中運行。
Linux通過系統調用和硬件中斷完成從用戶空間到系統空間的控制轉換。模塊的作用就是擴展內核的功能,是運行在內核空間的模塊化的代碼,模塊的某些函數作為系統調用執行,而某些函數負責中斷。內核模塊的一部分保存在Kernel中,另一部分在Modules包中,模塊就像一個插件,內核提供一個插槽,在需要時,插入內核中使用,不需要時從內核拔出,這一切都由一個稱作Kernel的守護進程自動處理。內核模塊的這種動態加載具有以下優點:將內核映像的尺寸保持在最小,并具有最大的靈活性。這便于檢驗新的內核代碼,而不需要重新編譯內核并重新引導。
6 總結
本文對嵌入式系統設計的進行了深入淺出的探討,分析了嵌入式系統的組成和特點,描述了嵌入式系統開發流程以及嵌入式Linux下驅動程序開發特點。
參考文獻:
[1] 馬忠梅,李善平,葉楠.ARM&Linux嵌入式教程[M].北京:北京航天航空出版社,2004.
[2] 孫天澤,袁文菊,張海峰.嵌入式設計及liunx驅動開發指南―基于ARM9處理器[M].北京:電子工業出版社,2005.
關鍵詞:UML;嵌入式系統;OOD建模;雙向工程
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)34-9742-02
The Design on UML Embedded Systems
YU Hai-wen
(College of Information Engineering Nanchang University(Pre-Lake Campus), Nanchang 33000, China)
Abstract: UML is the the most popular standard modeling language, embedded systems are professional computer system on the centre of application and the base of computer technology, embedded systems are the integrity of software and hardware; The design's quality of embedded systems is the key of success about digital products. The paper discuss the important conception of UML,and how to use the technology of UML OOD in the design of embedded systems, then show us the steps based on the example of microwave light.
Key words: UML; embedded systems; OOD modeling; two-way engineering
近年來,數字家電、汽車電子、MP3、Smart Phone等躍居電腦產業的主流地位,數字整合的需求日益增長,嵌入式軟件(Embedded Software)系統愈來愈復雜,涉及到的接口越來越多,這種軟、硬件結合的協同設計(Hardware/Software Co-design)需要不同技術背景的人共同開發,如何使這些具有不同技術背景和專長的人聯合開發、協同設計?UML可以解決這個問題。統一建模語言UML(Unified Modeling Language)采用一種簡單而直觀的圖形化方式描述系統設計中的各個問題和細節。不同技術背景的設計師只需懂得UML 符號就可以與對方交流、共同設計。
本文將重點討論如何在嵌入式系統設計中使用 UML 技術,并結合實例“微波爐小燈”演示采用 UML 的嵌入式系統設計過程。
1 UML OOD建模
1.1 UML基本概念介紹
1.1.1 UML事物
UML中事物是實體抽象化的最終結果,是模型中的基本成員,UML中包含結構事物、行為事物、分組事物和注釋事物。
1.1.2 UML建模圖
圖是事物集合的分類,UML中包含多種圖:1)類圖(Class Diagram);2)對象圖(Object Diagram);3)包圖(Package Diagram);4)組件圖(Compoment Diagram,也稱構件圖);5)部署圖(Deployment Diagram);6)用例圖(Usecase Diagram);7)時序圖(Sequence Diagram);8)協作圖(Collaboration Diagram);9)狀態圖(Statechart Diagram);10)活動圖(Activity Diagram)。
由于篇幅原因,本文將結合一個需求非常簡單的“微波爐小燈”的實例,給出幾個重要的圖。本文介紹的圖采用業界使用最廣泛的UML建模工具Rational Rose。Rational Rose為團隊開發和規范的開發過程管理提供了良好的支持。
1.2 UML OOD建模
從應用的角度上來講,面向對象的系統設計一般需要完成如下工作:
1)描述需求;2)根據需求建立系統的靜態模型;3)建立系統的動態模型:即描述系統的行為。
1.2.1 描述需求
“微波爐小燈”的實例需求很簡單,即微波爐里有個小燈,微波爐門打開時,它就亮起來,一旦關上門,就熄掉了。本文將根據此需求說明,采用UML設計一個控制程序來感應微波爐對象的狀態變化,并且觸發小燈對象的狀態變化。
1.2.2 建立系統的靜態模型
用例圖(Use Case Diagram):UML的Use Case圖1描述User對整體系統的功能需求,本例中,User會有兩項動作――“開微波爐”與“關微波爐”,而且期待開微波爐時會亮小燈,關微波爐時小燈會自動熄掉。
類圖(Class Diagram):如圖2,類是OOD中一個重要概念。軟件組件的模塊通稱為組件的類(Class),OOD設計理念是程序指令寫在類里,其所檢驗測試的對象都是類,等到電腦執行時才由電腦在內存中定義實體組件(對象)。
1.2.3 建立系統的動態模型
建立系統的動態模型實質就是描述系統的行為。
時序圖(Sequence Diagram):圖3這個時序圖反映了開微波爐過程中觸發小燈亮的詳細執行過程。
狀態轉換圖4(Statechart Diagram):對對象行為做詳細的描述。就小燈而言,消息的傳達是個事件(Event),這事件令小燈改變狀態(亮或熄)。
2 雙向工程
2.1 正向工程
Rational Rose中可實現正向(為模型產生相應的代碼,即程序框架)、逆向(從用戶原來的軟件系統導出該系統的模型)和雙向工程(實現模型和代碼之間的循環工程),從而保證模型與代碼的高度一致,這個功能意味著降低了開發人員編寫程序的復雜度和工作量。
Rational Rose支持C++、Visual C++、Java、Smalltalk、Ada、Visual Basic、PowerBuilder等語言和開發工具,并能為CORBA 應用生成接口定義語言(IDL),為數據庫應用生成數據庫描述語言(DDL)等。Rational Rose默認支持的語言是Java。
本例中,在完成了“微波爐小燈”類圖制作后,選擇菜單“Tools” “Java/J2EE”“generate code”即可生成Java代碼,當原建模文件更新時,代碼會同步更新。
2.2 逆向工程
前面所述正向工程雖然只是得到了代碼框架,實現功能部分的代碼仍需開發人員輸入。隨著軟件功能的實現及新的用戶需求的加入,原建模文件在需要更新時,可不需要重新畫圖,只需進行逆向工程操作即可。本例中,在完成了“微波爐小燈”代碼后,選擇菜單“Tools”“Java/J2EE”“reverse engineer”即可生成新的建模文件。
3 小結
在軟、硬件設計領域中,采用UML進行軟件組件設計及其架構(Architecture)規劃技術逐漸成為業界關注的焦點。根據本文及“微波爐小燈”實例,顯然從UML設計圖到Java(C及C++)代碼的過程很流暢。
參考文獻:
[1] 徐寶文. UML與軟件建模[M]. 北京:清華大學出版社,2006.
關鍵詞:ARM 嵌入式系統
中圖分類號:TP368.1 文獻標識碼:A 文章編號:1007-9416(2012)12-0104-01
1、序言
本系統是設計一款基于ARM的嵌入式開發平臺,該嵌入式開發平臺是基于AT91SAM9263(基于ARM926EJ-S芯核)的嵌入式系統,可以在此系統上運行嵌入式操作系統,并在上運行嵌入式數據庫、人機窗口等應用程序,此系統包括硬件和軟件兩部分,本文主要介紹硬件部分。
2、系統硬件設計
本系統硬件由核心板和母板組成,核心板將系統擴展可能用到的總線都引出來,與母板之間通過針形接插件連接,為以后產品開發提供了穩定、經濟而又方便的平臺,此種設計的好處,其一把高速和低速分開,降低了硬件之間的干擾,提高了穩定性。其二是當系統需要擴展某些特殊接口時,則只需要對母板進行修改,縮短了開發周期。
其中核心板設計這部分是任何一個ARM系統要正常運行所必備的電路,因此稱為核心板,這些基礎電路,包括存貯程序用的Flash存貯器,運行程序和緩沖數據所必須的SDRAM、復位模塊、時鐘模塊、JTAG接口等。這部分電路集中在較小空間里,因此相對比較密集,而且這部分的信號是超高速信號,且電路的設計要求比較高,所以核心板采用購買成熟的核心板。
系統母板設計了大部分的電路,因為模板上的信號都是低速信號,所以從成本角度考慮,母板采用二層電路板設計,其主要電路包括了電源部分、USB接口部分、串口及10/100M以太網接口、LCD接口、CAN總線以及底板與核心板之間通過針形接插件相連的接口等,其結構如圖1所示。
下面將分模塊介紹電路原理。
2.1 串行接口電路設計
系統設計了一個RS-232、RS-485接口,方便與其他設備通信。具體的電路采用MAX3232作為電平轉換芯片,它本身提供兩組驅動器和接收器,并接有數字隔離器ADuM1201,此芯片提供了兩個信道的通道,具體電路如圖2。
系統的RS-485串行接口,是由ADM2483來實現,ADM2483本身是帶有隔離的高速RS-485轉換器,不需要其它額外的電路。
2.2 以太網接口設計
系統選用DM9161作為以太網的接口芯片,因為系統工作在100BASE-TX模式下,所以選擇RMII作為DM9161與AT91SAM9263的接口模式,具體電路如圖3所示。
2.3 CAN接口電路設計
本系統的CAN總線接口的實現,是通過外接CAN收發器來實現的,系統選用的是MCP2551作為系統的收發器,其特點是有差分發射和接收能力,自動檢測TXD輸入端接地錯誤及較強的抗噪聲特性。
3、結語
本系統設計了基于ARM系統的嵌入式硬件平臺,在此之上可以提供各種實時操作系統,從而構成一個完整的平臺,其硬件部分電路已經進行了信號完整性分析具有一定的可靠性。
參考文獻
[1]田澤.嵌入式系統開發與應用[M].北京:北京航空航天大學出版社,2005.
為解決公交車的高效便捷清洗問題,基于青島理工大學韓旭東教授的團隊設計的一款“垂直滾筒式公交清洗小車”,利用AT89C51單片機配合其他元器件,設計了相關的嵌入式系統,包括超聲波測距系統和手動/自動雙模平臺升降控制系統,完善了原產品的設計。采用KeilC51軟件編寫了相應的控制程序,使用Proteus軟件繪制了電路原理圖,并進行了仿真模擬。
關鍵詞:
公交清洗小車;嵌入式系統;超聲波測距;平臺升降控制
0引言
為解決公交車的高效便捷清洗問題,青島理工大學韓旭東教授的團隊設計了一款“垂直滾筒式公交清洗小車”[1]。但在該設計中,僅對機械結構與工作原理做了介紹,缺少相關的控制電路與控制程序的設計,給清洗小車的使用帶來了極大的不便。本文在原產品的基礎上,針對小車與公交車之間距離的控制不準確的問題,設計了超聲波測距系統;針對平臺升降控制不方便的問題,設計了手動/自動雙模平臺升降控制系統。有效地提高了該產品的實用性,完善了該產品的設計。
1超聲波測距系統
1.1設計目的
清洗小車由人力推動并控制方向,但由于路面不平,人力控制精度有限,會使小車與公交車車體間的距離發生改變,距離過近會使滾筒擠壓車體表面,阻礙滾筒旋轉;距離過遠,則會使滾筒毛刷與車體表面間間隙過大,影響清洗效果。需要一套測距系統使小車與公交車車體間的距離始終保持在一個合理范圍之內。
1.2測距方式的選擇
超聲波測距是利用機械波反射來測量距離,適用于短距離測距,原理簡單,成本低,遠距離測量精度較低。公交清洗小車的使用環境比較復雜,對測距系統的精度要求不高,測量的距離在1~2m,且要求結構簡單、成本低廉、性能穩定。根據需要和集中測距方式的特點,本文選擇超聲波測距方式。
1.3超聲波測距原理
超聲波在均勻介質中的傳輸速度為一恒定值,由發生器發射超聲波,在遇到測量目標后反射回來,由接收器接收并記錄由發射到接收經歷的時間,便可以計算出發生器與測量目標之間的距離[2]。公式如下:L=12C•Δt。式中:L為測量距離;C為超聲波在當前介質中的傳輸速度(空氣中常溫下速度為340m/s);Δt為從發射到接收經歷的時間。
1.4設計內容
本文利用AT89C51單片機、HC-SR04超聲波測距模塊、LED燈組成了一個超聲波測距警報系統。當距離過近時,指示距離過近的紅燈點亮;距離適中時,指示距離適中的綠燈點亮;當距離過遠時,指示距離過遠的紅燈點亮。工作人員可以根據燈光指示調整小車位置,使之與車體表面間的距離保持在一個合理范圍。1.4.1HC-SR04超聲波測距模塊工作原理本文所采用的HC-SR04超聲波測距模塊,具有成本低、體積小、精度高、使用簡單方便等優點,其基本工作原理為:1)采用I/O口TRIG觸發測距,提供至少10μs的高電平信號;2)模塊自動發送8個40kHz的方波,自動檢測是否有信號返回;3)有信號返回,通過I/O口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間[3]。1.4.2程序控制過程利用AT89C51單片機自帶的定時計數器資源,通過I/O口給超聲波模塊一個發射信號并開始計時,當收到超聲波模塊的反饋信號時,結束計時并計算距離。
2手動/自動雙模平臺升降控制系統
2.1設計目的
現行大多數公交車的高度在3m左右,為能夠確保清洗整個車體表面,原產品采用雙絲杠旋轉驅動平臺升降的設計,并利用直流電動機產生動力。為方便用戶使用,能夠快捷高效操作平臺升降,提高清洗效率,本文設計了一套手動/自動雙模平臺升降控制系統。
2.2設計內容
根據計算,清洗平臺需調整2次高度才可將車體表面清洗完畢,為了方便工作人員操作,本文設計了手動/自動雙??刂葡到y。該系統采用AT89C51單片機,配合L289直流電動機驅動模塊,通過控制電動機的正反轉實現平臺的升降,設計原理圖見圖4[5]。操作過程為:啟動系統后,在自動模式下,按UP鍵,平臺會上升一個固定高度;按DOWN鍵,平臺會下降一個固定高度。該高度值是為實現最高清洗效率,以3m高的車身為標準,經優化計算得出的最適高度。因為公交車的型號差異,車身高度也各不相同,所以為滿足實際使用要求,我們又設計了手動控制模式。在手動模式下,按住UP鍵,平臺會上升,松開立即停止;按住DOWN鍵,平臺會下降,松開立即停止。為防止工作人員誤操作,本文增加了按鍵防抖動延遲,防止工作人員誤觸按鍵;如果UP和DOWN鍵同時按下,則電動機停轉,直至其中一個按鍵松開。
3結語
關鍵詞:黑盒測試;嵌入式系統;程序流程圖;插樁處理
引言
黑盒測試是從用戶觀點出發的測試,依據需求功能說明書中的預期用途、定時和性能的要求,推斷測試結果。黑盒測試根據測試階段可分為單元測試、集成測試、確認測試、系統測試四個階段[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.
關鍵詞:嵌入式芯片;FPGA;人機交互界面
嵌入式芯片是當前一些主流數碼設備的核心部件,也是嵌入式系統的硬件基礎。嵌入式系統是以應用為中心,軟硬件可裁減的,適應應用系統對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統。簡單地說,嵌入式系統集系統的應用軟件與硬件于一體,類似于PC中BIOS的工作方式,具有軟件代碼小、高度自動化、響應速度快等特點,特別適合于要求實時和多任務的體系。
嵌入式芯片主要包括FPGA芯片(Field Programmable Gate Array 現場可編程門陣列),MCS-51系列芯片等等。本文主要介紹面向嵌入式芯片的指令測試系統。
一、系統架構
測試系統的主體是面向嵌入式芯片的人機交互界面。它為用戶提供了檢測芯片指令集的各種便捷操作。
為了更好的實現測試體系的各項功能,筆者在編寫程序時,將測試系統人為的分成了幾個模塊。這些模塊之間有著非常緊密的聯系,每一步的實現都是下一步成功運行的基礎。
測試體系的主體架構主要分為五個部分:
(一)源代碼的輸入與保存
用戶可以通過編輯框輸入代碼,實現程序的編寫。此外系統還為用戶提供了編輯框的清空操作,并可以自動將編寫的代碼保存為.asm文件。
(二)源文件的讀取與顯示
用戶可以將已經編寫好的源文件讀入系統,并對其進行編輯。
(三)交叉編譯
系統對讀入的源文件進行編譯,期間用戶可以自動配編譯工具,編譯完成后系統將自動報錯。
(四)串口的輸入輸出
系統可以將用戶指定的二進制文件送到串行口中,并發送至連接到PC端的8051芯片中。發送成功后,系統將顯示已經發送的信息。
系統可以自動接收來自串口的消息,并顯示在相應的列表框中。
(五)程序運行日志
系統在用戶運行了測試體系之后,即程序的出口處,自動生成程序的運行日志,它為用戶顯示了程序運行的各項參數,例如程序運行時間,串口狀態等。
此外系統為了使用戶可以更加方便自如的使用本測試框架,在每一部分的實現過程中,都充分考慮了軟件的靈活性,盡可能的讓用戶自主配置測試體系的各項參數。
二、系統設計
(一)整體性
作為嵌入式測試系統的人機交互界面,在其設計的過程中必然要形成一套完備的軟件體系,即保證程序運行的整體性。這關系到整個測試系統的完整性和穩定性。
源代碼輸入和源文件讀取部分主要是將指令集測試代碼導入到系統中。交叉編譯部分的工作是對導入系統的測試代碼進行編譯處理,以便用戶對測試代碼進行調試。串口檢測部分是將編譯通過的測試程序所生成的二進制文件以8位字符串的形式送入串口,經過開發板的運行以后,將結果通過串口輸出到指定的LCD顯示屏或PC上,從而驗證測試程序的可執行性。程序運行日志是對整個程序運行的效率和穩定性向用戶提供的反饋信息。
(二)靈活性
在保證程序運行的整體性的同時,為了使測試體系的使用更加的方便,提高測試體系進一步完善的空間,就必須保證各功能模塊的靈活性。在源代碼輸入和源文件讀取的部分,系統默認的輸入程序是匯編程序,但用戶也可以輸入C程序,JAVA程序,XML程序等多種程序語言。同時,在交叉編譯部分也可以通過調用不同的編譯器和鏈接器對這些程序編譯調試,這無形中將單一的面向嵌入式芯片的匯編編譯器擴展為集C語言編譯器,JAVA語言編譯器和XML語言編譯器等多種編譯器于一體的集成編譯環境,從而實現強大的編譯功能。串口檢測部分為用戶提供串口參數的配置框,并支持串口信息的發送與接收,從而使測試體系具有了類似超級終端的串口通信功能,這也為用戶對串口操作提供了極大的方便。
三、結束語
作為當前主流的數碼產品的關鍵部件,嵌入式芯片必然會在未來的IT市場上占有越來越重要的地位。本文所探討的嵌入式芯片測試系統正是基于這樣的考量,不但從源代碼的輸入與保存,源文件的讀取與顯示,交叉編譯,串口的輸入輸出和程序運行日志這五個模塊來構建測試系統,而且還從程序設計的整體性和靈活性兩個方面,對該系統進行了評測。未來的嵌入式系統和普通的計算機系統在微型化和小型化方面將會趨于一致,而測試系統也可以進一步擴展為對整個計算機系統進行相應的檢測。希望測試系統能為嵌入式芯片的發展做出一定的貢獻。
參考文獻:
[1]胡振華.VHDL與FPGA設計[M].北京:中國鐵道出版社,2003.
[2]陳榮,陳華.VHDL芯片設計[M].北京:機械工業出版社,2006.
[3]張大波,吳迪,郝軍.嵌入式系統原理設計與應用[M].北京:機械工業出版社,2005.