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