時間:2023-06-21 09:19:01
導言:作為寫作愛好者,不可錯過為您精心挑選的10篇嵌入式設計系統,它們將為您的寫作提供全新的視角,我們衷心期待您的閱讀,并希望這些內容能為您提供靈感和參考。
中圖分類號: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 引導程序
一個嵌入式軟件系統通常可以分為引導程序BootLoader、操作系統內核、文件系統和用戶程序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.
嵌入式芯片是當前一些主流數碼設備的核心部件,也是嵌入式系統的硬件基礎。嵌入式系統是以應用為中心,軟硬件可裁減的,適應應用系統對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統。簡單地說,嵌入式系統集系統的應用軟件與硬件于一體,類似于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.
中圖分類號:TP274;TP3680
引 言
經過近幾年的快速發展,嵌入式系統(Embedded System)已經成為電子信息產業中最具增長力的一個分支。隨著手機、PDA,GPS、機頂盒等新興產品的大量應用,嵌入式系統的市場正在以每年30%的速度遞增(IDC預測),嵌入式系統的設計也成為軟硬件工程師越來越關心的話題。
在嵌入式系統設計中,低功耗設計(Low Power Design)是許多設計人員必須面對的問題。其原因在于嵌入式系統被廣泛應用于便攜式和移動性較強的產品中,而這些產品不是一直都有充足的電源供應,往往是靠電池來供電的;而且大多數嵌入式設備都有體積和質量的約束。另外,系統部件產生的熱量和功耗成比例,為解決散熱問題而采取的冷卻措施進一步增加了系統的功耗。為了得到最好的結果,降低系統的功耗具有下面的優點:
(1) 電池驅動的需要。在強調綠色環保時期,許多電子產品都采用電池供電。對于電池供電系統,延長電池壽命,降低用戶更換電池的周期,提高系統性能與降低系統開銷,甚至能起到保護環境的作用。
(2) 安全的需要。在現場總線領域,本安問題是┮桓霆重要話題。例如FF的本安設備,理論上每個網段可以容納32個設備,而實際應用中考慮到目前的功耗水平,每個網段安裝10個比較合適。因此降低系統功耗是實現本安要求的一個重要途徑。
[JP2](3) 解決電磁干擾。系統功耗越低,電磁輻射能量越小,對其他設備造成的干擾也越小。如果所有的電子產品都能設計成低功耗,那么電磁兼容性設計會變得容易。[JP]
(4) 節能的需要。特別是對電池供電系統,功耗與電壓的平方成正比即:P=V2fC+P┆static,б虼私諛芨為重要。
1 功耗產生的原因
[BT3]1.1 集成電路的功耗
目前的集成電路工藝主要有TTL和CMOS兩大類,無論哪種工藝,只要電路中有電流通過,就會產生功耗。通常,集成電路的功耗主要有4個:
(1) 開關功耗。對電路中的電容充放電而形成,其表達式為:
(2) 靜態功耗和動態功耗。當電路的狀態沒有進行翻轉(保持高電平或低電平)時,電路的功耗屬于靜態功耗,其大小等于電路電壓與流過電流的乘積;動態功耗是電路翻轉時產生的功耗,由于電路翻轉時存在跳變沿,在電路翻轉瞬間,電流比較大,存在較大的動態功耗。目前大多數電路都采用CMOS工藝,靜態功耗很小,可以忽略。起主要作用的是動態功耗,因此從降低動態功耗入手來降低功耗。
(3) 短路功耗。因開關時由電源到地形成的通路造成的,其表達式為:
(4) 漏電功耗。由亞閾值電流和反向偏壓電流造成。目前大多數電路都采用CMOS工藝,故漏電功耗很小,可以忽略。
1.2 電阻的功耗和有源器件的功耗
通常為負載器件和寄生元件產生的功耗。有源開關器件在狀態轉換時,電流和電壓比較大,將引起功率消耗。另外, CMOS電路中最大的功耗來自于內部和外部的電容充放電產生的功耗。
2 硬件低功耗設計
[BT3]2.1 選擇低功耗的器件
選擇低功耗的電子器件可以從根本上降低整個硬件系統的功耗。目前的半導體工藝主要有TTL工藝和CMOS工藝,CMOS工藝具有很低的功耗,在電路設計上盡量選用,使用CMOS系列電路時,其不用的輸入端不要懸空,因為懸空的輸入端可能存在感應信號,它將造成高低電平的轉換。轉換器件的功耗很大,盡量采用輸出為高的原則。
嵌入式處理器是嵌入式系統的硬件核心,消耗大量的功率,因此設計時選用低功耗的處理器;另外,選擇低功耗的通信收發器(對于通信應用系統)、低功耗的訪存部件、低功耗的電路,目前許多通信收發器都設計成節省功耗方式,這樣的器件優先采用。
2.2 選用低功耗的電路形式
完成同樣的功能,電路的實現形式有多種。例如,可以利用分立元件、小規模集成電路,大規模集成電路甚至單片實現。通常,使用的元器件數量越少,系統的功耗越低。因此,盡量使用集成度高的器件,以減少電路中使用元件的個數,減少整機的功耗。
2.3 單電源、低電壓供電
一些模擬電路如運算放大器等,供電方式有正負電源和單電源兩種。雙電源供電可以提供對地輸出的信號。高電源電壓的優點是可以提供大的動態范圍,缺點是功耗大。例如,低功耗集成運算放大器LM324,單電源電壓工作范圍為5~30 V。當電源電壓為15 V時,功耗約為220 mW;當電源電壓為10 V時,功耗約為90 mW;當電源電壓為5 V時,功耗約為15 mW。可見,低電壓供電對降低器件功耗的作用十分明顯。因此,處理小信號的電路可以降低供電電壓。
2.4 分區/分時供電技術
一個嵌入式系統的所有組成部分并非時刻在工作,基于此,可采用分時/分區的供電技術。原理是利用“開關”控制電源供電單元,在某一部分電路處于休眠狀態時,關閉其供電電源,僅保留工作部分的電源。
2.5 I/O引腳供電
嵌入式處理器的輸出引腳在輸出高電平時,可以提供約20 mA的電流,該引腳可以直接作為某些電路的供電電源使用,如圖2所示。處理器的引腳輸出高電平時,外部器件工作;輸出低電平時,外部器件停止工作。需要注意,該電路需滿足下列要求:外部器件的功耗較低,低于處理器I/O引腳的高電平輸出電流;外部器件的供電電壓范圍較寬。
2.6 電源管理單元設計
處理器全速工作時,功耗最大;待機狀態時,功耗比較小。常見的待機方式有兩種:空閑方式(Idle)和掉電方式(Shut Down)。其中,Idle方式可以通過中斷的發生退出,中斷可以由外部事件供給。掉電方式指的是處理器停止,連中斷也不響應,因此需要進入復位才能退出掉電方式。
為了降低系統的功耗,一旦CPU處于“空轉”,可以使之進入Idle狀態,降低功耗;期間如果發生了外部事件,可以通過事件產生中斷信號,使CPU進入運行狀態。對于Shut Down狀態,只能用復位信號喚醒CPU。
2.7 智能電源設計
既要保證系統具有良好的性能,又能兼顧功耗問題,一個最好的辦法是采用智能電源。在系統中增加適當的智能預測、檢測,根據需要對系統采取不同的供電方式,以求系統的功耗最低。許多膝上型電腦的電源管理采用智能電源,以筆記本電腦為例,在電源管理方面,Intel公司采取Speed Step技術;AMD公司采取Power Now技術;Transmeta公司采取Long Run技術。雖然這三種技術涉及到的具體內容不同,但基本原理是一致的。以采用Speed Step技術的筆記本電腦為例,系統可以根據不同的使用環境對CPU的運行速度進行合理調整。如果系統使用外接電源,CPU將按照正常的主頻率及電壓運行;當檢測到系統為電池供電時,軟件將自動切換CPU的主頻率及電壓至較低狀態運行。
2.8 降低處理器的時鐘頻率
處理器的功耗與時鐘頻率密切相關。以SAMSUNG S3C2410X (32 b ARM 920T內核)為例[8],它提供了四種工作模式:正常模式、空閑模式、休眠模式、關機模式,各種模式的功耗如表1所示。[HJ1][HJ]
由表1可見,CPU在全速運行的時候比在空閑或者休眠的時候消耗的功率大得多。省電的原則就是讓正常運行模式遠比空閑、休眠模式少占用時間。在類似PDA的設備中,系統在全速運行的時候遠比空閑的時候少,所以可以通過設置,使CPU盡可能工作在空閑狀態,然后通過相應的中斷喚醒 CPU,恢復到正常工作模式,處理響應的事件,然后再進入空閑模式。因此設計系統時,如果處理能力許可,可盡量降低處理器的時鐘頻率。
另外,可以動態改變處理器的時鐘,以降低系統的總功耗。CPU空閑時,降低時鐘頻率;處于工作狀態時,提高時鐘頻率以全速運行處理事務,實現這一技術的方法。通過將I/O引腳設定為輸出高電平,加入電阻R1,將增加時鐘頻率;將I/O引腳輸出低電平,去掉電阻R1,可降低時鐘頻率,以降低功耗。
2.9 降低持續工作電流
在一些系統中,盡量使系統在狀態轉換時消耗電流,在維持工作時期不消耗電流。例如,IC卡水表、煤氣表、靜態電能表等,在打開和關閉開關時給相應的機構上電,開關開和關狀態通過機械機構或磁場機制保持開關的狀態,而不通過電流保持,可以進一步降低電能的消耗。[JP]
3 軟件低功耗設計
3.1 編譯低功耗優化技術
編譯技術降低系統功耗是基于這樣的事實:對于實現同樣的功能,不同的軟件算法,消耗的時間不同,使用的指令不同,因而消耗的功率也不同。對于使用高級語言,由于是面向問題設計的,很難控制低功耗。但是,如果利用匯編語言開發系統(如對于小型的嵌入式系統開發),可以有意識地選擇消耗時間短的指令和設計消耗功率小的算法來降低系統的功耗。
3.2 硬件軟件化與軟件硬件化
通常的硬件電路一定消耗功率,基于此,可以減少系統的硬件電路,把數據處理功能用軟件實現,如許多儀表中用到的對數放大電路、抗干擾電路,測量系統中用軟件濾波代替硬件濾波器等。
需要考慮,軟件處理需要時間,處理器也需要消耗功率,特別是在處理大量數據的時候,需要高性能的處理器,這可能會消耗大量的功率。因此,系統中某一功能用軟件實現,還是用硬件實現,需要綜合計算后進行設計。3.3 采用快速算法
數字信號處理中的運算,采用如FFT和快速卷積等,可以大量節省運算時間,從而減少功耗;在精度允許的情況下,使用簡單函數代替復雜函數作近似,也是減少功耗的一種方法。
3.4 軟件設計采用中斷驅動技術
一、概述
如今,數量眾多的車輛都嵌入了GPS。作為車載模塊,GPS可以相對有效地儲存一些靜態興趣點(staticPointsOfInterest)的位置信息(如家庭,公司和商場信息等等)。然而,GPS還不能獲得更多的信息用來判定一些動態興趣點(dynamicalPointsOfInterest)的位置信息(如動態的車輛信息,路人信息或動態的車位空閑狀態信息)[1]。隨著嵌入式技術的發展,越來越多的感知模塊也被嵌入到車輛當中,用以輔助提升整車的智能化。我們可以將車輛的GPS模塊和攝像模塊進行整合再開發,用以偵測動態的興趣點。更進一步的,借助諸如車載自組網等類似技術,將分散用戶采集的數據快速有效收集至云端處理,進而分析得出實時的空閑車位,事故狀況等詳細信息可以被共享給更多用戶。
二、理論設計
首先,裝備了車載攝像系統的車輛負責采集原始圖像,并搜尋最佳的數據鏈路將圖像數據傳送至路邊基站(RSU:RoadSideUnit)。圖像信息再由RSU轉送至云服務器(CCS:CloudComputingSystem)。根據客戶不同的需求,實時的圖像可以被分類解析出不同的結果,以滿足不同的需求。系統可用于尋找可用的空閑車位。車輛巡弋道路的同時,通過攝像模塊捕捉街景用以搜尋可用的空閑停車位(圖中扇形探索區域),通過GPS模塊采集地理位置等相關信息。這些圖像信息經由RSU被上傳至CCS,云端程序將對圖像進行分析,并據此更新數據庫中可用空閑車位的時間和位置。在客戶端,那些激活車位搜尋功能的車輛可以接收到實時的信息,并由系統引導至可用的停車位。
三、系統實現
為協助客戶搜尋目標車輛和目標人物,描述了數據傳輸和數據分析的過程:車載端完成對圖像的實時采集、地理坐標的標注和圖像的加密壓縮;路邊基站RSU接收車載端的數據,并將這些數據合理上傳至CCS;在CCS中,數據首先需要被解密解壓,而后車牌的識別,人臉的識別等相關算法可以對數據進行處理分析,再由各自動化腳本對處理所得的結果,進行數據比對和數據庫更新的工作。整個車載端模型以RaspberryPi微處理器為中心,擴展以攝像模塊進行圖像采集,GPS模塊地理位置采集,以及電源、網卡等其他模塊。RSU將由兩臺PC進行模擬,多個自動化腳本進行網絡配置、文件管理和流量控制。圖像信息將經由此上傳至CCS。CCS采用AmazonElasticComputeCloud實現,服務器將配置數據庫、網頁服務器和文件管理等諸多系統,同時核心的圖像解析程序,也將由服務器自動調用,并根據處理結果,更新數據庫信息。圖像處理部分,使用C#語言和Emgu庫解析圖像,提取人臉信息,讀取車牌信息。車載端將拍攝的街景經由RSU上傳至云端,云系統將對采集的圖像數據進行分析。之后,系統將解析出的人臉和車牌,與客戶所要搜尋的目標進行比對,反饋一組可能的人或車輛,以及相應的地理位置和時間信息。如果某一目標得到客戶的確認,則根據其GPS信息和時間標簽等數據,系統會將目標出現的軌跡繪制在以GoogleMap為基礎的網頁上。
四、結束語
文中設計了一款新穎的道路監控系統構架,據此完成了實驗室模型,并為模型開發了車牌識別和人臉讀取的應用。通過這些實踐,表明了該理論設計可以支持對動態興趣點的檢測和定位。
參考文獻:
[1]曹沖.國內外車載GPS系統的應用現狀和發展趨勢[J].全球定位系統,2000(01):4-8.
[2]ObstM,HobertL,ReisdorfP.Multi-sensordatafusionforcheckingplausibilityofV2Vcommunicationsbyvision-basedmultiple-objecttracking[C]//VehicularNetworkingConference(VNC),2014IEEE.IEEE,2014:143-150.
[3]PauG,WengJT,GerlaM.Pics-on-wheels:Photosurveillanceinthevehicularcloud[C]//2013InternationalCon-ferenceonComputing,NetworkingandCommunications(ICNC).IEEEComputerSociety,2013:1123-1127.
[4]SharefBT,AlsaqourRA,IsmailM.Vehicularcommu-nicationadhocroutingprotocols:Asurvey[J].JournalofNetwork&ComputerApplications,2014,40(2):363-396.
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1007-9416(2012)05-0151-01
1、嵌入式系統的特點以及實現方法
嵌入式系統的主要特點如下:嵌入式系統的硬件和軟件的緊密結合,具有很強的依賴性之間的軟件和硬件,嵌入式系統的功能和性能通過軟件和硬件來實現。因此,在硬件平臺上的嵌入式軟件系統的測試。在硬件,嵌入式軟件系統測試。這是一個不同的主機平臺上的軟件,只能在電腦平臺的主機平臺軟件系統測試,不需要專門的硬件平臺測試。嵌入式系統的要求非常苛刻的時間。嵌入式系統,實時控制系統,為要求苛刻的實時場合。嵌入式系統的硬件資源有限,存儲容量和速度的嵌入式CPU和應用環境的制約。
軟件測試的方法可以分為黑盒測試和白盒測試兩大類:黑盒測試是一種基于需求的測試,以驗證測試軟件是否滿足軟件的需求。白盒是基于結構的測試,軟件控制流測試包括語句覆蓋,分支覆蓋,等等和數據流測試。覆蓋測試原理是:測試軟件,測試工具的使用靜態分析,以確定代碼中的分支點,并統一編號,分配給每個分支點。計劃執行的歷史信息和路徑,你可以從這份文件中,為了計算的代碼覆蓋率。嵌入式軟件與主機平臺上的軟件有不同的特點,所以從主機平臺軟件測試,測試也明顯不同。
2、嵌入式系統的應用
嵌入式系統為中心,基于計算機技術,利用可定制的功能性,可靠性,成本,體積,功耗嚴格要求,設備專用計算機系統111硬件和軟件。它一般由嵌入式微處理器,硬件設備,嵌入式操作系統和用戶應用程序,控制其他設備,監事或管理由四部分。最典型的嵌入式系統的特點是與人民生活密切相關的,任何一個普通的人可能有各種使用嵌入式微處理器技術的電子產品,MP3,PDA等數字設備,數字家電,智能家電,地理信息系統的車輛。事實上,新的嵌入式設備的數量遠遠超過通用計算機。其硬件系統表現如右:
嵌入式操作系統和通用操作系統有許多功能,如可靠性,可削減,可擴展性,實時等。前三嵌入式應用環境的要求。“實時”,以滿足系統內容的實時性要求。通常在一些嵌入式操作系統,通常被稱為“實時操作系統,但它是操作系統的性能有一個更好的實時能力。在一個特定的嵌入式應用系統中,沒有實時的結論。不同的嵌入式操作系統,可以有不同的實時能力。嵌入式操作系統應符合設計實時任務調度,運行速度快,實時性能的內容嵌入式操作系統的能力,可以更容易地實現實時的應用程序。
3、應用航天業的條件和發展
今天的軟件和硬件技術的發展,嵌入式系統被廣泛用于航空航天,國防,軍工,電子通訊等行業,其中軟件變得越來越復雜。應用嵌入式系統的特點,這些地區往往是高安全性,關鍵任務系統,軟件,小缺陷可能會嚴重威脅生命和國家安全的,巨大的天文財產損失。這使得它保證嵌入式軟件的質量和可靠性變得至關重要。
4、航天業的應用條件
嵌入式系統的任務有一定量的時間限制。據截止時間,實時系統,實時被分為“硬實時時間”和“軟實時”。可以完全滿足硬實時應用的需求,否則,導致發生重大安全事故,甚至造成了生命和生態破壞。
可預見性是一個系統,能夠實時執行任務的時間來判斷,以確定它是否能滿足任務的期限。在航空航天工業實時系統需要嚴格的時間限制,稱為實時系統的可預測性是一個重要的性能要求也至關重要。除了硬件延遲的可預見性,也需要軟件系統的可預測性,包括應用程序的可預測性的響應時間可預測的,也就是說,在有限的時間內完成必要的工作;和操作系統,即實際運行時的開銷時間原語,調度功能應范圍內,以確保應用程序的執行時間為界。
5、與外部環境的相互作用
航天業需要的外部環境是獨一無二的,這樣的外部環境是一個實時系統不可或缺的組成部分。空間計算機子系統控制系統,它必須在規定時間內作出回應外部請求。外部物理環境經常指責子系統,兩個互動,以形成一個完整的實時系統。為此,該系統需要一個靜態的分析,并保留資源和冗余配置,系統可以工作在最壞的情況下,或避免損失。可靠性已成為航空航天工業的實時系統性能不可缺少的一個重要指標來衡量。
6、結語
隨著嵌入式系統的廣泛使用,其實時性已經吸引了越來越多的關注。實時嵌入式系統是一個綜合性的問題,應考慮在嵌入式系統設計,硬件不僅是軟件的選擇也應注意。在這些領域的嵌入式系統應用的特點,往往是高安全性,關鍵任務系統,軟件,小缺陷可能會嚴重威脅生命和國家安全的一個巨大的天文數字的財產損失。這使得它變得至關重要,以確保嵌入式軟件的質量和可靠性。
參考文獻
[1]謝東,李昌禧.基于LabVIEW的嵌入式軟件黑盒測試系統的研究[J].工業控制計算機,2005年12期.
[2]楊順昆,劉斌,陸民燕.WindowsNT下幾種定時器的實現原理及性能比較[J].測控技術,2002年12期.
[3]崔小樂,劉斌,鐘德明,阮鐮,高小鵬.實時嵌入式軟件仿真測試平臺的體系結構設計[J].測控技術,2003年07期.
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2013)32-7230-02
隨著電子信息技術的發展,計算機在不同領域中得到了廣泛的應用,人們根據不同領域的實際需求,針對性的開發了具有相應功能的軟件,從而提高實際的工作效率,但是在計算機出現的早期,受到其體積和性能上的限制,其應用的范圍很小,隨著晶體管和集成電路的出現,計算機的體積和性能得到了極大的提升,從計算機的發展可以看出,每次技術的更新,都是為了減小其體積,同時提高其性能。計算機的出現是革命性的,由于其能夠自行的處理任務,如果應用在實際的工業生產中,就能夠實現生產的自動化,這也是近些年計算機應用發展的方向,但是通過實際的調查發現,計算機在應用的過程中,雖然經過了多年的發展,出現了筆記本電腦,在體積上得到了極大的控制,但是在工業控制領域中,這樣的體積依然很龐大,在這種背景下,人們發明了單片機這種微型計算機,并在工業控制中得到了廣泛的應用。
1 嵌入式架構簡述
1.1 嵌入式架構的概念
嵌入式架構是隨著計算機的發展,逐漸形成的一門學科,現在很多高校中,都開設了這門課程,為社會培養大量的相關人才,學生在畢業后,能夠掌握到充足的嵌入式架構知識,從而能進行計算機系統的設計,我國受到特殊的歷史因素影響,經濟和科技發展的起步較晚,與西方發達國家相比,存在較大的差距,尤其是在電子信息領域。雖然近年來隨著國家的重視,出臺了很多優惠的政策法規,鼓勵和扶持我國相關產業的發展,經過了多年的發展,現在我國嵌入式架構的研究,已經得到了很大的提高,但是通過實際的調查發現,嵌入式架構使用的單片機等設備,目前還都是國外的公司生產的,我國技術人員在完成系統的開發后,都需要采用國外的設備,由于我國一直受到西方國家的技術封鎖,很多先進的設備都無法進口,在很大程度上影響了我國嵌入式架構的發展。對于嵌入式架構的概念,國際電氣和電子工程師協會給出了具體的解釋,是控制、監視等輔助設備工作的系統,目前對于嵌入式架構的理解,主要基于計算機技術,一般情況下,可以把帶有控制程序的處理器,看成是一個嵌入式架構,在不同的時期,人們對于嵌入式架構概念的理解,也存在一定的差異,但是從根本上來說,都是為了更好的使用嵌入式系統。
1.2 嵌入式架構的特點
與傳統的計算機技術相比,嵌入式架構具有鮮明的特點,首先就是體積更小,在嵌入式架構出現的早期,主要是在計算機的基礎上,進行系統的開發,但是隨著相關技術的發展,嵌入式架構自身有了很大的進步,尤其是單片機等微型計算機的出現,使得其應用的范圍更加廣泛,從某種意義上來說,單片機的出現,就是由于嵌入式架構應用的需要。其次嵌入式架構具有控制的特點,隨著電子信息化的發展,很多機械設備都采用了智能芯片,通過這些芯片的使用,可以寫入特定的控制程序,從而達到相應的控制目的,近幾年軟件技術有了很大的發展,尤其是在人工專家模塊出現后,計算機軟件可以實現一定的智能化,在遇到一些問題時,可以通過檢索以前的經驗,對問題自行進行處理,如果將這個技術應用到嵌入式架構中,就可以實現工業生產的自動化控制。從根本上來說,工業的自動化控制技術,就是在單片機等微型計算機的基礎上發展起來的,而單片機的使用,大多都是在嵌入式架構,通過硬件和軟件的針對性設計,可以最大程度的提高單片機應用的效率。
2 單片機系統設計的現狀
2.1 單片機系統設計的發展
單片機的出現,主要是由于實際應用的需要,傳統的計算機受到體積上的限制,雖然在很多領域中得到了應用,但是在實際的工業生產中,要想對生產過程中的每個環節進行控制,必須將所有的環節通過特定的方式連接起來,然后設置一個中央服務器,通過硬件和軟件等方式,對生產進行實時的控制,只有這樣才能夠最大程度提高生產的效率。由此可以看出,單片機系統的發展,可以分成硬件和軟件兩個部分,而這兩個部分都受到計算機技術的影響,尤其是軟件方面,在初期使用機器語言進行編程時,還沒有單片機的出現,而匯編等低級語言使用,單片機程序的編寫,也采用這些低級語言,隨著計算機軟件技術的發展,逐漸的出現了C語言等高級語言,相應的單片機系統設計,也開始使用這些高級語言,極大的提高了軟件編寫的效率。單片機系統硬件的發展,由于其出現和發展都在西方發達國家,而且由于社會和經濟的體制不同,這些國家對我國一直存在技術上的封鎖,因此我國很難接觸到先進的單片機系統知識,在很大程度上影響了我國單片機技術的發展,目前使用的單片機設備,都是國外公司生產的,而且一些最新的單片機,對我國還存在進口的限制。
2.2 單片機系統設計中存在的問題
單片機從出現開始,到現在已經使用了多年,在應用的過程中,其自身的理論在不斷的完善,通過單片機系統的使用,可以輕松的實現工業生產的自動化,進而提高生產的效率,正是由于單片機系統的這個特點,使得每個企業都希望能夠通過這樣的方式,來提高自身的生產效率,但是在實際應用的過程中,不同公司加工的產品不同,生產設備也存在一定的差異,如果使用同樣的單片機系統,顯然無法最大程度的提高生產效率。因此現在單片機系統的使用,都會根據實際的需求,對單片機系統的功能,進行針對性的設計,但是通過實際的調查發現,目前單片機系統設計中,還存在著一些問題,使得設計的系統不是很完善,在實際使用的過程中,經常會出現一些漏洞,影響產品的加工效率,由于單片機系統設計可以分成軟件和硬件兩個部分,因此對系統設計存在的問題,也可以從這兩個方面進行分析。首先就是硬件性能不合格,在設計完實際的電路后,對各個元器件的性能,都有具體的要求,如果這些器件的性能達不到相應的指標,那么電路顯然就無法正常的運行,其次就是軟件設計的不完善,由于軟件自身的特殊性,無法編寫出完美的程序,程序自身越復雜,存在的漏洞也就越多,如果在程序編寫完成之后,沒有經過科學的測試,那么在應用時,就可能會出現問題。
3 基于嵌入式架構的單片機系統設計分析
3.1 基于嵌入式架構的單片機系統硬件設計
在單片機出現的早期,由于還沒有形成嵌入式架構的概念,因此在實際的系統設計中,而且單片機系統的使用,都是對現有的生產線進行改進,通過在生產設備上增加一些線路,然后用單片機對其進行控制,在這種模式下,硬件設備的選擇,主要是根據環境來進行,對硬件設備的體積要求比較嚴格。隨著硬件設備的發展,現在生產單片機的公司有很多,可以實現同樣功能的元器件有很多,而自動化技術的出現,使得生產線在設計的過程中,會根據控制的需求,進行相應的變化,這種單片機系統使用方式上的轉變,極大的促進了其應用的發展,為了達到更高的控制效率,人們將單片機放到生產線的每個環節中,然后將這些單片機連接到一個服務器上,就能夠實現對生產的全面控制。現在單片機系統設計中,首先進行的就是硬件上的設計,通常情況下,會根據生產的實際情況,對控制的功能進行需求分析,單片機系統硬件的設計,會和生產線的硬件設計同步進行,如果控制系統的硬件出現問題,可以根據需要,對生產線進行一定的修改。
3.2 基于嵌入式架構的單片機系統軟件設計
嵌入式系統與傳統的應用方式相比,最明顯的特點就是多了輔助設備,如以往應用計算機的過程中,都是計算機的單獨使用,人們直接利用計算機來處理一些問題,或者利用計算機來控制某些設備的工作,沒有任何的輔助設備,而嵌入式架構下,需要借助單片機等設備,如一條生產線通常包括多個加工工藝,如果采用計算機的統一控制,就無法實現對每個環節的單獨控制,而利用單片機系統,在每個加工環節中,都嵌入一個單片機,然后將這些單片機連接到一個計算機服務器中,就可以實現局部的控制。而要想完成這個過程,就要通過相應的軟件功能,對于同樣的單片機系統,如果根據實際應用的需要,設計不同的程序,能夠實現不同的控制功能,由此可以看出,軟件設計是單片機系統工作的核心。
4 結束語
作為以計算機為基礎的技術,嵌入式架構的發展,很大程度上受到計算機技術的影響,如在計算機剛出現時,由于其性能比較,甚至還不如現在的電子計算器,因此實際的應用很少,只是在實驗室中進行科研使用,但是人們從計算機的特點能夠看出,隨著技術的進步,將來計算機一定會得到普及應用。在這種背景下,很多專家和學者對計算機進行了研究,通過大量的實踐,極大的推動了計算機的發展,于是計算機越來越多的用來處理實際問題,為了提高控制的效率,人們對程序進行了完善,經過全文的分析可以知道,嵌入式架構和單片機的出現,都是由于實際應用的需要,而單片機在實際應用的過程中,還存在很多問題,如果能夠采用嵌入式架構,那么就能夠極大的提高單片機系統的使用效果。
參考文獻:
[1] 金玉濤,馬軍勇.基于80C52的三相可控整流電路觸發脈沖的實現[J].河南教育學院學報:自然科學版,2007(3):37-39.
[2] 何兵.基于MCS-51單片機的步進電機正反轉控制實現[J].瀘州職業技術學院學報,2008(1):56-59.
熱插拔的概念來源于我們的桌面PC,其一般定義為將設備板卡或模塊等帶電接入或移出正在工作的電腦[1]。嵌入式系統中的熱插拔是指對正在運行的嵌入式電路板,在不關閉電源情況下對某些部件進行插入(連接)或拔出(斷開)操作。下面要談的正是在一個嵌入式單片機系統中對其擴展部件或板卡的硬件熱插拔技術,將根據接口上的信號類型等探討熱插拔的危害產生原因及防止危害發生的一般性措施。本文以下部分將把要插拔的兩塊電路板分別稱為主電路板(正在運行的嵌入式主電路板)和擴展板。
一、熱插拔設計的重要性
對正在工作的電路板進行熱插拔通常都是不被許可的,但在有些時候卻是難于避免的,比如使用者疏忽或特殊功能要求等。對未采取任何保護措施的嵌入式電路板進行熱插拔操作,其將帶來的損害通常是很嚴重的,包括電源電路損壞,單片機IO口燒壞,單片機復位或死機,或者與接口相連的IC出現部分或全部管腳燒壞等。這些故障將導致嵌入式電路板產生永久性損害,或在重新上電之前系統無法再正常工作。因此,在嵌入式系統的擴展接口設計中加入一定的熱插拔保護措施是十分必要的。熱插拔操作對嵌入式電路板的危害通常表現在三方面:過電流沖擊、瞬態過電壓、靜電釋放[1]。進行熱插拔設計的目標應是在不增加太多硬件成本的前提下,使設計出的電路板不因熱插拔操作造成系統復位、死機或對元器件產生永久性損害。
二、電源與地接口的防過電流沖擊熱插拔設計
當把擴展板插入正在工作的嵌入式主電路板中時,擴展板上的各類電容和IC需要瞬間從主電路板的電源處上吸走大量電荷,給電源造成一個短暫的低阻抗路徑,造成一次浪涌電流[1]。此浪涌電流可以把系統電壓拉低到系統重置閾值以下,造成單片機復位,甚至燒毀電源電路。在硬件設計時通常采取如下措施進行應對:
1.在擴展接口的電源網絡上使用大容量電容(可以用并聯方式獲得)減輕擴展板上電過程中對主電路板電源電壓的影響。主電路板電源電路中的電容量最好要比擴展板的蓄能電容量之和稍大。
2.在擴展接口的電源網絡上串入電源專用的磁珠以減少上電瞬間的電流尖峰,并阻斷高頻噪聲信號的干擾。
3.如果浪涌電流特別大并且系統允許復位,為保護主電路板上的電源電路可以考慮在電源入口處加自恢復保險絲讓電源在過流瞬間自動切斷。如果系統對熱插拔時的穩定性要求更高可以使用目前市面上的專用熱插拔控制器LM5069等,這些器件具有功率和電流限制的能力[2]。
在熱插拔操作時為提高設備的熱插拔壽命,熱插拔動作應避免來回抖動,并且兩次熱插拔之間的時間間隔不要太短;如果擴展板的負荷可以先行卸除,最好不要帶負荷進行熱插拔。
三、電源與地接口的防過電壓沖擊熱插拔設計
進行熱插拔操作前不同設備的接口之間可能存在一定的電位差,尤其是使用了隔離電源或共模電感的“浮地”系統。雖然這類電位差是瞬間的且沒有多大的電流能力,但此電位差通常會超出各類IC的最高工作耐壓而損壞IC。如果在熱插拔同時還伴隨著靜電釋放,在接口接觸瞬間產生的過電壓和過電流沖擊會更加厲害,可以瞬間燒毀電路板中脆弱環節上的IC。應對此類危害的唯一辦法是快速鉗位電壓,即在接口附近的電源與地之間以及比較脆弱的信號與地之間使用具有浪涌能量吸收能力和內部散熱能力的壓敏電阻或TVS管之類的浪涌電壓抑制器等保護措施。
四、電源與地接口在結構上的熱插拔設計
現在CMOS器件已經在各種電路上廣泛使用,CMOS器件的一個缺點是容易產生閂鎖效應而燒毀。在熱插拔過程中VCC和GND的突然變化或者芯片I/O口電壓超出VDD-GND的范圍時很容易發生閂鎖效應。如果接口結構設計不合理造成在熱插拔過程中I/O口信號已經連接上而GND或VCC還沒有連接上,這時極易發生閂鎖效應而燒毀芯片。因此,在接口結構設計時必須保證接口在帶電插入過程中要先讓GND和VCC連接上再連接I/O口;反之在帶電拔出過程中則需要先拔出I/O口再斷開VCC和GND。在實際應用時可以采取如下措施:把GND和VCC放在接口兩端、并在接口上多放幾個GND信號,或者把GND和VCC的插針做得比其它信號插針稍微長些等。圖一是按一般熱插拔要求設計的一款主電路板電源與地的接口實例。
五、常見信號接口的熱插拔設計
對嵌入式電路板上單片機的片上外設(on-chip peripheral)類信號口(比如SPI輸出口),通常其耐電壓和電流沖擊能力并不是很強,如果需要把這些信號接口在電路板上擴展出去最好先把這些信號經過外部邏輯門電路處理后(比如兩次反相)再接到擴展接口上。
對耐電壓和電流沖擊能力較強的單片機GPIO信號接口可使用阻容電路進行簡單保護。其中的電阻能起到限流作用,電阻值可根據信號辨識的需求選在幾歐到幾百歐之間;而對地的小濾波電容則能起到濾除瞬間電壓尖峰的作用,電容值可根據信號線上傳遞的信號頻率特性選在幾百pF到幾nF之間。
對比較脆弱而又關鍵的重要信號接口(比如SPI輸入口、并行總線接口等)可以在信號端口與電源和地之間使用雙向二極管對信號電壓進行精準鉗位。這樣可確保此類接口上的電壓不會超出芯片的工作電壓范圍,能起到非常好的保護作用。圖二是一款常見信號接口的熱插拔設計實例(電源和地部分參見圖一)。
嵌入式系統電路的接口熱插拔設計通常是一個反復和復雜的過程。在設計時通常需要通過熱插拔實驗把接口電路中的脆弱環節找出來,然后采取針對性的措施進行應對,要做到既不增加太多硬件成本又能滿足一般的熱插拔需要。熱插拔問題是各類電子設備中都會面臨到的一個問題,本文探討的熱插拔設計技術在電路設計中具有一定的現實意義。
參考文獻
[1]凌有慧,張胡.熱插拔的硬道理[J].微型計算機,2003(23):107-111.
[2]National Semiconductor Corporation.LM5069 Positive High Voltage Hot Swap/Inrush Current Controller with Power Limiting data sheet,2008.
一、硬件的低功耗設計
1、硬件電路器件
程序編寫后實現功能需要硬件電路的參與,因此硬件部分是電路設計的重點,也關系到嵌入式模塊功能是否能夠實現。電路中的電子元器件如果設計不合理或者焊接誤差,會導致使用階段斷連情況發生,目前多用集成技術來解決這些耗能隱患。CMOS技術應用后使硬件電路的連接形式更合理,控制模塊運轉階段的能源損耗量被控制在了標準范圍內,流經電流如果出現異常變化,會調整穩定后再流入到電路中。由于現在絕大部分電路均采用集成電路CMOS工藝技術,這與以前的TTL工藝相比,本身就已經起到了降低電子元器件和整體系統功耗的作用,因此,應該繼續多采用CMOS集成電路工藝技術。另外,由于采用CMOS集成工藝技術,其電路靜態功耗很小(可忽略不計),而動態功耗較大,因為動態功耗是指電路高低電平翻轉時產生的功耗,在電路高低電平翻轉跳變沿期間,電流很大,存在較大功耗,所以,降低硬件電路功耗主要是降低電路動態功耗。
2、低功耗器件的選用
實現低功耗還要對電子器件進行挑選,對比不同類型元器件的節能指標,低功率環境下對器件的損害程度更小,在安全使用年限內也不會發生功率損耗過大的現象。嵌入式技術中硬件部分設計與軟件程序編寫都同等重要,器件選擇時如果無法確定標準,可以采用試驗的方法來幫助計算功率損耗情況,對比階段也更容易進行,在這樣的環境下,嵌入式技術應用才能達到預期的目標。完成同樣的功能,電路的實現形式有多種。例如,盡可能地將嵌入式系統的內部存儲器RAM轉換為外部的閃存FLASH,因為在同樣條件下,讀內部RAM比讀外部FLASH會帶來更大的功耗。也可以利用分立元件、小規模集成電路,大規模集成電路甚至單片實現。通常使用的元器件數量越少,系統的功耗越低。因此,應盡量使用集成度高的器件,以減少電路中使用元件的個數,減少整機的功耗。
3、微處理器的選擇
微處理器能夠起到對治理程序控制的發現不合理現象也要及時采取調控方法,處理器運行階段損耗的功率比較大,也是節能設計期間重點優化的部分。選擇時首先要判斷功能是否能夠達到標準,在此前提下進行后續損耗的對比分析。要有明確的額定功率,這樣在損耗控制時技術應用才更順利,技術應用形成并不是固定的,可以根據實際使用需求對技術方法進行組合應用,將損耗降至最低。僅消耗少部分電能便能夠實現系統的高效運行,功能實現的流程也更合理,是嵌入式設計時首要遵從的標準。并且高效率的處理器都提供有多種時鐘頻率和工作電壓的選擇,以便于最大限度地節約功耗。此外,在進行系統設計時,在工作電壓相差不大和系統處理能力許可的情況下,還應盡可能降低微處理器的時鐘頻率,現以起到節能的作用。以SAMSUNGS3C2410(32位ARM920T內核)為例,它就提供了四種工作模式:正常模式、空閑模式、休眠模式、關機模式。
二、軟件的低功耗設計
1、優化編譯器
控制程序在運行使用過程中,要定期檢驗,觀察控制功能是否高效實現,并對使用中常常出現誤差的部分進行調節控制,編譯器模塊是實現調控功能的部分,在此過程中,會涉及到頻繁的計劃變動,經過多次試驗后最終確定的編譯模式應用后才不會出現誤差。但是,在某些情況下,這樣會影響程序的執行性能。編譯器的有效性以及它所生成的代碼效率,可以與匯編語言代碼相比較得出。事實上,在一個程序中,每一條指令都將激活微處理器中的某些硬件部件,因此,正確選擇指令可以降低處理器的功耗。通過優化編譯器可以進行有效的軟件低功率化,從而生成效率更高的代碼,以降低嵌入式設備的功耗。
2、采用軟件代替硬件電路
軟件與硬件相比較功能更加豐富,也能在工作任務開展階段形成更穩定的控制體系。因此采用軟件來對復雜的電路進行更換,才是更高效合理的,使用功能不受到影響的前提下達到降低功耗的目標,這樣的處理形式符合嵌入式設計標準。一般的硬件電路都存在功耗,所以,可以把具有數據運算處理功能的硬件電路用軟件來實現,例如濾波電路,指數、對數運算電路、抗干擾電路等。但是,任何事情都不是絕對的,部分硬件電路到底能否通過軟件來實現,此外,還要考慮處理大量的軟件數據,需要提高處理器的性能和功耗等,同時要考慮這是否合算。
3、中斷驅動技術設計
把整個嵌入式系統軟件設計成多個事件來處理,而在系統上電初始化時,主程序只進行系統的初始化(包括寄存器、外部設備等),初始化完成后,進入低功耗狀態,然后把CPU控制的設備都接到中斷輸入端上。當外設發生了一個事件,即產生中斷信號,使CPU退出節電狀態而進入事件處理,事件處理完成后,繼續進入節電狀態。在嵌入式程序設計時,一個程序到底使用中斷方式還是查詢方式,對于一些簡單的應用并不那么重要,但在其低功耗特性上卻相去甚遠。使用中斷方式,微控制器可以什么都不做,甚至可以進入等待模式或停止模式;而在查詢方式下,微控制器必須不停地訪問寄存器,這會帶來很多額外的功耗,所以,用軟件進行設計時,除非系統本身已要求采用查詢方式,否則應盡可能采用中斷方式進行編程。
4、定時器延時程序的采用
當軟件設計中需要用到延時程序時,設計人員應多使用定時器延時方法來進行設計。這是因為,通常嵌入式處理器進入待機模式后,CPU會停止工作,而定時器可以正常工作,由于定時器的功耗很低,故當處理器調用延時程序后,嵌入式系統便可進入待機模式,此時定時器可以繼續工作,定時時間一旦結束,即可喚醒CPU重新進入工作,這樣不但降低了CPU功耗,還提高了CPU的工作效率。而如果采用查詢方式,則CPU會不斷地對系統進行查詢,由于CPU時刻工作,這樣不但效率低下,同時處理器功耗也很大。
5、算法優化
優化算法多出現在嵌入式DSP中,采用大量現成的公式和計算方法,可以節省系統內部運算的時間,減少功耗;另外,在嵌入式系統允許的誤差情況下,也可以近似用比較簡單的函數來取代復雜函數進行運算,從而減少功率消耗。
結語:嵌入式系統的設計涉及到硬件設計和軟件設計兩個方面,在實際系統應用時,低功耗的設計并非是單方面的因素,需要綜合考慮各種可能的原因、條件和狀態,應把硬件設計和軟件設計綜合起來進行考慮,并對細節進行認真的分析,同時對多種可能的方案和方法進行計算和總結,這樣才可能取得較為滿意的效果,最終達到降低系統功耗的目的。
1.背景
如今嵌入式系統在日常生活中扮演著越來越重要的角色。從消費電子產品到航天工業,從熱門的電子應用(如智能手機和平板電腦等)到相對不起眼的應用(如人造衛星等),嵌入式系統直接或間接地影響人們生活的方方面面。嵌入式系統的巨大潛力使得教育工作者對它的討論從來沒有停止過。世界無數的教育工作者提出了大量新穎和具有創造性的方法和理論,以促進嵌入式系統教育水平的提高,他們大都贊同嵌入式系統具有與實際應用緊密聯系的顯著特點。
嵌入式系統應用在一個廣闊的領域,如簡單的微控制應用、控制系統、分布式嵌入式控制、片上系統、網絡、嵌入式PC、關鍵系統、機器人、計算機設備、無線數據系統和信號處理。同時,一些交叉領域知識對于嵌入式系統設計者也同樣重要,如安全、可靠性、節能、軟件/系統工程、實時計算和人機交互等。
對于想成為合格嵌入式系統設計者的學生來說,他們希望能夠親手接觸這些嵌入式應用,因此設計一個高效的實驗系統非常重要。實驗平臺應該能聯系抽象的理論知識和實際應用,以幫助學生領會嵌入式系統的知識奧秘。
2.嵌入式系統實驗教學的特點
嵌入式系統實驗教學與其他課程實驗教學有兩個方面的不同:軟硬件高度結合、知識和技術更新速度快。嵌入式系統實驗教學的特點如圖1所示。
嵌入式系統實驗教學的第一個特點是軟硬件高度結合。一個完整的嵌入式系統需要在軟硬件基礎之上工作。在嵌入式實驗教學中,任何一個環節的缺失或弱化都是錯誤的。我們過去就犯過這方面的錯誤。嵌入式系統是清華大學計算機科學與技術系大四本科生的一門專業必修課。學生希望在課程結束后對嵌入式系統有一個完整的認識,但是發現在學習完這個僅有2個學分的課程后,依然無法設計出一個軟硬件兼備的完整嵌入式系統。因此,我們讓學生使用開源軟件工具設計諸如鼠標或鍵盤等設備的驅動程序,但是效果并不理想,岡為學生僅僅熟悉了他們所實驗的部分內容,而這些內容只是他們應該掌握內容的一小部分,這不僅是由于實驗任務的限制,還因為學牛無法接觸硬件層面的操作,無法全面領會嵌入式系統。
嵌入式系統實驗教學的另一個特點是嵌入式系統知識和技術更新速度快。在第1節我們曾提到過,緊跟實際應用是嵌入式實驗教學的一個關鍵元素。由于嵌入式系統技術日新月異,嵌入式實驗課程講述的知識和技能以及嵌入式實驗設備和組件都必須不斷發展。我們在對清華大學計算機科學與技術系學生的調查問卷中發現,對傳統嵌入式實驗平臺的主要批評是實驗設備和組件過于陳舊,實驗平臺與當前技術聯系不夠緊密,實驗內容缺乏吸引力。
綜上所述,設計一個高效的嵌入式實驗平臺必須考慮軟硬件結合和嵌入式技術飛速發展這兩個因素。
3.當代學生的特點
除了嵌入式實驗課程本身,學生是不可忽略的另一個關鍵因素。學生是實驗的參與者,他們對實驗的感受影響著實驗課程教學的成敗,但是我們發現傳統的實驗方法令當代學生逐漸失去學習興趣,這主要是因為學生一代一代地不斷發展與進步,而傳統的實驗方法卻多年不變。
文獻[2]指出當代學生與過去的學生有所不同:缺乏鉆研精神、缺乏耐心和依賴于軟件。當代學生的特點如圖2所示。
當代學生的第1個特點是缺乏鉆研精神絕大多數學生成長于用戶至上主義日益流行的社會環境。相對于基礎原理,他們更關注功能;相對于架構,他們更關注表象。簡而言之,當代學生中很少有人理解嵌入式系統的基本原理,另一方面,傳統的實驗平臺專門為演示和驗證書本中講述的原理而設計,因此學生漸漸地無法將實際應用與特別設計的實驗相聯系,產生的問題是如果學生無法預見所學知識的未來應用前景,就會將關注點轉移到其他方面。由此可見,將實驗平臺與時興技術相結合非常重要。
當代學生的第2個特點是缺乏耐心。生活節奏的日益加快和互聯網絡的日益普及,使得當代學生漸漸缺乏耐心。他們習慣在實驗開始后急于見到結果,就好像點擊鼠標后立刻能在屏幕上看見反應,但是在傳統的教學方法中,教學總是從對課程的全面描述分析開始。實踐證明這種描述很必要,它可以幫助學生全面了解課程的知識結構,但是這些內容有時會讓學生退卻,因為學生感覺課程非常抽象與枯燥。鑒于這些問題,新實驗平臺應該在嵌入式系統的第一堂課就引起學生的興趣,同時提供一個吸引人的“結果”。
當代學生的第3個特點是依賴于軟件。嵌入式系統的發展通常被認為是民眾賦予的。在某種程度上,這種發展是電子工程向更智能化發展的結果。然而,電子工程這種不可見的層面,通常被復雜的用戶界面和其他圖標所偽裝,使得大家將其歸功于計算機科學,而不是電子工程。許多大學并沒有意識到這個問題,而將大部分注意力放在嵌入式軟件設計,忽略硬件層次的介紹。這種在嵌入式系統教學中的錯誤關注導致出現“軟件比硬件更加重要”的錯誤認識。為了糾正這個偏見,我們應該重視硬件并將其引入嵌入式系統課程。
總之,為了設計一個高效的實驗平臺,當代學生的特點不容忽視。
4.設計嵌入式實驗平臺的原則
基于上述討論,我們提出嵌入式系統教學實驗平臺的幾項設計原則。
完整性:實驗平臺應該相對完整。學生不但能接觸軟件,而且能操作硬件。這個原則主要解決兩個問題:首先糾正學生偏重于軟件的錯誤;其次在第一節課就能吸引學生,告訴他們課程最后能夠建立一個基本的卻相對完整的系統。
開發性:實驗平臺應該能幫助學生自由地實現創新思想。實驗平臺在軟件和硬件上都應為學生預留足夠數量和種類的接口,使學生能夠以此為基礎構建自己的嵌入式系統。在實踐過程中,越來越多的基于實際應用的嵌入式系統由學生實現,同時學生的創造熱情也被激發出來。
從教學的角度看,實驗平臺應包含以下特點。
可升級性:平臺的軟硬件應該能分別擴展和升級,而無需對整個平臺進行修改。如第2節所述,嵌入式系統技術升級速度快,尤其是硬件設備。為了滿足經常升級的需要,可升級性原則應該被放在關鍵位置。
靈活性:實驗內容應該能根據課程的要求而裁剪,以便于實驗平臺的廣泛推廣。大多數定制的實驗平臺在靈活性上有所欠缺,其實驗內容無法增加或減少,而為了適應課程學時的變化不得不重新設計實驗。
為了達到上述目標,我們提出一個完整的概念模型。目標系統的概念模型如圖3所示。
這個概念模型由3個中間層和2個層組成。中間層包括主系統層、中間通道層和從系統層。層包括應用層和組件層。我們將解釋這個模型如何能實現前面提出的目標。
完整性:把中間3層看作一個整體,這個基本模型由一個典型嵌入式系統中的主要元素組成,從最頂層的應用層到最底層的功能組件層。學生可以接觸完整系統的每一個組件。
開放性:模型的最頂層和最底層向學生開放。實驗平臺的設計者將足夠多的軟硬件接口提供給學生,這些接口必須是完整的和用戶友好的。使用硬件接口,學生能夠通過連接所需的硬件模塊構建一個創新的嵌入式設備;使用軟件接口,學生可以方便地加載硬件模塊所需的軟件資源。
可升級性:實驗平臺設計應該模塊化和層次化,每一層為上一層提供上層接口,為下一層提供下層接口。每一層可獨立地進行擴展和升級,與相鄰層次的接口保持兼容。模型的中間層被設計為3層結構,這個靈感來自于Phidgets的設計,它能為實際設備的實現提供更多可能性。
靈活性:每個層次都能根據課程的重點而被加強或削弱,因此實驗內容可根據課程要求而變化。實驗課可被安排在兩層或更多層之上。基礎實驗要求學生建立一個基本的嵌入式系統,而在高級實驗中,學生能深入研究模型中的各個層,以實現創意設計。
2 ARM選型
目前,能夠適用于嵌入式系統設計的ARM微處理器存在許多系列,ARM7系列、ARM9系列、ARM9E系列、ARM10E系列、SecurCore系列、Intel的Xscale以及StrongARM。前四個系列是通用型處理器,每一個系列的處理器具備獨特的功能和性能,能夠應用于各個領域,滿足對應的需求。SecurCore系列的處理器的安全性很高,可用于保密程度高的情況。ARM微處理器的內核結構各式各樣,能夠在不同領域和條件下發揮作用,用戶需要根據自己的實際需求,來選擇最合適的芯片。例如,如果用戶想要在系統中使用標準Linux等操作系統來更方便快捷的進行軟件設計,那么最佳的選擇是ARM720T以上,并且具備MMU功能的ARM芯片。此外,諸如uCLinux一類的不需要MMU功能支持的操作系統已經研發出來,并在不具備MMU功能的微處理器上獲得了成功應用,而且其系統穩定性和功能,都具有較高水平。
3 Bootloader開發
Bootloader是嵌入式系統的芯片引導程序,由開發人員應用匯編語言設計出來。Bootloader固化在目標板的ROM中,其功能是啟動ROM或RAM中的嵌入式軟件程序。在CPU支持的情況下,bootloader在開發時可以在RAM中運行。在基于ARM的嵌入式系統設計過程中,需要結合硬件目標板的相關特性來設計相應的bootloader程序,從而達到初始化處理器和相關硬件的目的。初始化處理器是通過bootloader對處理器中的配置寄存器進行初始化,這很容易實現,例如,在使用ARM處理器的MMU時,只需通過bootloader調用控制命令打開MMU。對于嵌入式系統必備硬件的初始化,一般是對系統內存、Flash ROM以及終端控制器的初始化,此外,從主機下載系統映像需要在硬件板和主機之間通過接口設備連接,系統的接口設備初始化也是由bootloader完成的。例如,一些嵌入式系統硬件板是通過以太網從主機下載系統映像文件的,在這里,bootloader就會使用以太網卡驅動程序來對相關硬件進行初始化,然后再與bootloader客戶端程序進行連接,下載映像文件。
4 系統初始化
基于ARM的嵌入式系統芯片大多屬于復雜的片上系統,這種系統的硬件部分很多都是可以自由配置的,其工作狀態和參數屬性也是由一定的軟件進行設置的。用戶在使用應用程序前,需要首先使用對應的啟動代碼對系統硬件進行初始化,這種初始化任務可由bootloader完成。在系統的初始化中,主要包括三個部分。其一,初始化中斷向量表。ARM處理器對中中斷向量表的位置有特殊要求,一般來說必須在從0地址開始的32字節的空間內。在ARM處理器的工作過程中,每當發生一個中斷,ARM處理器都會將PC指針置為向量表中對應的中斷類型的地址值。由于每個中斷都只占據向量表一個字節的存儲器空間,所以只能存放一條ARM指令,在一般情況下,向量表中并不直接存放ARM指令,而是跳轉指令,程序可以由向量表在指令作用下跳轉到寄存器的其他地址,然后再進行中斷處理。其二,初始化堆棧。ARM具有7種不同的執行狀態,每一種狀態對應的堆棧指針寄存器都是相互獨立的。所以,在程序中調整ARM執行狀態需要給每個寄存器定義堆棧地址。寄存器堆棧地址的定義很簡單,只要將處理器執行狀態輪流切換,每個狀態分別賦值。其三,改變處理器模式。ARM處理器有7種模式,在初始化時,需要先在6權模式下進行相關的修改,最后再切換到用戶模式。
5 下載系統映像
系統映像是通過bootloader從主機載入到目標板上的。系統映像文件的下載位置是通過bootloader的指令代碼或者交互shell界面來確定的,通過目標端的bootloader程序得到接收映像文件的程序,而主機端的程序則負責發送映像文件數據。這里一般可以通過串口和以太網卡等多種方式進行映像文件的傳輸。在成功接收系統映像后,如果具有相應的硬件模塊,bootloader還能將映像寫入到flash中。然后根據相應的啟動地址,bootloader就能夠將下載完畢的系統映像文件啟動,并將程序流程轉入主應用程序中。
6 存儲器管理
嵌入式系統的軟件平臺是由系統引導程序、嵌入式操作系統內核以及文件系統三個部分構成的。軟件平臺固化在Flash中,對于Flash地址空間的分區,一般分為三個,分別用于存放bootloader、Linux內核以及文件系統。Bootloader的代碼量相對較小,但也是非常重要的。嵌入式操作系統內核則是嵌入式系統的管理中心,負責各類任務和進程的切換和運行。文件系統則是嵌入式系統軟件平臺占用存儲空間最大的,負責存儲系統配置文件、系統程序、用戶程序以及相關的驅動等。此外,如果嵌入式系統的結構較為復雜,就可能出現各種存儲類型的接口,這些接口不能直接發揮作用,還需要一定的配置。就算是同類型的存儲器,也需要根據訪問速度來設置不同的時序配置。例如Flash和SRAM屬于靜態存儲器類型,其端口可以共用,而DRAM則具有動態刷新和地址線復用的特性,需要配備專用存儲器端口。
嵌入式系統作為計算機技術應用的一種,在社會的很多領域都能夠得到有效的應用。對于嵌入式系統的設計也一直受到相關人士的關注。文章探討了基于ARM的嵌入式系統的設計方法,以此為參考,再設置一定的硬件和程序即可發揮效用。
參考文獻:
[1]黃克彬 葉梧 馮穗力.基于ARM-ucLinux嵌入式系統啟動引導的實現[J].電子技術應用,2014,(3):23-24.
[2]費浙平.基于ARM的嵌入式系統程序開發要點(二)――系統的初始化過程{J].單片機與嵌入式系統應用,2013,(9):16-17.
[3]樂燕芬.ARM嵌入式系統啟動過程分析及實現[J].儀器儀表學報,2015,27(z3):56-57.