式處理器和嵌入式操作系統兩方面介紹,著重說明它不同于其它操作系統的一些處理方法和過程;在此基礎上闡述嵌入式軟件的開發過程,
并結合作者嵌入式軟件開發的實踐,著重闡述嵌入式軟件的一些開發技巧。接著,介紹目前嵌入式系統一些流行的應用,以及南京東大移動
互聯技術有限公司自行研制的基于藍牙技術的嵌入式產品。最后,給出作者的體會,展望嵌入式系統的前景。
關鍵詞:嵌入式系統 嵌入式處理器 微內核 內存管理單元 藍牙系統
引 言
在當前數字信息技術和網絡技術高速發展的后PC(Post-PC)時代,嵌入式系統已經廣泛地滲透到科學研究、工程設計、軍事技術、各
類產業和商業文化藝術以及人們的日常生活等方方面面中。隨著國內外各種嵌入式產品的進一步開發和推廣,嵌入式技術越來越和人們的生活緊密結合。
1970年左右出現了嵌入式系統的概念,此時的嵌入式系統很多都不采用操作系統,它們只是為了實現某個控制功能,使用一個簡單的循
環控制對外界的控制請求進行處理。當應用系統越來越復雜、利用的范圍越來越廣泛的時候,每添加一項新的功能,都可能需要從頭開始設
計。沒有操作系統已成為一個最大的缺點了。
C語言的出現使操作系統開發變得簡單。從上世紀80年代開始,出現了各種各樣的商用嵌入式操作系統百家爭鳴的局面,比較著名的有
VxWorks、pSOS和Windows CE等等,這些操作系統大部分是為專有系統而開發的。另外,源代碼開放的嵌入式Linux,由于其強大的網絡功能
和低成本,近來也得到了越來越多的應用。
1 嵌入式系統的技術特點
嵌入式系統通常包括構成軟件的基本運行環境的硬件和操作系統兩部分。嵌入式系統的運行環境和應用場合決定了嵌入式系統具有區別
于其它操作系統的一些特點。
(1)嵌入式處理器
嵌入式處理器可以分為三類:嵌入式微處理器、嵌入式微控制器、嵌入式DSP(Digital Signal Processor)。嵌入式微處理器就是和通
用計算機的微處理器對應的CPU。在應用中,一般是將微處理器裝配在專門設計的電路板上,在母板上只保留和嵌入式相關的功能即可,這樣
可以滿足嵌入式系統體積小和功耗低的要求。目前的嵌入式處理器主要包括:PowerPC、Motorola 68000、ARM系列等等。
嵌入式微控制器又稱為單片機,它將CPU、存儲器(少量的RAM、ROM或兩者都有)和其它外設封裝在同一片集成電路里。常見的有8051。
嵌入式DSP專門用來對離散時間信號進行極快的處理計算,提高編譯效率和執行速度。在數字濾波、FFT、譜分析、圖像處理的分析等領
域,DSP正在大量進入嵌入式市場。
(2)微內核結構
大多數操作系統至少被劃分為內核層和應用層兩個層次。內核只提供基本的功能,如建立和管理進程、提供文件系統、管理設備等,這些
功能以系統調用方式提供給用戶。一些桌面操作系統,如Windows、Linux等,將許多功能引入內核,操作系統的內核變得越來越大。內核變
大使得占用的資源增多,剪裁起來很麻煩。
大多數嵌入式操作系統采用了微內核結構,內核只提供基本的功能,比如:任務的調度、任務之間的通信與同步、內存管理、時鐘管理
等。其它的應用組件,比如網絡功能、文件系統、GUI系統等均工作在用戶態,以系統進程或函數調用的方式工作。因而系統都是可裁減的,
用戶可以根據自己的需要選用相應的組件。
(3)任務調度
在嵌入式系統中,任務即線程。大多數的嵌入式操作系統支持多任務。多任務運行的實現實際是靠CPU在多個任務之間切換、調度。每個
任務都有其優先級,不同的任務優先級可能相同也可能不同。任務的調度有三種方式:可搶占式調度、不可搶占式調度和時間片輪轉調度。
不可搶占式調度是指,一個任務一旦獲得CPU就獨占CPU運行,除非由于某種原因,它決定放棄CPU的使用權;可搶占式調度是基于任務優先
級的,當前正在運行的任務可以隨時讓位給優先級更高的處于就緒態的其它任務;當兩個或兩個以上任務有同樣的優先級,不同任務輪轉地
使用CPU,直到系統分配的CPU時間片用完,這就是時間片輪轉調度。
目前,大多數嵌入式操作系統對不同優先級的任務采用基于優先級的搶占式調度法,對相同優先級的任務則采用時間片輪轉調度法。
(4)硬實時和軟實時
有些嵌入式系統對時間的要求較高,稱之為實時系統。有兩種類型的實時系統:硬實時系統和軟實時系統。軟實時系統并不要求限定某
一任務必須在一定的時間內完成,只要求各任務運行得越快越好;硬實時系統對系統響應時間有嚴格要求,一旦系統響應時間不能滿足,就
可能會引起系統崩潰或致命的錯誤,一般在工業控制中應用較多。
(5)內存管理
針對有內存管理單元(MMU)的處理器設計的一些桌面操作系統,如Windows、Linux,使用了虛擬存儲器的概念。虛擬內存地址被送到
MMU。在這里,虛擬地址被映射為物理地址,實際存儲器被分割為相同大小的頁面,采用分頁的方式載入進程。一個程序在運行之前,沒有
必要全部裝入內存,而是僅將那些當前要運行的部分頁面裝入內存運行。
大多數嵌入式系統針對沒有MMU的處理器設計,不能使用處理器的虛擬內存管理技術,采用的是實存儲器管理策略。因而對于內存的訪問
是直接的,它對地址的訪問不需要經過MMU,而是直接送到地址線上輸出,所有程序中訪問的地址都是實際的物理地址;而且,大多數嵌入
式操作系統對內存空間沒有保護,各個進程實際上共享一個運行空間。一個進程在執行前,系統必須為它分配足夠的連續地址空間,然后全
部載入主存儲器的連續空間。
由此可見,嵌入式系統的開發人員不得不參與系統的內存管理。從編譯內核開始,開發人員必須告訴系統這塊開發板到底擁有多少內
存;在開發應用程序時,必須考慮內存的分配情況并關注應用程序需要運行空間的大小。另外,由于采用實存儲器管理策略,用戶程序同
內核以及其它用戶程序在一個地址空間,程序開發時要保證不侵犯其它程序的地址空間,以使得程序不至于破壞系統的正常工作,或導致其
它程序的運行異常;因而,嵌入式系統的開發人員對軟件中的一些內存操作要格外小心。
(6)內核加載方式
嵌入式操作系統內核可以在Flash上直接運行,也可以加載到內存中運行。Flash的運行方式,是把內核的可執行映像燒寫到Flash上,
系統啟動時從Flash的某個地址開始執行。這種方法實際上是很多嵌入式系統所采用的方法。內核加載方式是把內核的壓縮文件存放在Flash
上,系統啟動時讀取壓縮文件在內存里解壓,然后開始執行。這種方式相對復雜一些,但是運行速度可能更快,因為RAM的存取速率要比
Flash高。
由于嵌入式系統的內存管理機制,嵌入式操作系統對用戶程序采用靜態鏈接的形式。在嵌入式系統中,應用程序和操作系統內核代碼
編譯、鏈接生成一個二進制影像文件來運行。
2 嵌入式系統開發相關技術
相對于在Windows環境下的開發應用程序,嵌入式系統開發有著很多的不同。不同的硬件平臺和操作系統帶來了許多附加的開發復雜性。
2.1 嵌入式開發過程
在嵌入式開發過程中有宿主機和目標機的角色之分:宿主機是執行編譯、鏈接、定址過程的計算機;目標機指運行嵌入式軟件的硬件
平臺。首先須把應用程序轉換成可以在目標機上運行的二進制代碼。這一過程包含三個步驟:編譯、鏈接、定址。編譯過程由交*編譯器
實現。所謂交*編譯器就是運行在一個計算機平臺上并為另一個平臺產生代碼的編譯器。常用的交*編譯器有GNU C/C++(gcc)。編譯過
程產生的所有目標文件被鏈接成一個目標文件,稱為鏈接過程。定址過程會把物理存儲器地址指定給目標文件的每個相對偏移處。該過程
生成的文件就是可以在嵌入式平臺上執行的二進制文件。
嵌入式開發過程中另一個重要的步驟是調試目標機上的應用程序。嵌入式調試采用交*調試器,一般采用宿主機-目標機的調試方式,
它們之間由串行口線或以太網或BDM線相連。交*調試有任務級、源碼級和匯編級的調試,調試時需將宿主機上的應用程序和操作系統內核
下載到目標機的RAM中或直接燒錄到目標機的ROM中。目標監控器是調試器對目標機上運行的應用程序進行控制的代理(Debugger Agent),
事先被固化在目標機的Flash、ROM中,在目標機上電后自動啟動,并等待宿主機方調試器發來的命令,配合調試器完成應用程序的下載、
運行和基本的調試功能,將調試信息返回給宿主機。
2.2 向嵌入式平臺移植軟件
大部分嵌入式開發人員選用的軟件開發模式是先在PC機上編寫軟件,再進行軟件的移植工作。在PC機上編寫軟件時,要注意軟件的可
移植性,選用具有較高移植性的編程語言(如C語言),盡量少調用操作系統函數,注意屏蔽不同硬件平臺帶來的字節順序、字節對齊等
問題。以下是我們在移植協議棧過程中的一些體會。
2.2.1 字節順序
字節順序是指占內存多于一個字節類型的數據在內存中的存放順序,通常有小端、大端兩種字節順序。小端字節序指低字節數據存放
在內存低地址處,高字節數據存放在內存高地址處;大端字節序是高字節數據存放在低地址處,低字節數據存放在高地址處。基于X86平臺
的PC機是小端字節序的,而有的嵌入式平臺則是大端字節序的。因而對int、uint16、uint32等多于1字節類型的數據,在這些嵌入式平臺
上應該變換其存儲順序。通常我們認為,在空中傳輸的字節的順序即網絡字節序為標準順序,考慮到與協議的一致以及與同類其它平臺產
品的互通,在程序中發數據包時,將主機字節序轉換為網絡字節序,收數據包處將網絡字節序轉換為主機字節序。
2.2.2 字節對齊
有的嵌入式處理器的尋址方式決定了在內存中占2字節的int16、uint16等類型數據只能存放在偶數內存地址處,占4字節的int32 、
uint32 等類型數據只能存放在4的整數倍的內存地址處;占8字節的類型數據只能存放在8的整數倍的內存地址處;而在內存中只占1字節的
類型數據可以存放在任意地址處。由于這些限制,在這些平臺上編程時有很大的不同。首先,結構體成員之間會有空洞,比如這樣一個結
構:
typedef struct test{
char a;
uint16 b;
}TEST
結構TEST在單字節對齊的平臺上占內存三個字節,而在以上所述的嵌入式平臺上有可能占三個或四個字節,視成員a的存儲地址而定。
當a存儲地址為偶數時,該結構占四個字節,在a與b之間存在一個字節的空洞。對于通信雙方都是對結構成員操作的,這種情況不會出錯,
但如果有一方是逐字節讀取內容的(通信協議大都如此),就會錯誤地讀到其它字節的內容。其次,若對內存中數據以強制類型轉換的方
式讀取,字節對齊的不同會引起數據讀取的錯誤。因為假如指針指在基數內存地址處,我們想取得占內存兩個字節的數據存放在uint16型
的變量中,強制類型轉換的結果是取得了該指針所指地址與前一地址處的數據,并沒有按照我們的愿望取該指針所指地址與后一地址處的
數據,這樣就導致了數據讀取的錯誤。
解決字節對齊有許多方法,比如可以在GCC的項目管理文件MakeFile中增加編譯選項--pack-struct;但這種方法只能去除結構中的空
洞,并不能解決強制類型轉換引起的錯誤。為了增強軟件的可移植性以及和同類其它平臺產品的互通性,我們在收數據包處增加了拆包的
函數,發數據包處增加了組包的函數。這兩個函數解決了字節序的問題,也解決了字節對齊的問題。即組包時根據參數中的格式字符串將
內存中的不同數據類型的某段數據放在指定地址處,組成包發給下層;拆包時,根據參數中的格式字符串將收到的內存中的數據存放在不
同類型的變量或結構成員中。在函數中針對不同的數據類型作不同的處理。
2.2.3 位 段
由于位段的空間分配方向因硬件平臺的不同而不同,對X86平臺,位段是從右向左分配的;而一些嵌入式平臺,位段是從左向右分配
的。分配順序的不同導致了數據存取的錯誤。解決這一問題的一種方法是采用條件編譯的方式,針對不同的平臺定義順序不同的位段;
也可以在前面所述的兩個函數中加上對位段的處理。
2.2.4 代碼優化
嵌入式系統對應用軟件的質量要求更高,因而在嵌入式開發中尤其須注意對代碼進行優化,盡可能地提高代碼的效率,減少代碼的大
小。雖然現代C和C++編譯器都提供了一定程度的代碼優化,但大部分由編譯器執行的優化技術僅涉及執行速度和代碼大小的平衡,不可能
使程序既快又小,因而必須在編寫嵌入式軟件時采取必要的措施。
(1)提高代碼的效率
①switch-case 語句。在程序中經常會使用switch-case語句,每一個由機器語言實現的測試和跳轉僅僅是為了決定下一步要做什么,
就浪費了處理器時間。為了提高速度,可以把具體的情況按照它們發生的相對頻率排序。即把最可能發生的情況放在第一,最不可能發生
的情況放在最后,這樣會減少平均的代碼執行時間。
② 全局變量。使用全局變量比向函數傳遞參數更加有效率,這樣做去除了函數調用前參數入棧和函數完成后參數出棧的需要。當然,
使用全局變量會對程序有一些負作用。
(2)減小代碼的大小
嵌入式系統編程應避免使用標準庫例程,因為很多大的庫例程設法處理所有可能的情況,所以占用了龐大的內存空間,因而應盡可能
地減少使用標準庫例程。
(3)避免內存泄漏
用戶內存空間(堆)為RAM中全局數據和任務堆棧空間都分配后的剩余空間,為了使程序能有足夠的內存運行,必須在申請的內存不用
后及時地將其釋放,以確保再次申請時能有空間。如果程序中存在內存泄漏(即申請內存后沒有及時釋放)的情況,程序最終會因為沒有
足夠的內存空間而無法運行。
3 嵌入式系統的廣泛應用
嵌入式系統的應用前景是非常廣泛的,人們將會無時無處不接觸到嵌入式產品,從家里的洗衣機、電冰箱,到作為交通工具的自行車、
小汽車,到辦公室里的遠程會議系統等等。特別是以藍牙為代表的小范圍無線接入協議的出現,使嵌入式無線電的概念悄然興起。當嵌入
式的無線電芯片的價格可被接受時,它的應用可能會無所不在。在家中、辦公室、公共場所,人們可能會使用數十片甚至更多這樣的嵌入
式無線電芯片,將一些電子信息設備甚至電氣設備構成無線網絡;在車上、旅途中,人們利用這樣的嵌入式無線電芯片可以實現遠程辦公、
遠程遙控,真正實現把網絡隨身攜帶。下面介紹幾種具體的應用。
(1)嵌入式移動數據庫
所謂的移動數據庫是支持移動計算的數據庫,有兩層含義:① 用戶在移動的過程中可以聯機訪問數據庫資源。② 用戶可以帶
]]>
![]() |
而嵌人式系統軟硬件協同設計是讓軟件設計和硬件設計作為一個整體并行設計,找到軟硬件的最佳結合點,從而使系統高效工作。協同設計的基本思路如圖2所示。
![]() |
從圖2可以看出,軟硬件協同設計最主要的一個優點就是在設計過程中,硬件和軟件設計是相互作用的,這種相互作用發生在設計過程的各個階段和各個層次。
設計過程充分體現了軟硬件的協同性。在軟硬件功能分配時就考慮到了現有的軟硬件資源,在軟硬件功能的設計和仿真評價過程中,軟件和硬件是互相支持的。這就使得軟硬件功能模塊能夠在設計開發的早期互相結合,從而及早發現問題及早解決,避免了(至少可以減少)在設計開發后期反復修改系統以及由此帶來的一系列問題,而且有利于挖掘系統潛能、縮小產品的體積、降低系統成本、提高系統整體性能。
2軟硬件協同設計的過程
總的來說,軟硬件協同設計的系統設計過程可以分為系統描述、系統設計、仿真驗證與綜合實現4個階段。
系統描述是用一種或多種系統級描述語言對所要設計的嵌入式系統的功能和性能進行全面的描述,建立系統的軟硬件模型的過程。系統建模可以由設計者用非正式語言,甚至是自然語言來手工完成,也可以借助EDA工具實現。手工完成容易導致系統描述不準確,在后續過程中需要修改系統模型,從而使系統設計復雜化等問題,而優秀的EDA工具可以克服這些弊端。
1.2 嵌入式軟PLC的軟件結構
嵌入式軟PLC程序包括兩類:一類是編輯狀態,實現PLC程序的輸入和編譯功能;另一類是面向生產過程的應用程序。系統軟件結構由4部分組成,分別是編輯模塊、編譯模塊、執行模塊和監控模塊。軟件PLC系統模塊間的數據流程如圖2所示。
2 系統關鍵組成部分的設計與實現
2.1 梯形圖編輯器
Qt/Embedded是著名的Qt庫開發商Trolltech推出的面向嵌入式系統的Qt版本。Qt/Embedded具有可移植性強和支持跨平臺開發等優點。本系統采用Qt編寫界面,梯形圖編輯器的界面如圖3所示。
2.1.1 梯形圖的數據結構設計
梯形圖編輯具有方便、邏輯直觀的特點,梯形圖編輯器借助于梯形圖的內部數據結構來實現顯示、插入、刪除、代碼轉化等功能。
原文出處:http://www.asmag.com.cn/apply/jishu_detail.aspx?aid=16882
因此,Linaro的主要任務在于各類芯片平臺上提供統一的軟件核心層與中介軟件,以有效解決OEM與ODM在系統整合上的問題,如軟件核心層與硬件芯片的整合、適當程序代碼的搜尋、系統效能等。半導體業者在未來的芯片設計上,也可依循Linaro所提供的架構為基礎,提供系統業者更容易的開發環境。
另一方面,基于Linux的多樣性,Linaro也會針對MeeGo、Android、Ubuntu等以Linux為基礎的平臺,進行投資與研發,以進一步強化各類SOC平臺與廣泛的Linux系統之間的整合。
]]> ①因為模塊化,軟件的總體結構更容易理解;
②只要是與某一個外設相互作用,必然是通過他的驅動程序來起作用的,這樣查找錯誤和故障就更容易些;
③由硬件的變動導致的軟件變化集中在設備驅動程序上,這樣做有助于減少系統變動時改變軟件設計工作量,盡量做到軟件復用,縮短開發周期,這對提高產品競爭能力有實際意義。
2 編寫設備驅動程序的方法和步驟
本文以摩托羅拉公司冷火系列(coldfire)嵌入式 微處理器MCF5307定時器為例,討論在用C++語言編寫嵌入式系統驅動程序時,如何做到盡量隱藏硬件的方法和步驟。
(1)覆蓋設備的存儲映像控制及狀態設備寄存器數據結構
MCF5307的寄存器C語言描述文件是MCF5307.h,這個文件對MCF5307的系統寄存器和片上外設控制和狀態寄存器以結構或聯合的方式做了定義。在Timer.cpp添加MCF5307.h并在頭文件文件中定義MCF5307_IMM類型全局指針變量imm后就可以訪問這些寄存器(使用timer1)。如下所示:
#define MBAR_ADDR 0x10000000
#define VBR 0x0 MCF5307_IMM
*imm=(MCF5307_IMM*)MBAR_ADDR;
在timer類構造函數中對MCF5307定時器控制和狀態寄存器作硬件初始化,使其產生周期為1 ms的節拍中斷。
(2)跟蹤目前硬件和設備驅動狀態的一組變量
驅動程序開發過程的第二步是確定變量來跟蹤硬件和設備驅動的狀態。比如,要確定硬件是否已經初始化過或跟蹤當前計數器的值。
設備的驅動不只創建一個軟件設備,他們純粹是邏輯設備,在基本外圍硬件之上實現。容易設想從單獨鐘,正如在Windows下定時器編程一樣。系統的定時器應該被設置以產生一個周期性的時鐘節拍(tick),比如ms。設備驅動則保持創建的每個軟件時鐘的狀態信息來管理一組不同長度的軟件時鐘。
(3)一個把硬件初始化到已知狀態的例程
確定跟蹤物理和邏輯設備的狀態的變量后,接下來是實際與設備交互和控制函數。首先從設備初始化例程開始,把設備狀態設定到一個已知的狀態。然后就是啟動定時器,并且在啟動時設定類型(周期的,還是非周期的)、周期參數、刪除定時器等。
(4)合起來為設備驅動用戶提供API的一組例程
設備初始化后,開始給設備驅動添加其他的功能。
以定時器為例,創建一個軟件時鐘,啟動時鐘和管理時鐘函數等具體的模塊函數。這些函數的集合就可以為設備驅動應用程序提供一個統一的接口。
(5)中斷服務例程
確定外設的中斷服務例程入口地址以及安裝中斷向量。一些重要的后臺工作要由中斷服務例程來完成,合理的設置中斷可以很好的利用CPU,提高CPU的運行效率。MCF5307的中斷是由中斷基址寄存器VBR和各個外設控制寄存器共同決定的。
3 在MCF5307上實現軟件時鐘
實現軟件定時器的關鍵就是活動時鐘鏈表的管理,要跟蹤時鐘狀態,要記錄時鐘啟動時刻及其周期或長度,用鏈表管理時鐘,把時鐘的啟動時刻轉換為剩余節拍數count和鏈表的位置關系。如圖1所示,當一個軟件時鐘被啟動時,初始化state,type和length,時鐘被插入活動時鐘鏈表。在時鐘鏈表的時鐘經過排序使得第一個到期的時鐘處于表的頂端。每一個時鐘有一個與其相關的count變量,這個值代表了所有列表前面的到期時該時鐘剩余的時鐘節拍數。在硬件產生的時鐘節拍中斷時——每毫秒一次——都要刷新活動時鐘列表。
圖1說明了活動時鐘鏈表,每一個軟件時鐘都有他的長度和開始時間,一旦他們被插入列表,就對應count字段和排序。鏈表中可以看出第1個和第2個時鐘同時啟動。由于第2個比第1個長5 ms,因此他晚5個節拍到期。而第3個時鐘是在第1個時鐘的count=1時插入的。
由于篇幅有限,其他的源程序簡略。
4 測試程序和運行結果
這段程序是在風河公司(windriver)diab 4.3g編譯器下編譯,并在SDS調試器下做調試運行,測試程
將程序編譯、鏈接形成可執行代碼,下載到目標板上調,運行正常,實現了軟件定時器。就像Windows編程時設置定時器一樣,用戶可以同時啟動若干定時器,而他們底層只是由一個硬件定時器在驅動。
從測試程序中可以看出,定時器編程形式上簡單多了,應用程序不直接對設備寄存器讀寫,而且這個定時器驅動是整個程序惟一直接訪問定時器單元的模塊。實現了隱藏硬件的目的。
5 結 語
本文通過一個簡單的MCF5307定時器驅動程序設計,表述了隱藏硬件的思想以及用于嵌入式驅動程序的編寫的方法和步驟,可以推廣到其他嵌入式系統驅動程序設計中。這樣的驅動程序,方便程序員為嵌入式系統編寫應用程序,同時可以為系統程序員提供必要的庫例程,增加軟件的可復用性,減少重復勞動。
參考文獻
[1] MicbaelBarr.C/C++嵌入式系統編程[M].北京:中國電力出版社,2001.
[2] Motorola.MCF5307 user guide,2000. 本信息來源:CAD教育網 www.cadedu.com
(1)瀑布模式開發過程
瀑布模式開發過程工作模式簡單,任務的劃分協調及人員安排、物質材料的分配管理都比較容易。開發過程為從硬件到軟件的流水線式進行。此類開發方式有以下特點:
◇ 小系統,如利用8051控制的低速率信號采集等;
◇ 開發所需人力、物力資源有限,一般1個或幾個人即可完成;
◇ 要求開發人員對軟、硬件設計和制作都比較熟悉;
◇ 對開發周期要求不高,此類開發過程無疑會使用最長的開發周期;
◇ 在開發過程中,任一環節的阻塞都會影響其它環節的開發。
(2)V模式開發過程
V模式開發過程為一種并行的工作方式,任務的劃分協調及人員安排、物質材料的分配都必須考慮不同工作內容,
開發過程為硬件和軟件同時進行,最后聯合調試。此類開發方式有以下特點:
◇ 大系統,如利用PowerPC等處理器設計的網絡交換/訪問設備;
◇ 開發人力、物力資源比較豐富;
◇ 開發人員分工比較明確,軟件開發者可不需了解太多的硬件信息,而硬件開發人員對軟件也可不做太多了解;
◇ 有利于縮短開發周期;
◇ 在開發過程中,軟、硬件設計獨立進行。 硬件開發的阻塞不會影響軟件開發過程,同樣,軟件開發的阻塞不會影響硬件的開發過程。
但在V模式開發過程中,仍存在以下問題:
◇ 設備驅動程序的可移值性差,與硬件和操作系統均有密切相關性;
◇ 軟件測試需要等硬件完成以后才能進行;
◇ 對于每個設備驅動程序設計人員都需有軟件和硬件的知識背景;
◇ 在測試過程中,很難判斷錯誤是由硬件還是由軟件造成的。
為了克服V模式開發過程中的上述問題,本文將V模式開發過程稍作改進,增加了硬件抽象層,對系統軟硬件起到隔離作用,從而提高系統軟件的可移值性及有效地利用人力資源、縮短開發周期和提高產品的可靠性。
2 基于硬件抽象層的系統軟件設計特性
(1)包含硬件抽象層的系統結構
硬件抽象層完全把系統軟件和硬件部分隔離開來,這樣就使得系統的設備驅動程序與硬件設備無關,從而大大提高了系統的可移植性。從軟硬件測試角度來看,軟硬件的測試工作都可分別基于硬件抽象層來完成,使得軟硬件的測試工作的并行進行成為可能。在抽象層的定義方面,需要規定統一的軟硬件接口標準,其設計工作需要基于系統需求來做,代碼工作可由對硬件比較熟悉的人員來完成。抽象層一般應包含相關硬件的初始化、數據的輸入/輸出操作、硬件設備的配置操作等功能。
(2)包含硬件抽象層的系統開發過程
在系統需求分析并定義了軟硬件各自的設計要求以后,就需要花費一定的時間來定義硬件抽象層的接口,以確保硬件設計和測試與軟件設計和測試工作能夠在相同的接口上進行,從而有利于最終的軟硬件集成測試。
在基于硬件抽象層的V模式開發過程,軟硬件的設計和調試具有無關性,并可完全地并行進行。硬件的錯誤不會影響到系統軟件的調試,同樣軟件設計的錯誤也不會影響硬件的調試工作,這樣就可大大縮短系統的測試周期和提高系統的可靠性。
(3)硬件抽象層的特點
硬件抽象層接口的定義和代碼設計應具有以下特點:
◇ 硬件抽象層具有與硬件密切相關性;
◇ 硬件抽象層具有與操作系統無關性;
◇ 接口定義的功能應包含硬件或系統所需硬件支持的所有功能;
◇ 接口定義簡單明了,太多接口函數會增加軟件模擬的復雜性;
◇ 具有可測性的接口設計有利于系統的軟硬件測試和集成。
3 硬件抽象層的設計示例
硬件抽象層接口的設計一般應包含以下幾個步:
◇ 分析接口的數據傳輸特性(雙向/單向數據傳輸,字節型/數據幀型傳輸模式);
◇ 分析接口配置屬性;
◇ 定義接口所需的相關函數。
下面給出以字符為單位進行數據傳輸的UART接口硬件抽象層的接口定義內容:
◇ 設備初始化函數
BOOL InitDevice(Device_Register *regs, Device_Attribute *attr)
① 第一個參數為指向設備寄存器結構的指針,用來索引設備的相關寄存器。
② 第二個參數為一個設備屬性的結構,用于描述設備初始化設置的屬性(波特率、校驗位等等)。
③ 函數返回一個布爾類型,用于描述初始化過程的正確性。
◇ 設備字符輸入
BOOL ReadDevice(Device_Register *regs, unsigned char *c)
① 第一個參數為指向設備寄存器結構的指針,用來索引設備的相關寄存器。
② 第二個參數為指向字符的地址空間,用于保存設備輸入的字符。
③ 函數返回一個布爾類型,用于描述設備字符輸入的正確性。
◇ 設備字符輸出
BOOL WriteDevice(Device_Register *regs, unsigned char c)
① 第一個參數為指向設備寄存器結構的指針,用來索引設備的相關寄存器。
② 第二個參數為設備所要輸出的字符。
③ 函數返回一個布爾類型,用于描述設備字符輸出的正確性。
◇ 設備屬性設置
BOOL SetDevice(Device_Register *regs, Device_Attribute *attr)
① 第一個參數為指向設備寄存器結構的指針,用來索引設備的相關寄存器。
② 第二個參數為一個設備屬性的結構,用于描述設備初始化設置的屬性(波特率、校驗位等等)。
③ 函數返回一個布爾類型,用于描述設備屬性設置的正確性。
4 結 論
以上所述的是作者在多年嵌入式系統開發中所總結出的開發流程,并在實踐應用中起到了很好的效果。相信在一個較為復雜的嵌入式系統開發過程中,很好地利用上述開發流程,將會有利于提高系統的可移植性、減少產品的開發和測試周期,并能很好地保證產品的可靠性。
]]>這些統計數據的矛頭都指向基本工程方法的失敗。在傳統的開發步驟中,硬件設計要超前軟件開發,而嵌入式系統中軟件正日益占據關鍵地位。因而,傳統開發步驟在嵌入式系統開發中遭遇失敗并不讓人意外。何況一個產品的上市時間也越來越短(后文舉出的手機開發的例子總開發時間還不到一年),這又給嵌入式系統的開發雪上加霜。很明顯,嵌入式設計的方法和工具需要進行一次革命。
也就是說,系統架構、硬件實現和軟件實現各階段之間的關系需要調整,而這種需求恰好正是目前的電子系統級設計(ESL)中最受關注的問題。然而,現有的大多數基于ESL的方法都只能提供部分解決方案。我們需要的是一套全新的設計模式,一套能夠對全系統建模的方法,以促進系統架構研究并實現軟硬件協同設計,以允許設計人員從原始設計不斷改進,直到最終實現系統。
至今為止,大多數將SoC系統級設計自動化為RTL實現的嘗試都存在設計精確度和設計生產力不足的缺陷。早期那些力圖將C、C++和SystemC自動化為硬件建模語言(能將順序軟件語義翻譯為基于狀態機的并行硬件語言) 的工具,不但要求開發人員創建并維護功能事務級模型的多個“視角”,而且要添加定時還需要更多的“視角”。維護這些“多視角”本身就有問題,而這些視角之間在時序和功能方面的不一致還會導致驗證錯誤。此外,最終將其轉為RTL的過程主要仍是一個手工操作的過程。
要使SoC設計走出困境,很重要的一點就是讓設計師們能夠采用一種在系統架構階段設計的定時精確的高性能系統級模型,然后隨著開發人員從架構階段進入軟硬件協同開發和驗證階段,改進而不是丟棄這個模型。盡管暫時還沒有一種全自動化的工具鏈能夠實現從系統架構到RTL實現這一系列完整的設計任務,但一些嵌入式設計方案供應商已經開始了成功的嘗試,其中一種很有前途的技術就是虛擬系統原型技術。
圖1:每個公司一年里啟動的項目提前完成,推遲完成,按時完成和取消所占的百分比(平均每個公司啟動項目所占百分比)。
虛擬系統原型(VSP)是一種基于軟件仿真的電子系統模型,其中可以包含一個或多個處理器、總線、硬件外設,甚至可以包含作為整個系統一部分的機械或模擬子系統模型。但最重要的是,VSP運行的是與真實硬件相同的經過編譯和鏈接的目標代碼,因而能夠準確預測系統在實際情況下的表現。此外,VSP還是一種周期精確(cycle-accurate)的模型,因此,被設計的系統可以根據對實時性的要求建模。
一旦模型建立,硬件和軟件開發就可以同時啟動,這樣一來,既減少了開發所用的總資源,也縮短了開發周期。
傳統的“丟棄式”系統級模型在硬件和軟件實現階段就過時了,而VSP仍可繼續用于硬件驗證。由于這一優秀的模型是周期精確(cycle-accurate)的,因而RTL實現可以在任何時候換入 (swap in) 。而且,在RTL模型換入后, 為了進行性能分析或者更快地運行更大的軟件實體,還可以用原來的高級VSP模型將RTL模型換出。系統級測試范例是作為可執行系統規范的一部分生成的,然后,隨著軟硬件開發過程的進展,再由上至下地生成結構、模塊和單元測試。
最后一點,VSP的升級和分發也很容易。對那些在地域上分布較零散的開發團隊而言,通過網絡發送軟件模型也比運送電路板更簡單。這樣一來,工程師只有在最后的集成階段才需要真實的硬件和芯片。而且,由于軟硬件開發采用的是同一個虛擬系統原型,因此集成起來也更快和更容易。
虛擬系統原型在無線設計中的應用舉例
在單芯片系統的開發中,無線系統設計是最復雜也是競爭最激烈的領域。越來越多領先的無線設計公司開始利用虛擬系統原型技術提高設計生產力、縮短上市時間,并降低風險。以下介紹的無線設計在一塊芯片中容納了兩個處理器內核、一個DSP、多級存儲器、6種復雜的多層總線結構、一個實時操作系統、超過30個外設,外加超過兩百萬行代碼。這款手機的SoC具備GSM控制功能、多媒體功能、二維和三維圖形處理功能、相機接口,以及一系列諸如WiFi和USB之類的其他接口。
圖2:利用VSP技術,軟件開發可以在硬件就緒前9個月甚至更早開始。
以前的項目結束后,這個設計小組決定必須改變傳統的“先硬件后軟件”的設計方法才能滿足日益縮短的上市時間需求。
采用VSP的結果
他們選擇了VaST Systems提供的虛擬系統原型方案,這不但是一個高性能的方案,而且絲毫無損設計精度。從系統架構階段直到軟硬件協同開發和驗證階段都可以采用同一個VaST處理器模型(虛擬系統原型的核心)。
根據配置的不同,VaST處理器模型在仿真單處理器時,在保持原有的周期、寄存器和定時精度的同時,速度在50到200MIPS之間;在仿真帶分層存儲器結構和多級總線的多內核系統時,在保持周期精度的同時速度可達10到100MIPS。
首先,系統架構師利用VSP進行系統架構研究和分析。VSP能夠運行基于應用的軟件,因此設計師可以據此考慮緩存的大小、處理器的處理能力等性能問題,同時還可以檢查出系統中潛在的資源共享、同步和總線帶寬問題。此外,利用VSP,設計小組還可以在真實系統的環境下檢查第三方IP。
有了VSP,軟件開發人員可以提前幾個月開始編寫系統中的關鍵函數(例如系統初始化程序、硬件抽象層、RTOS/OS及其相關的設備驅動程序、中間件軟件,甚至是嵌入式應用的代碼),然后再進入傳統的硬件、軟件開發流程。
圖3:傳統的手機設計流程和利用虛擬系統原型的手機設計流程的比較
在使用VSP之后,這家公司發現他們的競爭優勢得到了很大提升,于是決定繼續將VSP技術作為其首選設計方法。
本文小結
嵌入式系統不論從絕對數量還是從復雜度來說都在飛速地發展,而且在嵌入式系統中,通過軟件實現的功能越來越多。
傳統的先硬件后軟件的設計方法對這種復雜的嵌入式系統開發已不再適用。因為不但從質量還是從生產力的角度說,軟件和硬件都必須同時開發和驗證。
人們早期所作的用軟件來建模硬件系統的嘗試存在很多問題,包括要求設計師創建并維護模型的多個“角度”。要解決這些問題,硬件系統的軟件模型必需同時具備快速和準確兩個特點。具備了這兩個特點的模型就有可能既適用于系統架構階段,又能成為出色的軟硬件協同開發參考模型。
VaST Systems提供的技術和方法能夠在不損失速度和精度的前提下提供快速準確的虛擬處理器模型(嵌入式系統的核心)。已經有設計團隊采用了我們的系統原型,根據配置的不同,該模型在單處理器內核系統中的仿真速度可達50到 200 MIPS,在帶分層存儲器結構和多級總線的多內核系統中可達10到 100 MIPS。
一家領先的手機嵌入式系統供應商采用了虛擬系統原型 技術,并在硬件就緒之前9個月就開始了軟件開發。用他們的話說,采用虛擬系統原型 技術可謂“用更少的成本和更短的開發時間設計出更好的產品”。
]]>然而,作為一種便攜式和移動性的終端,完全依靠電池來供電,隨著智能手機的功能越來越強大,其功率損耗也越來越大。因此,必須提高智能手機的使用時間和待機時間。對于這個問題,有兩種解決方案:一種是配備更大容量的手機電池;另一種是改進系統設計,采用先進技術,降低手機的功率損耗。
現階段,手機配備的電池以鋰離子電池為主,雖然鋰離子電池的能量密度比以往提升了近30%,但是仍不能滿足智能手機發展需求。就目前使用的鋰離子電池材料而言,能量密度只有20%左右的提升空間。而另一種被業界普遍看做是未來手機電池發展趨勢的燃料電池,能使智能手機的通話時間超過13 h,待機時間長達1個月,但是這種電池技術仍不成熟,離商用還有一段時間[1]。增大手機電池容量總的趨勢上將會增加整機的成本。
因此,從智能手機的總體設計入手,應用先進的技術和器件,進行降低功率損耗的方案設計,從而盡可能延長智能手機的使用時間和待機時間。事實上,低功耗設計已經成為智能手機設計中一個越來越迫切的問題。
1 智能手機的硬件系統架構
本文討論的智能手機的硬件體系結構是使用雙cpu架構,如圖1所示。
主處理器運行開放式操作系統,負責整個系統的控制。從處理器為無線modem部分的dbb(數字基帶芯片),主要完成語音信號的a/d轉換、d/a轉換、數字語音信號的編解碼、信道編解碼和無線modem部分的時序控制。主從處理器之間通過串口進行通信。主處理器采用xxx公司的cpu芯片,它采用cmos工藝,擁有arm926ej-s內核,采用arm公司的amba(先進的微控制器總線體系結構),內部含有16 kb的指令cache、16 kb的數據cache和mmu(存儲器管理單元)。為了實現實時的視頻會議功能,攜帶了一個優化的mpeg4硬件編解碼器。能對大運算量的mpeg4編解碼和語音壓縮解壓縮進行硬件處理,從而能緩解arm內核的運算壓力。主處理器上含有lcd(液晶顯示器)控制器、攝像機控制器、sdram和srom控制器、很多通用的gpio口、sd卡接口等。這些使它能很出色地應用于智能手機的設計中。
在智能手機的硬件架構中,無線modem部分只要再加一定的外圍電路,如音頻芯片、lcd、攝像機控制器、傳聲器、揚聲器、功率放大器、天線等,就是一個完整的普通手機(傳統手機)的硬件電路。模擬基帶(abb)語音信號引腳和音頻編解碼器芯片進行通信,構成通話過程中的語音通道。
從這個硬件電路的系統架構可以看出,功耗最大的部分包括主處理器、無線modem、lcd和鍵盤的背光燈、音頻編解碼器和功率放大器。因此,在設計中,如何降低它們的功耗,是一個很重要的問題。
2 低功耗設計
2.1 降低cpu部分的供電電壓和頻率
在數字集成電路設計中,cmos電路的靜態功耗很低,與其動態功耗相比基本可以忽略不計,故暫不考慮。其動態功耗計算公式為:
pd="ctv2f" (1)
式中:pd為cmos芯片的動態功耗;ct為cmos芯片的負載電容;v為cmos芯片的工作電壓;f為cmos芯片的工作頻率。
由式(1)可知,cmos電路中的功率消耗與電路的開關頻率呈線性關系,與供電電壓呈二次平方關系。對于cpu來說,vcore電壓越高,時鐘頻率越快,則功率消耗越大,所以,在能夠正常滿足系統性能的前提下,盡可能選擇低電壓工作的cpu。對于已經選定的cpu來說,降低供電電壓和工作頻率,能夠在總體功耗上取得較好的效果。
對于主cpu來說,內核供電電壓為1.3 v,已經很小,而且其全速運行時的主頻可以完全根據需要進行設置,其內部所需的其他各種頻率都是通過主頻分頻產生。主cpu主頻fcpu計算公式如下:
在coms芯片上,為了防止靜電造成損壞,不用的引腳不能懸空,一般接下拉電阻來降低輸入阻抗,提供泄荷通路。需要加上拉電阻來提高輸出電平,從而提高芯片輸入信號的噪聲容限來增強抗干擾能力。但是在選擇上拉電阻時,
必須要考慮以下幾點:
a)從節約功耗及芯片的倒灌電流能力上考慮,上拉電阻應足夠大,以減小電流;
b)從確保足夠的驅動電流考慮,上拉電阻應足夠小,以增大電流;
c)在高速電路中,過大的上拉電阻會使信號邊沿變得平緩,信號完整性會變差。
因此,在考慮能夠正常驅動后級的情況下(即考慮芯片的vih或vil),盡可能選取更大的阻值,以節省系統的功耗。對于下拉電阻,情況類似。
2.3.2 對懸空引腳的處理
對于系統中cmos器件的懸空引腳,必須給予重視。因為cmos懸空的輸入端的輸入阻抗極高,很可能感應一些電荷導致器件被高壓擊穿,而且還會導致輸入端信號電平隨機變化,導致cpu在休眠時不斷地被喚醒,從而無法進入睡眠狀態或其他莫名其妙的故障。所以正確的方法是,根據引腳的初始狀態,將未使用的輸入端接到相應的供電電壓來保持高電平,或通過接地來保持低電平。
2.3.3 緩沖器的選擇
緩沖器有很多功能,如電平轉換、增加驅動能力、數據傳輸的方向控制等,當僅僅基于驅動能力的考慮增加緩沖器時,必須慎重考慮,因驅動電流過大會導致更多的能量被浪費掉。所以應仔細檢查芯片的最大輸出電流ioh和iol是否足夠驅動下級芯片,當可以通過選取合適的前后級芯片時應盡量避免使用緩沖器。
2.4 電源供給電路
由于使用雙cpu架構,外設很多,需要很多種電源。僅以主cpu來說,就需要1.3v、2.4v和2.8v電壓,因此需要很多電壓變化單元。通常,有以下幾種電壓變換方式:線性調節器;dc/dc;LDO(低漏失調節器)。其中ldo本質上是一種線性穩壓器,主要用于壓差較小的場合,所以將其合并為線性穩壓器。
線性穩壓器的特點是電路結構簡單,所需元件數量少,輸入和輸出壓差可以很大,但其致命弱點是效率低、功耗高,其效率η完全取決于輸出電壓大小。
]]> 嵌入式系統結合
(1)通常執行特定功能;
(2)以微電腦與外圍構成核心;
(3)嚴格的時序與穩定性要求;
(4)全自動操作循環。
嵌入式系統具有目的性或針對性,其開發是圍繞著產品和產品的特定功能來進行的。它必須最大限度地在硬件和軟件上“量身定做”以提高效率。本文設計的嵌入式系統主要用于金融和稅務類產品。
2 總體設計
2.1 CPU的選擇
本文采用的是Cirrus Logic公司的嵌入式處理器EP9312。
EP9312是一款ARM9系列的處理器,ARM9系列是高性能和低功耗特性方面最佳的硬宏單元。它具有五級流水線,并提供1.1 MI/s/MHz的哈佛結構。而其前代產品ARM7系列處理器則具有嵌入式ICE-RT邏輯,功耗非常低,并提供0.9MI/s/MHz的三級流水線和馮·諾依曼結構。因為本系統主要用于開發先進的計算機終端、機頂盒、高端打印機等產品,所以需要較快的運算速度,而ARM7主要用于對價位和功耗敏感的消費類產品,并且其運算速度相對較慢,所以本設計系統選擇ARM9系列。在ARM9系列CPU中還有EP9307和EP9315。EP9307與EP9312的功能構造基本相同,只少了1個IDE接口,但多了圖形加速的功能。由于金融稅務類產品大多需要較多的GPIO,而與EP9307相比,EP9312可以很容易地設計出較多的GPIO。EP9315在EP9312擁有的功能上再增加了PCMCIA接口和圖形加速功能,但這并不是金融稅務類產品所必需的功能。綜合考慮之后,本系統選擇了EP9312。
2.2 技術指標
經過系統調研并基于產品成本考慮,嵌入式系統的技術指標如下所述:
2.3 系統組成
EP9312已經集成了嵌入式系統所需的許多功能,為了使本設計滿足金融稅務類產品的要求,還增加了如下硬件:SuperI/0器件(包含2個UART、1個并口、2個PS/2接口控制器)、網絡PHY接口器件、接口電平
3 模塊功能描述
3.1 CPU
EP9312的內核是ARM920T,其主頻為200MHz,100 MHz內部總線。有16 KB的指令Cache和16 KB的數據Cache,內部集成了很多功能模塊,其中主要包括:LCD控制器、3個USB Host控制器、3個串口控制器、Ethernet MAC、EIDE、AC’97接口等。EP9312內含MMU,支持TCP/IP協議,也為開發各種字符圖形功能提供了快捷的方法。本設計充分利用了這些內部集成的功能,減少了外圍元件。
3.2 RESET模塊
系統的RESET模塊為系統提供啟動及復位信號,是系統運行的開端。
本系統采用MAX708CSA作為復位器件,設計成用戶重啟的按鈕控制。發出RESET信號送給CPU的RSTOn引腳、Flash模塊、JATG模塊等。另采用一片MAX708CSA作為系統上電的按鈕控制。發出POR信號送給CPU的PRSTn引腳,如圖2所示。
3.3 系統時鐘模塊
系統時鐘模塊的作用是產生20個獨立的時鐘頻率來滿足EP9312不同獨立邏輯部分的要求,所有這些時鐘頻率都來源于外部的一個低頻晶體振蕩器。這樣處理器速率、總線速率、視頻速率就可以不同而且互不影響。
EP9312提供兩個接口接外部晶體振蕩器,其頻率分別為32 kHz(實時時鐘)和14.7456 MHz。
為了獲得足夠高的時鐘頻率,EP9312同時提供兩個PLL,將32 kHz和14.7456MHz頻率提升到足夠高(14.7456 MHz,最大頻率可為400 MHz)。 <!-- 2008-3-1 12:52:37-->
]]>這部分軟件是網絡硬件防火墻實現的關鍵,它主要完成四個方面的工作,即對網絡封包的過濾,日志的記錄并發送,對用戶的報警以及跟PC機的接口。在本系統中我們采用實時操作系統UCOS,配合自己編寫的TCP/IP協議棧來實現對各個網絡層次封包的過濾。
3.1.1 UC/OSII在ARM7下的移植
UCOSII是一個完整、可移植、可固化及可剪裁的占先式實時多任務內核。它用ANSI C編寫,包含一小部分匯編代碼,使之可以供不同架構的微處理器使用。移植該實時操作系統是實現底層軟件的第一步。移植操作系統其實是一件不簡單的事情,它必須要求開發人員對目標硬件平臺有很深的了解;對UCOS的原理有相當的了解;對所使用的編譯器有較深入的了解。只有具備以上三點,才能成功移植該實時操作系統。要移植UCOS,只要編寫三個文件即可,它們分別是:OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM。下面就簡單介紹該移植的實現過程。
第一個是編寫OS_CPU.H。在該文件中主要完成以下幾個方面的工作。首先是幾個數據類型的定義,如INT8U、INT16U、INT16S等,之所以這樣做是因為ANSI C中并沒有明確定義short、int等數據類型的實際長度,它與處理器的類型有關,隱含著不可移植性。代之以移植性強的INT8U、INT16U等數據類型,即直觀又可移植。其次就是完成兩個中斷處理宏的定義,一個是關中斷宏OS_ENTER_CRITICAL( ),另一個就是開中斷宏OS_EXIT_CRITICAL( )。考慮到不是所有版本的C語言都支持C語言級的開關中斷,所以編寫此宏來實現C語言級的開關中斷。最后就是定義棧生長方向和棧的寬度,它們分別用變量OS_STK_GROWTH和OS_STK。
第二個是編寫OS_CPU_C.C。在該文件中主要完成函數OSTaskStkInit( )的編寫,該函數主要完成任務堆棧的的初始化工作,如初始化各個寄存器的狀態,以及用戶添加的一些任務變量等。
第三個是編寫OS_CPU_A.ASM。該文件的是移植的關鍵所在,在本文件中必須完成四個函數的編寫工作,它們分別為OSIntCtxSw( ),OSCtxSw( ), OSStartHighRdy( )和OSTickISR( )。其中前兩個函數是重中之重,它們必須用匯編語言編寫,主要完成任務環境的切換工作。
<!--ecms.*-->在ARM7硬件平臺下移植UCOSII要注意幾個問題,首先是在移植系統函數或者系統宏時要盡量的調用軟件中斷,這樣有助于簡化移植工作;其次在初始化任務堆棧時,可以添加任務變量OSEnterSum這個變量來監視中斷開關次數,這是關于移植的一個技巧;最后要注意為了方便編寫中斷服務程序,在移植時還要提供相應的匯編宏來簡化用戶層代碼的編寫。
3.1.2 TCP/IP協議棧在UCOSII下的實現
TCP/IP協議分為四層,分別為應用層、傳輸層、網絡層,物理層。本系統中物理層主要包括8019的驅動程序,網絡層包括IP協議和ARP協議,傳輸層主要包括TCP協議和UDP協議,應用層主要包括FTP、HTTP、SNMP和一些用戶應用程序。由于該協議實現很復雜,這也是本系統實現的難點,下面給出該協議棧實現的函數框圖:<!--工控自動化,autooo.net-->
1 引言
伴隨著21世紀的曙光,計算機邁入了其另一個充滿機遇的階段—后PC時代。不知不覺中,市場上越來越多的消費者開始接受嵌入式系統的數字化產品,如:像手機、PDA、車載GPS系統、數控機床、網絡冰箱等。它們功耗低,功能強。而反觀在我們現今的現場監控設備或者是傳統的單片機,它們功能薄弱,開發難度大,或者是工控機,他們與PC類似,體積龐大,價格昂貴。這些與消費市場上的功能強大的嵌入式系統的發展是不相稱的,因此本文提出了一種搭建嵌入式監控工作站的快速方法。
2 嵌入式系統結構
嵌入式系統是以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。它一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及應用程序四個部分組成。下面我們依次介紹:
2.1 嵌入式硬件
近些年來,隨著微電子技術和信號處理技術的發展[1>,出現了許多性能優良的嵌入式硬件,例如:
* 全美達(Transmeta)公司Crusoe處理器
Crusoe Special Embedded(特別嵌入,SE)處理器是Transmeta現有Crusoe 5500和5800微處理器的一種版本,它經受了24小時的高溫老化(burn-in)測試過程,可以在100℃的溫度下工作10年。Transmeta保證五年的供貨和支持。該處理器小體積和低功耗的特點使其頗具優勢。其標準的667MHz CPU消耗功率為6.1瓦,低功耗版本消耗5.1瓦。是嵌入式微處理器的理想選擇。
* National semiconditong的geode系列gx1,gx2
尤其是最新的gx2,與其協同芯片Geode CS5535搭配,便能為資訊家電產品提供完整的解方案,其功能特色包括:嵌入式SDRAM 雙倍資料傳輸率(DDR)記憶體控制器、延伸圖像處理支援、4個(USB)以及一嵌式IDE控制器。Geode GX2是目前專為資訊家電所的處理器中耗電量最低的產品,其耗電量只有業界目前其他X86架構同級處理器的一半。Geode GX2能大幅降低功率等級與耗電量,主要是得利于美國國家半導體革命性的GeodeLink?系統架構、分段式硬件功率周期與降壓處理。Geode GX2處理器加上協同芯片后的標準耗電量低于2瓦特,而在串流媒體的應用上,即使加上協同晶片,整體耗電量也只需要3W。
* Via公司的eden處理器
EDEN的全稱是嵌入式系統平臺(embeded system p.latform),via的eden平臺包括了低功耗、高性能的第六代處理器核心,高整合度的北橋芯片以及vt8231南橋芯片。基本的eden平臺已內嵌AGP 2x/4x的3d繪圖加速核心,與輸出入控制,網絡支持及多媒體音效功能,而客戶還可根據市場需求,彈性的選擇外圍芯片產品,進一步增強usb2.0,高速網絡連接等應用功能,其平臺耗電量為6瓦無需風扇,有完整的操作系統支持。
2.2 嵌入式硬件外圍擴展結構
現今的嵌入式體系結構主要以pc-104總線結構居多。這是一種十分緊湊(90x90mm)、自棧式、模塊化的結構。這種總線結構在硬體和軟體上,與標準臺式機pc(pc/at)體系完全兼容,可以利用豐富的臺式機軟件資源,這包括操作系統、驅動程序、功能庫和開發工具,從而將大大降低開發成本,減少風險及縮短開發周期。
2.3 嵌入式操作系統
現今嵌入式操作系統有許多,真正有影響的有Vxwork,Linux,Win CE。Vxwork功能強大,但其使用費用實在是太高,且開發環境復雜。而Linux雖然是免費的,但市場出現的Linux版本實在太多,無法主推一個比較完善,標準的Linux解決方案,缺乏強有力的商業公司的推動,無法提供長期的服務保證和獲得廣大硬件廠商的支持。而由微軟(Microsoft)推出的嵌入式操作系統Win CE4.2,在現今的嵌入式系統大戰中越來越突出。其主要特點如下[2>:
* 功能界面美觀 Windows窗口,用戶熟悉,方便易用;
* 改進的實時操作系統內核 最小配置可小至200KB,可以滿足工業設備實時性的要求;
* 編程方便 與Windows API的良好銜接,使Windows 編程人員可以很快進入CE編程,降低開發成本、縮短投放市場時間;
* NET Compact Framework 實現硬件與操作系統無關性;
* 集成ipv6 提供無限、低廉但先進的網路和應用系統;
* 開放源代碼 2003年4月9日,MS公司公開Windows CE操作系統軟件部分源代碼,以反擊免費軟件Linux;
* 最后一點,微軟公司強大的技術創新能力和市場開拓能力。提供長期的服務保證和技術支持能力
2.4 應用程序
應用程序的開發我們選用北京昆侖通態自動化軟件科技有限公司MCGS嵌入版組態軟件。MCGS嵌入版組態軟件是針對Windows CE實時多任務操作系統的組態軟件。用戶只需要通過簡單的組態就可構造自己的應用系統,從而將用戶從繁瑣的編程中解脫出來,使用戶在使用嵌入式系統時更加得心應手。MCGS嵌入式體系結構分為組態環境和運行環境兩部分,組態環境相當于一套完整的工具軟件,在PC機上運行,用簡單的模塊化設計幫助用戶構造自己的應用系統,組態好的應用系統通過以太網或串口下載到嵌入式操作系統Windows CE中實時運行。嵌入版組態軟件的按功能剪裁的特性,以及其內嵌的實時多任務操作系統,可以在保證整個嵌入系統小體積、低成本、高實時性、高可靠性的同時,方便不具備嵌入式軟件開發經驗的用戶在極短的時間內,用嵌入版組態軟件快速開發完成一個嵌入式應用系統,縮短嵌入式產品進入市場的速度。
3 應用系統開發
我們的工程是一個智能家居的遠程監控系統,通過它能實現以下功能:
(1) 對電氣設備的控制和管理:能遠程控制燈、熱水器以及空調等電氣設備;
(2) 家居安全:家庭內部出現的緊急情況(如盜搶和火災 )能自動向主人手機或物業管理中心報警。家庭成員的醫療求助信息能遠傳到社區醫療中心。
(3) 能源管理:三表自動顯示并將數據抄送到物業管理中心,免除物業人員的入室干擾,定時開關供暖通路及天然氣,節約費用和保證安全。
3.1 系統硬件
系統硬件我們經過考慮采用臺灣研華科技公司的嵌入式工控主板PCM-3350和PCM-3618多串口卡,PCM-3350是一塊96mm x 90mm英寸的基于pc-104總線結構的主板,體積最小,但在功能上卻具備了一臺完備的電腦所要求的所有功能。內置美國國家半導體公司的Embedded Low power Geode GX1-233 MHz processor,自帶10/100Base-T 網卡。板載 LCD 控制器支持 36 位圖像,帶有2個串口和1個并口、1個軟驅接口、1個CF卡電子盤接口和1個IDE接口,主板功耗小于10W,由于本用戶系統外界設備較多,所以又選用一塊基于PC-104總線,有4個標準的RS232串口的PCM-3618多串口卡。
系統配置方式是將3618插到3350主板上,設置好3618的中斷和基地址,然后用WIN CE的開發平臺Plateform Builder 4.2來進行相應的CE操作系統配置>,由于微軟提供的標準串口驅動不支持多串口共享中斷,而系統又沒有足夠的中斷供多串口使用,所以必須開發相應的可共享中斷的多串口驅動。有了串口驅動,將其加入Plateform Builder 4.2的用戶組件庫中,然后再相應的加入顯卡,并口,USB,鼠標鍵盤驅動,以及一些應用服務如:MFC類庫,硬盤驅動,USB各功能模塊(打印,存儲等),加入觸摸屏用于現場人機交互,加入Web server用于遠程網絡訪問,加入局域網上網,撥號上網功能。這些都確定后,然后配置相應的內存和上面各種功能的相應注冊表鍵值,然后編譯操作系統鏡像,下載,進行相應的操作系統功能測試就可以了。
3.2 用戶工程
通過MCGS嵌入版組態軟件在上位機來對用戶工程進行組態,用戶工程各個功能的實現通過如下實現:
(1) 對電氣設備的控制和管理, 通過mcgs軟件的model遠程撥號來控制燈、熱水器以及空調等電氣設備的開關狀態。采用研華4060模塊來控制各個器件的開關狀態,組態過程中加入4060模塊驅動,加入modeml設備,設定遠程撥號的一些信號指令,用這些信號通過modeml作用到工作站,工作站分析這些信號,發出相應的控制信號來控制4060模塊的輸出信號來間接控制各個電器狀態。以次實現諸如在炎熱的夏天可以在到家前的半小時打開空調,等一回到家里就可以享受到舒適的家居生活。
(2) 家居安全,通過家庭內部的實時信號采集監控設備來實時監控家庭內部各個環境信號,然后通過mcgse軟件的網絡數據同步將數據同步到物業管理中心的遠程監控計算機上。在遠程計算機上運行我們的mcgs通用版組態軟件,組態時設置好各個設備的報警參數。實際運行時它可對下位機同步過來的數據進行分析、統計,如果有異常數據可立即進行報警。如此,物業管理中心就可以實現遠程監控家居情況。
(3) 能源管理,通過用戶工程對各種智能電表、智能水表參數等智能設備進行通訊,對采集的數據進行統計,并定期將數據同步到物業管理中心的遠程監控機上,從而實現遠程抄表。此外,當用戶該交水費、電費等費用時,物業管理中心亦可通過其遠程監控機向用戶的工作站下位機發送相應信號進行報警,提醒用戶。實現高效的能源管理。
本系統功能結構圖如如圖1所示:
開發結束后,通過網線將工程直接下載到PCM-3350的CF卡電子盤上即可。系統啟動后自動進入運行工程。
4 結束語
本文簡單介紹了嵌入式系統軟硬件的最新進展,并結合MCGS嵌入版組態軟件的功能,對其在智能家居中的應用進行了闡述,此方法構造的系統模塊集成度高,體積小,可靠性高,在智能家居工程中有很好的應用。
關鍵詞:嵌入式系統
嵌入式實時操作系統(RTOS) 硬件抽象層(HAL)
板級支持包(BSP)
隨著計算機硬件技術的快速發展,出現了越來越多的便攜設備和智能設備。這些設備中通常包含控制用的CPU和相應的操作系統;這類特殊的計算機系統叫做嵌入式實時系統。嵌入式實時系統以其簡潔高效等特點在計算機、通信等領域中廣泛使用。
由于嵌入式實時系統應用環境的特殊性,因此在設計實現過程中存在著許多特殊問題。其中,操作系統及其他系統軟件模塊與硬件之間的接口形式是嵌入式實時系統的主要特征和系統設計過程中的必需環節,也是影響嵌入式系統應用前景的關鍵問題。經過近些年的發展,隨著通用嵌入式操作系統技術的日趨成熟和應用的不斷擴大,一種統一的接口形式得到廣泛的認可和應用,這就是通常所說的板級支持包,即BSP。
1 嵌入式系統硬件抽象層的原理
1.1 硬件抽象層的引入
嵌入式實時系統作為一類特殊的計算機系統自底向上包含三個部分,如圖1所示。
(1)硬件環境:是整個嵌入式實時操作系統實時應用程序運行的硬件平臺;不同的應用通常有不同的硬件環境;硬件平臺的多樣性是嵌入式系統的一個主要特點。
(2)嵌入式實時操作系統——RTOS:完成嵌入式實時應用的任務調度和控制等核心功能,具有內核較精簡、可配置、與高層應用緊密關聯等特點。嵌入式操作系統具有相對不變性。
(3)嵌入式實時應用程序:運行于操作系統之上,利用操作系統提供的實時機制完成特定功能的嵌入式應用。不同的系統需要設計不同的嵌入式實時應用程序。
由于嵌入式系統應用的硬件環境差異較大,因此,如何簡潔有效地使嵌入式系統能夠應用于各種不同的應用環境是嵌入式系統發展中所必須解決的關鍵問題。
經過不斷的發展,原先嵌入式系統的三層結構逐步演化成為一種四層結構。這個新增加的中間層次位于操作系統和硬件之間,包含了系統中與硬件相關的大部分功能。通過特定的上層接口與操作系統進行交互,向操作系統提供底層的硬件信息;并根據操作系統的要求完成對硬件的直接操作。由于引入了一個中間層次,展蔽了底層硬件的多樣性,操作系統不再直接面對具體的硬件環境。而是面向由這個中間層次所代表的、邏輯上的硬件環境。因此,把這個中間層次叫做硬件抽象層HAL(Hardware
Abstraction Layer)。在目前的嵌入式領域中通常也把HAL叫做板級支持包BSP(Board
Support Package)。圖2顯示了引入HAL以后的嵌入式系統結構。BSP的引入大大推動了嵌入式實時操作系統的通用化,從而為嵌入式系統的廣泛應用提供了可能。
1.2 BSP的特點與功能
HAL/BSP的提出使通用的嵌入式操作系統及高層的嵌入式應用能夠有效地運行于特定的、應用相關的硬件環境之上,使擔任系統和應用程序能夠控制和操作具體的硬件設備,完成特定的功能。因此,在絕大多數的嵌入式系統中,BSP是一個必不可少的層次。
由于在系統中的特殊位置,因此BSP具有以下主要特點:
(1)硬件相關性
因為嵌入式實時系統的硬件環境具有應用相關性,所以,作為高層軟件與硬件之間的接口,BSP必須為操作系統提供操作和控制具體硬件的方法。
(2)操作系統相關性
不同的操作系統具有各自的軟件層次結構,
因此,不同的操作系統具有特定的硬件接口形式。
在實現上,BSP是一個介于操作系統和底層硬件之間的軟件層次,包括了系統中大部分與硬件相關的軟件模塊。在功能上包含兩部分:系統初始化及與硬件相關的設備驅動。
2 BSP的設計與實現
為實現上述兩部分功能,設計一個完整的BSP需要完成兩部分工作:
(1)設計初始化過程,完成嵌入式系統的初始化;
(2)設計硬件相關的設備驅動,完成操作系統及應用程序對具體硬件的操作。
2.1 嵌入式系統初始化以及BSP的功能
嵌入式系統的初始化過程是一個同時包括硬件初始化和軟件(主要是操作系統及系統軟件模塊)初始化的過程;而操作系統啟動以前的初始化操作是BSP的主要功能之一。由于嵌入式系統不僅具有硬件環境的多樣性,同時具有軟件的可配置性,因此,不同的嵌入式系統初始化所涉及的內容各不相同,復雜程度也不盡相同。但是初始化過程總是可以抽象為三個主要環境,按照自底向上、從硬件到軟件的次序依次為:片級初始化、板級初始化和系統級初始化。
(1)片級初始化:主要完成CPU的初始化,包括設置CPU的核心寄存器和控制寄存器,CPU核心工作模式以及CPU的局部總線模式等。片級初始化把CPU從上電時的缺省狀態逐步設置成為系統所要求的工作狀態。這是一個純硬件的初始化過程。
(2)板級初始化:完成CPU以外的其他硬件設備的初始化。除此之外,還要設置某些軟件的數據結構和參數,為隨后的系統級初始化和應用程序的運行建立硬件和軟件環境。這是一個同時飲食軟硬件兩部分在內的初始化過程。
(3)系統級初始化:這是一個以軟件初始化為主的過程,主要進行操作系統初始化。BSP將控制轉交給操作系統,由操作系統進行余下的初始化操作。包括加載和初始化與硬件無關的設備驅動程序,建立系統內存區,加載并初始化其他系統軟件模塊,比如網絡系統、文件系統等;最后,操作系統創建應用程序環境并將控制轉交給應用程序的入口。
經過以上三個層次的操作,嵌入式系統運行所需要的硬件和軟件環境已經進行了正確設置,從這里開始,高層的實時應用程序可以運行了。
需要指出:系統級初始化不是BSP的工作。但是,系統級初始化成功與否的關鍵在于BSP的前兩個初始化過程中所進行的軟件和硬件的正確設置,而且系統級初始化也是由BSP發起的。因此,設計BSP中初始化功能的重點主要集中在前兩個環節。圖3顯示了嵌入式系統的初始化過程。
2.2 硬件相關的設備驅動程序
BSP另一個主要功能是硬件相關的設備驅動。與初始化過程相反,硬件相關的設備驅動程序的初始化和使用通常是一個從高層到底層的過程。
盡管BSP中包含硬件相關的設備驅動程序,但是這些設備驅動程序通常不直接由BSP使用,而是在系統初始化過程中由BSP把它們與操作系統中通用的設備驅動程序關聯起來,并在隨后的應用中由通用的設備驅動程序調用,實現對硬件設備的操作。設計與硬件相關的驅動程序是BSP設計中另一個關鍵環節。圖4顯示了調用設備驅動程序時系統各個層次之間的關系。
3 設計實現BSP的方法
3.1 設計實現BSP的一般方法
因為BSP同時具硬件相關性和操作系統相關性,是一個介于硬件與軟件之間的中間層次。因此BSP的開發不僅需要具備一定的硬件知識,例如CPU的控制、中斷控制器的設置、內存控制器的設置及有關的總線規范等;同時還要求掌握操作系統所定義的BSP接口。另外,在BSP的初始化部分通常會包含一些匯編代碼,因此還要求對所使用的CPU匯編指令有所了解,例如X86的匯編和PowerPC的匯編指令等;對于某些復雜的BSP還要了解所使用的開發工具,例如GNU、Diab
Data等。
總之,開發BSP要求具備比較全面的軟、硬件知識和必要的編程經驗。由于設計實現的復雜性,在設計特定BSP時很少從零開始,而是采用以下兩種快捷方法。
方法一:以經典BSP為參考
在設計BSP時,首先選擇與應用硬件環境最為相似的參考設計,例如Motorola的ADS系列評估板等。針對這些評估板,不同的操作系數都會提供完整的BSP,這些BSP是學習和開發自己BSP的最佳參考。針對具體應用的特定環境對參考設計的BSP進行必要的修改和增加,就可以完成簡單的BSP設計。
下面以設計pSOS操作系統的BSP初始化過程為例。PSOS系統初始化的層次非常清晰,與初始化過程相對應的是以下三個文件:
1)init.s:對應于片級初始化;完成CPU的初始化操作,設置CPU的工作狀態;
2)board.c:對慶于板級初始化;繼續CPU初始化,并設置CPU以外的硬件設備;
3)sysinit.c:對應于系統級初始化;完成操作系統的初始化,并啟動應用程序。
以參考BSP為切入點,針對初始化過程的具體環節,在對應的文件中進行某些參數的修改及功能的增加就可以實現BSP的系統初始化功能。
因為BSP具有操作系統相關性,因此,不同的操作系統會使用不同的文件完成類似的初初化操作。
BSP中硬件相關的設備驅動程序隨操作系統的不同而具有比較大的差異,設計過程中應參照操作系統相應的接口規范。
方法二:使用操作系統提供的BSP模板
除了提供某些評估板的BPS以外,很多操作系統還提供相應的BSP模板(一組需要編寫的文件),根據模板的提示也可以逐步完成特定BSP的設計。
相比較而言,第一種方法最為簡單快捷。因此,在實際的設計過程中,通常以第一種方法為主,同時結合使用第二種方法。
在設計實現BSP兩部分功能時應采用以下兩種不同方法:
(1)“自底向上”地實現BSP中的初始化操作:從片級初始化開始到系統初始化;
(2)“自頂向下”地設計硬件相關的驅動程序:從API開始,到操作系統內部的通用設備驅動程序,再到BSP內部的硬件相關的設備驅動程序,最后到底層具體的硬件設備。
3.2 BSP設計方法的不足與改進
從以上介紹的兩種設計方法可以看出:目前BSP的設計與實現主要是針對某些特定的文件進行修改。這種方法比較原始,它不僅要求設計人員了解BSP的各個組成部分及所對應的文件和相關參數的具體含義,還要求具備比較全面的軟硬件知識。直接修改相關文件容易造成代碼的不一致性,增加軟件設計上的隱形錯誤,從而增加系統調試和代碼維護的難度。隨著底層硬件功能的日益復雜,開發BSP所涉及的內容也越來越多。這種原始方法的足之處也越來越突出。進行BSP設計方法和工具的創新成為一個日益突出的問題。
解決這個問題的一個可行辦法是:設計實現一種具有圖形界面的BSP開發設計向導,由該向導指導設計者逐步完成BSP的設計和開發,并最終由向導生成相應的BSP文件,而不再由設計人員直接對源文件進行修改。這樣不僅可以大大縮短BSP的開發周期,減少代碼不一致性,而且系統排錯、調試以及維護都很簡單。因此,這種方法是目前嵌入式領域中BSP設計的一個趨勢和研究方向。但是,由于嵌入式系統硬件環境的多樣性,設計向導的實現仍需解決若干關鍵問題。為此,作者仍將在這一方面作進一步研究。
]]>本語音信號處理平臺需要考慮以下幾個方面的設計要求。在運算量方面,本平臺上運行的幾種語音編碼算法都具有比較高的運算復雜度,經過CCS的仿真測試結果表明,至少要求DSP芯片有50MIPS的處理能力。在接口設計方面,搭載本聲碼器模塊的通訊平臺定義了如表1所示的接口管腳,其中VIN和VOUT分別連接到通訊平臺的話筒和聽筒上的輸入和輸出話音,PTT連接到話筒的按鈕上,按下PTT表示請求通話。TXD和RXD分別是發送和接收的數字語音碼流信號,RTS和CD分別是發送和接收碼流指示,為低電平的時候表示碼流有效。TXC為系統的同步時鐘。在功耗方面,由于是手持式設備,要求采用低功耗設計,以延長電池的使用時間。另外,設計系統的安全性也是一個需要考慮的因素。
基于以上幾項設計要求,以及以前設計的原型系統原理[7],我們提出了一個基于TMS320VC5510A2和MSP430F149的設計方案。[1] 5510A2是德州儀器公司的55系列DSP的最高端的產品,這個系列的DSP是特別針對手持式終端設備應用場合設計的,同等條件下其內核的功耗僅為54系列DSP的三分之一,而且具有更高的代碼執行效率,其指令也與54系列的相互兼容,可以很方便的進行代碼的移植。5510A2的最高數字信號的處理能力為200MIPS,能夠很好的滿足本平臺對運算的要求。[6]MSP430F149是德州儀器生產的一款極低功耗的16位RISC結構的單片機,我們用他來做為主控芯片輔助DSP完成程序加載和系統加密的功能。圖1給出了該硬件平臺的總體框圖。
如圖所示,當PTT被按下則表示請求通話,話筒輸入的模擬話音VIN通過一個放大電路放大之后輸入語音CODEC芯片TLV320AIC11,TLV320AIC11內的模數轉換器將其轉換成16bit的線性PCM格式并通過DSP的McBSP0口傳送到DSP內部接收語音緩沖區,DSP在緩沖區內的數據在積累到一定幀長之后啟動編碼算法編成特定碼率的碼流。編好的碼流被送入另一發送比特流緩沖區緩沖。該緩沖區內的信號在同步時鐘TXC的上升沿被送到MODEM的調制模塊調制并發射出去。同時,DSP檢測MODEM的CD信號,當CD信號有效(低電平)時,在同步時鐘TXC的下降沿鎖存RXD上的數據并送入DSP內的接收比特流緩沖區。當接收比特緩沖區內的數據積累到一定長度時,DSP啟動解碼程序將其解碼成16bit的PCM語音。該語音通過McBSP0口被送入TLV320AIC11,TLV320AIC11內的數模轉換器將其轉換成模擬的語音信號送入聽筒。
目前,在嵌入式處理器市場上,arm系列處理器以其高性價比,價格低廉廣受用戶青睞,而且許多國際知名的芯片生產廠家都已經購買了arm芯片設計許可并開 始大量生產針對特定應用領域的arm芯片,芯片種類十分豐富。arm公司專注于芯片內核設計,其內核功耗少、成本低、功能強,特有的16位/32位雙指令 集,存儲器比等價32位代碼節省近35%,16位的thumb狀態和正常的arm狀態之間的開銷為零。目前arm嵌入式處理器有5個產品系列-arm7、 arm9、arm9e、arm10和securcore。
arm7系列是低功耗的32位核,最適合應用于對價位核功耗敏感的產品,可分為應用于實時環境的arm7tdmi、arm7tdmi-s以及適用于開放平 臺的arm720t核適用于dsp運算及支持java的arm7ej等。arm7采用三級流水線和馮-諾依曼結構,提供0.9mips/mhz的性能。迄 今為止,arm7tdmi是世界上應用最廣泛的32位嵌入式處理器。
arm9系列采用5級流水線和哈佛結構,提供1.1mips/mhz的性能,是高性能和低功耗的硬宏單元。arm920t和arm922t具有全性能的 mmu、指令和數據cache以及高速amba總線接口。
arm10系列硬宏單元,帶有dsp擴展、embeddedice-rt、全性能 mmu、cache和64位ahb指令和數據接口,采用六級流水線,提供1.25mips/mhz的性能,比同等的arm9器件性能提高50%。
嵌入式操作系統通常分為商用型和免費型兩類。商用的嵌入式操作系統有windriver(風河)的vxworks和psos、美國ati的nucleus plus以及microsoft(微軟)的windows ce等。免費的嵌入式操作系統有嵌入式ulinux、uc/os等。商用型操作系統功能穩定、可靠,有完善的技術支持和售后服務,但往往價格昂貴。免費型操作系統具有源代碼公開和無需版稅的優勢,但也存在著開發困難的不足。
uclinux是一種優秀的嵌入式linux版本,繼承了標準linux的優良特性,并針對嵌入式處理器的特點而設計,內嵌網絡協議、支持多種文件系統, 開發者可以利用標準linux先驗知識等優勢。其編譯后的文件可控制在幾百k量級。uclinux具有對多種文件系統的支持能力,而且內嵌了tcp/ip 協議,非常適合于應用在工控領域。uclinux已經成功移植到多種像s3c4510b這樣不帶mmu的嵌入式微處理器平臺上,并在穩定性和其他方面都有上佳表現。更為重要的是uclinux具有完整的tcp/ip協議,可直接在其基礎上進行應用層協議開發,大大加快軟件開發進程。當然該系統也并非十全十美,它的非實時性就使應用受到一定的限制,不過這點可以通過修改內核來彌補。uclinux的基本架構如圖1所示:
圖1 uclinux基本結構
]]>隨著現代控制理論、電力電子技術、計算機控制技術和傳感器技術的發展,整個拖動領域正在進行一場革命,交流電機的調速理論取得了突破性的進展,交流傳動取代直流傳動已成為不可逆轉的趨勢。變頻器以其節能顯著、過載能力強、調速精度高、響應速度快、保護功能完善、使用和維護方便等優點在交流傳動領域的應用將越來越廣泛。本文研究了一種基于嵌入式系統的網絡變頻器設計過程。
2 變頻器的硬件設計
2.1 主電路設計
變頻器根據主電路的設計不同,可以分為交-交、交-直-交變頻器和電壓型、電流型變頻器,它們均有各自的特點。本文設計的變頻器屬于交-直-交電壓型,它的主電路由三相全波整流、電容濾波和智能功率模塊PM20CSJ060所構成,如圖1所示。
PM20CSJ060內部集成6個IGBT、柵極驅動電路、欠電壓、過流、過熱、短路等保護電路以及故障信號輸出電路。P, N分別為直流輸入正負端;U, V, W為三相交流電壓輸出端;VUP1~VUPC, VVP1~VVPC, VWP1~VWPC, VN1~VNC是4組獨立的驅動電源,前3組分別供給U, V, W 3個上橋臂元件,第4組電源供給3個下橋臂元件和制動回路元件;UP, VP,WP, UN, VN, WN分別為6個IGBT的基極驅動輸入信號,它們都是低電平有效的電平信號,與外部控制電路之間通過光電隔離;F0是IPM模塊內故障檢測電路的輸出信號,當其為低電平時,表示模塊發生了過流、短路、欠電壓或過熱中的某種故障,它只是向外部控制電路提供指示信號,即使外部控制電路不采取措施,模塊也會通過自保護電路封鎖基極驅動信號,從而將自己保護起來。由于PM20CSJ060具有自保護功能,故不需要在整個系統中為所有的IGBT提供過流、過壓、過熱保護電路了。
2.2 控制電路設計
變頻器控制電路以ARM單片機LPC2292為控制核心,主要由電源電路、交流電壓電流檢測電路、直流電壓檢測電路、故障檢測與處理電路、PWM脈沖輸出電路、LCD顯示和鍵盤輸入電路等構成。
1、電源電路
控制電路所需的電源除了4組IGBT驅動電源 15V以外,單片機LPC2292本身也需要工作電源,其CPU內核需要 1.8V電源;I/O端口需要 3.3V電源。因此控制電路需要3種電壓的電源。4組 15V的電源我們是通過4個三端穩壓器LM7815來實現的;而 1.8V和 3.3V電源則利用三端穩壓器LM7805和LDO芯片(低壓差電源芯片)共同來實現。
2、交流電流電壓檢測電路
交流側的每相電流檢測采用的是TA17系列電流互感器TA17-04,由運算放大電路將互感器輸出的電流信號轉換成對應的電壓信號,供單片機采樣。圖2(a)所示的是其中A相的電流檢測電路。TA17-04的輸入電流范圍為0~40A,輸出電流范圍為0~20mA,而單片機的采樣電壓范圍為0~3V,所以取反饋電阻Rf1=150Ω。另外圖中的電容Cr,和可調電阻r1用來補償相移。
3、直流電壓檢測電路
直流電壓檢測是通過取濾波電容兩端電壓,經過電阻分壓后轉換成0~5V電壓信號,然后經過線性光電耦合器6N138整定為0~3V的電壓信號,通過電壓跟隨器輸出供單片機A/D通道采樣。
4、故障檢測與處理電路
PM20CSJ060有自保護功能,當出現過流、欠壓、短路或過熱時,IMP的柵極驅動單元就會關斷電流并輸出一個故障信號(FO);當U, V或W相的任一個上橋臂出現故障時,也會從相應的輸出端輸出故障信號,另外系統增加的過壓/欠壓保護電路也有兩個故障輸出端。所有這些故障信號都是低電平有效,因此我們可以通過一個與門將這些故障輸出端相與后送到單片機的中斷口,不過有些端口在與之前先要進行光耦隔離。
5、PWM脈沖輸出電路
驅動IPM內部的六路IGBT的PWM脈沖先是從LPC2292內部PWM脈寬調制器輸出的,然后通過光耦隔離后再送到IMP的六路脈沖輸入端。
2.3 保護電路的設計
雖然PM20CSJ060有過流、欠壓、短路或過熱等自保護功能,但為了提高系統的可靠性和更好地保護IGBT,我們還是增加了一套快速而準確的保護環節以防止各種故障的發生對系統造成的損壞。
1、欠壓/過壓保護電路
由于IGBT集電極與發射極之間的耐壓和承受反向壓降的能力有限,而電網的電壓波動非常大,從而會導致直流回路過壓或欠壓,因此要設置直流電壓欠壓/過壓保護電路,以保護IGBT和其他元件不被損壞。系統設計的欠壓/過壓保護電路,如圖3所示。圖中6N138為一個線性光電隔離器,輸出電壓信號與直流回路電壓成正比,當直流回路電壓過低時,從6N138的VO端輸出一個較低電壓,與臨界欠電壓值相比較,小于則經比較器LM393比較后輸出低電平的欠壓故障信號;當直流回路電壓過高時,從6N138的VO端輸出一個較高電壓,與臨界過電壓值相比較,大于則經比較器LM393比較后也輸出低電平的過壓故障信號。將這兩個信號通過與門送到單片機的中斷口,單片機響應中斷就可以進行相應的處理了,從而起到欠壓/過壓保護作用。
2、限流起動保護電路
此電路是用來防止在電機起動過程中,電容充電電流過大而損壞整流管。當電機起動時,起動電流很大,為了保護整流管,在主電路上串了一個限流電阻R1,定時15s后,單片機就控制繼電器將常開觸點閉合,使限流電阻R1短路,結束限流起動過程,進入正常運行狀態。
3、泵升電壓保護電路
當電機負載進入制動狀態時,反饋電流將向中間直流回路電容充電,導致直流電壓上升,產生所謂的泵升電壓。如果不對此電壓進行限制,它將造成IGBT的永久損壞。產生泵升電壓是電機制動過程不可避免的現象,為此要給制動過程提供一條能量釋放路徑。
3 變頻器以太網接口電路的硬件設計
從硬件的角度看,以太網接口電路主要由MAC控制器和物理層接口(PHY)兩大部分構成,目前常見的以太網接口芯片,如RTL8019, RTL8029, RTL8039, CS8900等,其內部結構也主要包含這兩部分。本文在設計以太網接口電路時,采用RTL8019AS作為以太網接口芯片,接口電路的電路圖如圖4所示,其中FC-518LS是網絡隔離變壓器。
前面講過變頻器控制電路的設計,其中實現整個系統控制功能的是微處理器LPC2292。由圖4可以看到,實現此變頻器的以太網接口功能,采用的微處理器仍然是LPC2292。那么也就是說,LPC2292除了實現SVPWM波形的產生以外,還要負責與外界網絡的數據交換。就網絡而言,LPC2292主要是對網卡芯片RTL8019AS進行監控,通過此芯片將數據發送到以太網上或從以太網上接收數據,然后通過以太網連接到Internet,從而實現真正的嵌入式TCP/IP設備。
4 基于μC/OS-II的系統整體軟件的設計
μC/OS-II是一個占先式、多任務的實時操作系統,它可以管理64個任務,除8個系統任務外,應用程序最多可以有56個任務。若采用μC/OS-II來實現某系統的軟件設計,通常是把這整個系統分成若干個部分來完成,每個部分可以當成一個單獨任務,然后在μC/OS-II的統一管理下來協調各部分的工作,從而達到整個系統的軟件設計要求。本文在軟件設計時,就是采用μC/OS-II框架,把系統軟件模塊化,分成多個任務來共同完成。
在一般32位ARM應用系統中,軟件大多數采用C語言進行編程,并且以嵌入式操作系統為開發平臺,這樣就大大地提高了開發效率和軟件性能。為了能夠進行系統初始化,采用一個匯編文件作啟動代碼是常用的做法,它可以實現堆棧初始化、系統變量初始化、中斷系統初始化、I/O初始化、地址重映射等操作。啟動代碼是芯片復位后進入C語言的main()函數前執行的一段代碼,主要是為運行C語言程序提供基本運行環境。
本文設計的變頻器,其控制核心是ARM單片機LPC2292,根據系統的功能要求,它主要完成以下工作:(1) 鍵盤設定(Task1):通過鍵盤可以設定一些參數,如電機工作頻率、系統時間等。(2) 脈沖產生(Task2):生成SVPWM波形,驅動IGBT。(3) 數據采樣與處理(Task3):采樣變頻器直流側電壓電流、交流側電壓電流等,并進行相應的算法處理。(4)偵聽服務(Task4):偵聽服務端口,當客戶端要求連接時,提供給客戶端預先設計好的網頁,此網頁中含有本系統的一些實時數據;或者客戶端PING本地WEB服務器時,做出回顯應答。(5) 故障處理(Task5):當有故障發生時,根據故障類型進行相應的處理。(6) LCD顯示(Task6):顯示一些系統參數。
為此,把LPC2292要實現的功能分成6個部分,每個部分用μC/OS-II中的一個任務來實現,這六個任務分別為Task1、Task2, Task3, Task4, Tasks, Task6。
]]>利用生物識別設備對生物特征進行取樣,可以提供全方位的安全監測保障。生物識別提取其唯一的特征并將其轉化成數字代碼,MC +VHW+AHW-在該配置中,并進一步將這些代碼組成特征模板,●TMS320C54x處理器;人們同識別設備交互進行身份認證時,基于C6000的嵌入式系統一般采用引導三片上程序存儲器執行的工作方式,識別設備獲取其特征并與數據庫中的特征模板進行比對,然后再跳轉至內核入口處運行。以確定是否匹配,該任務執行一次后刪除,從而決定接受或拒絕該人。使用例化調用了S盒。而在眾多的用于身份驗證的生物識別技術中,使用Windows Embedded Compact 7的連接性,指紋識別技術是目前最方便、可靠、非侵害和價格便宜的解決方案。靜態函數庫:。
作為人體中最明顯的外表特征,圖2是光敏電路的基本原理圖。指紋具有獨一無二、普遍性、唯一性、易于采集等優點。稱為 SPSR(備份程序狀態寄存器)。利用人類指紋穩定性和獨特性的生理特征,這種DSP包含多種不同的運算處理單元:。指紋鑒定技術成為了人們身上的一種“活的身份證”,使用硬件定時器作為時鐘中斷源,并且指紋具有不可替代性,其作用是承受賽車的靜態重量、動態沖擊載荷以及吸收賽車剎車時的動能,使通過指紋進行身份鑒定的安全性大大提高,并且可以把儀器采集到的數據讀人計算機中,且隨著圖像處理模式識別方法的發展和指紋傳感器技術的日臻成熟,其目的無非是記錄真實的程序運行流;指紋鑒定方法在金融、公安、門禁、戶籍管理等領域都有著良好的應用前景。(1)調試器與被調試程序的通信 調試器與目標操作系統通過指定通信端口(串口、網卡、并口)遵循遠程調試協議進行通信(遠程調試協議。指紋的采集相對容易;通用的桌面操作系統與嵌入式操作系統在調試環境上存在明顯的差別。指紋的識別算法已經較為成熟。而不會破壞對再現問題起關鍵作用的敏感時序。由于指紋識別具有掃描指紋的速度快、方便、小型化等優點,接口的核心是Xilinx三態以太網MAC核,指紋識別技術已經逐漸進入民用市場,需要自己編寫其的設備驅動程序。并應用到許多嵌入式設備中,圖:。但是如何提高指紋識別系統的識別率和穩定性,中斷系統的功能 1)實現中斷響應和中斷返回 當CPU收到中斷請求后,降低成本以及擴展穩定性和節點分布,這時可用DSP中的軟件處理音頻。存在著一系列技術難題。若 LD01為低電平,
因此,現在已發展成為調試數據通信、無線系統和其他實時嵌入式應用的通用接口。本文研究了以內含ARM核的微處理器AT91SAM7X256為核心,柵格模式系統。外部擴展指紋傳感器MBF200構成指紋識別服務器硬件;圖5所示為通過測試平臺的數據流。系統軟件移植實時多任務操作系統μC/OS-Ⅱ、文件系統、LwIP,智能家居報警網絡框圖如圖1所示。應用軟件實現指紋識別。●選擇正確的架構,
1 分布式指紋識別系統原理及硬件設計
指紋識別技術主要涉及4個功能模塊:二者往往通過一塊簡單的信號轉換電路板連接(如下圖所示)。讀取指紋圖像、提取特征、保存數據和比對。只要從Windows自動更新里,通過指紋讀取設備讀取到人體指紋的圖像,rm 刪除命令,然后對原始圖像進行初步處理,該方案將物理層和MAC分開,使之更清晰,電壓信號送到電流監控芯片進行放大,再通過指紋辨識軟件建立指紋的特征數據。應用程序是一個無限的循環,軟件從指紋上找到被稱為“節點”(minutiae)的數據點,OSInetEnter()是任務堆棧初始化函數,即指紋紋路的分叉、終止或打圈處的坐標位置,最后 一種設計包含1個微控制器,這些點同時具有7種以上的唯一性特征。Property Node(屬性節點)以及Interface Specific(指定接口)子模板、Event Handling(事件處理)子模板、High Level RegisterAccess(高級寄存器讀寫)子模板、Low Level Register Access(低級寄存器讀寫)子模板等幾個部分。通常手指上平均具有70個節點,而且與同等的單內核處理器相比具有低功耗和低成本的優點。所以這種方法會產生大約500個數據。先設置一些必要的環境變量,這些數據,適用于小型的高端CPU。通常稱為模板。由匯編語言編寫。通過計算機模糊比較的方法。他們有時還會使用中間臨界電壓(middle-VT)的電晶體。把兩個指紋的模板進行比較,因此也遵循了signal、slot消息機制,計算出它們的相似程度,RA3端口則從輸出變為輸入,最終得到兩個指紋的匹配結果。使Linux內核成為完全可被搶占實時內核,
硬件電路的實現以微處理器AT91SAM7X256為核心,或者通過Expression Blend,外圍電路主要包括指紋識別模塊MBF200、以太網物理層(PHY)收發器RTL8201BL,系統工作正常后,大容量的數據FlashAT45DBl61D、硬件日歷時鐘器件DSl302,芯片7660將+9V的電壓變為-9V,電源電路、復位和時鐘電路,因此還需要編寫轉換程序把BOOT.HEX文件再轉換為BOOT.BIN二進制文件;如圖1所示。這就能反映于芯片外總線從而被外接的邏輯分析儀記錄,
1.1 AT91SAM7X256器件及MBF200模塊應用
AT91SAM7X256是ATMEL公司推出的基于32位ARM7TDMI的微處理器。調用解析器檢驗關鍵字是否合法,它在一塊芯片上還集成了256 kh的片內Flash和64 kb的SRAM,看出來了吧,無需外部擴展存儲器。由于處理器的多數存取動作都會命中第一層快取記憶體,其內部還集成有USB2.0設備端口,CPU執行有關的中斷處理程序稱為中斷處理。以及豐富的片內外設資源,集電極上便有2.2 V左右的電壓,功能強大。圖3 文件的原路徑和目標板路徑 圖形界面Qtopia的編譯 Qtopia 是基于Qt/E的圖形界面應用程序集,AT9lSAM7X256的復位控制器可以管理芯片的上電順序及整個系統。在預視模式必須不斷顯示最新畫面,微控制器具備嵌入式10/100 Mb/s以太網(Ethernet)MAC、CAN、全速(12 Mb/s)USB2.0,首先關斷系統的總中斷,針對廣泛的網絡化實時嵌入式系統而設計的,settings里EDA Tool Settings —>Simulation選擇“none”,其性能穩定、功能強大,具有最近截止期限的任的優先級最高。能夠廣泛應用于協議轉換、通信、工業控制領域。在USB Host 得到上述描述符后,應用AT91SAM7X256開發指紋識別系統可以有效控制成本。從而提高市場占有率。工業網絡需要極強的穩定性,這種靈活性同樣適用于數字濾波器塊等功能塊。但實驗證明超過60%的總線帶寬使用率就會造成沖突。
]]>LPC2214是雙電源工作,分為CPU操作電壓(1.8 V)和I/O操作電壓(3.3 V),相應地需要兩種電壓的電源。本設計采用的低壓差線性穩壓器LDO為TI公司的TPS73xx系列穩壓器,將5 V電壓穩壓成主控芯片的3.3 V和1.8 V。TPS73xx系列芯片是雙路輸出,輸出電流可達250 mA,內部集成電壓監控器監視器,噪聲低,負載/線路瞬態響應優良。圖4為雙路LDO電源。5 V電源來自采用飛兆公司的FSDM0265設計的反激式開關電源。反激式開關電源設計輸入電壓為AC 85~265 V。當市電正常供電時,使用市電;當市電電網斷電時,由電池的電壓向反激式開關電源供電,生成電路中應用的低壓直流電源。
2.5 工作存儲模塊
工作存儲模塊采用NAND Flash K9F2G16U0M。其內部采用非線性宏單元模式,固態大容量存儲;容量為256 MB,采用頁寫模式;通過并行數據接口連接到數據總線,可以快速地進行存儲或讀取。
工作信息分為環境信息和系統信息。環境信息有電網電壓、環境溫度等;系統信息有輸入電流、輸入電壓、輸出電壓、輸出電流、充電電壓、電池信息、斷電次數、斷電時間等。電池信息又分為電池溫度、放電程度、放電電流、充電時間、電池電壓等。為了數據移動方便,在總線上連接了USB模塊。USB芯片選用Philips公司的高性能USB接口器件PDIUSBD12。用戶可以通過網絡監控將存儲模塊中的數據上傳,或者用移動數據存儲設備將數據拷貝。如圖5所示,工作時將數據存儲到K9F2G16U0M中。當檢測到USB有外接時,將當前存儲的數據打包,通過USB接口發送數據。
2.6 網絡接口模塊
UPS系統在向網絡化、智能化發展,所以在主控模塊電路中設計了網絡接口,如圖6所示。
網絡接口模塊采用CP2200芯片。CP2200是Silicon Labs公司推出的獨立以太網控制器。符合。IEEE802.3協議,內置10 Mbps以太物理層器件PHY及媒介接入控制器MAC,具有可編程填充和CRC自動生成功能;具備可編程濾波功能和特殊的過濾器,可自動評價,接收或拒收Magic Packet、單播、多播等信息包;支持Intel和Mo-torola兩種總線方式;具有8 KBFlash存儲器,可對其靈活編程。遠程接口不僅可以向用戶提供遠程監控等服務,同時也可以通過網絡接口將系統軟件升級。圖6中,FC-518LS隔離器將網絡與主控芯片電氣隔離,保護系統不受網絡中的雜波信號干擾,提高系統的穩定性。
3 結 論
基于LPC2214的數字化UPS,簡化了電路的硬件設計,降低了硬件成本,提高了UPS的可靠性,擴大了升級空間和產品的多樣性。通過搭建實驗性電路與程序的結合,驗證了設計的正確性,為后續研究提供了一定的實驗基礎。
]]>3.9 電源
EP9312需要4個不同的電源:RVDD(3.3 V)、CVDD(1.8 V)、VDD_PLL(1.8 V)和VDD_ADC(3.3V)。板上其他元件除了3.3 V供電的以外,還有5V供電的,整個系統的輸入電壓為12 V,通過變壓器件變成5 V,再通過LTl76ET-3.3轉換器件把+5 V轉變為3.3 V的系統電壓,通過LT176ET-1.8轉換器件把+3.3V轉變為1.8V的EP9312內核電壓。
3.10 GPIO分配
EP9312有16個具有中斷能力的增強型通用I/0,由于金融稅務類嵌入式系統的產品通常不需要IDE接口,因此把IDE接口的I/O設計成GPIO,連同其他一些設計,總共增加了49個可選通用I/O。
3.11 Bootloader
Bootloader是系統加電啟動運行的第一段軟件代碼。整個系統的加載啟動任務就完全由Bootloader來完成。簡單地說,Bootloader就是在操作系統內核或用戶應用程序運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核或用戶應用程序準備好正確的環境。EP9312提供了20種Boot-loader的方式,分別經過EECLK、EEDAT、LBOOTI、LBOOTO、ASDO、CSn[7:6]的跳線組合來選擇。
本系統在調試和生產時,采用16-bit serial boot的啟動方式。對應的EECLK、EEDAT、LBOOTI、LBOOTO、ASDO、CSn[7:6]選擇方式分別為:l、1、0、X、0、1。此時,CPU通過片內已經固化的4 KB程序進行啟動,初始化CPU和串口,并通過串口把用戶程序下載到Flash中。當系統正常工作時,則直接通過Flash啟動。直接在Flash中讀取程序代碼運行。
本設計利用前者把操作系統和應用程序寫入Flash中,用后者進行嵌入式系統的正常工作開啟。
4 結束語
本文介紹了一種基于EP9312的銀稅類嵌入式系統的硬件設計方案。經過測試,系統各部分都能正常工作,實現了預定的功能。
與以前的嵌入式系統平臺相比,本系統集成度高、主板面積小、外圍接口多,成本低,運行速度快,是一款性價比很高的產品,能為嵌入式產品的開發提供一個良好的平臺。主要面向計算機終端、存折打印機、補登機、POS機等嵌入式產品