摘要:嵌入式技術(shù)及物聯(lián)網(wǎng)技術(shù)飛速發(fā)展的今天,嵌入式系列課程的教學(xué)也在各大院校中開展起來,嵌入式組件設(shè)計(jì)屬于軟硬件結(jié)合設(shè)計(jì)的一門學(xué)科。介紹了嵌入式組件設(shè)計(jì)概念、體系結(jié)構(gòu)及發(fā)展方向。設(shè)置了嵌入式組件設(shè)計(jì)課程內(nèi)容,包括嵌入式驅(qū)動程序設(shè)計(jì)、控件設(shè)計(jì)和基本組件設(shè)計(jì)三部分內(nèi)容,對培養(yǎng)適應(yīng)社會需求的嵌入式技術(shù)人才有著重要意義。
關(guān)鍵詞:嵌入式組件;驅(qū)動程序;課程研究
中圖分類號:G642.0 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-0079(2014)21-0044-02
計(jì)算技術(shù)的發(fā)展經(jīng)歷了三次革命:存儲程序計(jì)算機(jī)、高級編程語言和組件級編程。在通用計(jì)算機(jī)中利用面向?qū)ο蠹夹g(shù)進(jìn)行編程,實(shí)現(xiàn)代碼重用。而現(xiàn)在的嵌入式技術(shù)中也需要這樣的功能,開發(fā)一個組件,該組件可以很容易作為其他程序的組成部分使用。嵌入式系統(tǒng)在人們的印象中多應(yīng)用在工業(yè)控制領(lǐng)域以及智能機(jī)器人,但隨著移動通訊以及智能家電、網(wǎng)絡(luò)家電的發(fā)展,嵌入式系統(tǒng)的應(yīng)用越來越廣。在任何大中型嵌入式軟件設(shè)計(jì)項(xiàng)目中,重要的是在代碼編寫之前完成某種形式規(guī)范。組件級設(shè)計(jì)也不例外。在每一組代碼前,用一組描述組件接口的形式規(guī)范描述代碼的屬性和方法。在程序開發(fā)過程中可以在任意時刻添加該組件。在組件級編程中,可以利用單個組件(例如按鈕、列表框或文本框控件)組合成多個功能復(fù)雜的大型程序。[1]
一、嵌入式組件概述
嵌入式組件設(shè)計(jì)是電子信息專業(yè)及相近專業(yè)的一門專業(yè)課,其目的是使學(xué)生了解一種重要的、最新的應(yīng)用程序開發(fā)風(fēng)格——組件級編程和設(shè)計(jì)的方法,并將這種組件設(shè)計(jì)與嵌入式系統(tǒng)聯(lián)系起來,使嵌入式系統(tǒng)設(shè)計(jì)更加方便簡單。完成這些內(nèi)容的學(xué)習(xí)后,使學(xué)生能在嵌入式系統(tǒng)中輕松開發(fā)大量基于組件的應(yīng)用程序,而且還具備開發(fā)各種第三方定制組件所需的技能。
1.嵌入式驅(qū)動程序設(shè)計(jì)
設(shè)備驅(qū)動程序是介于硬件和OS內(nèi)核之間的軟件接口,是一種低級的、專用于某一硬件的軟件組件。驅(qū)動程序模塊,就可以把操作系統(tǒng)的API函數(shù)和底層的硬件分離開來。當(dāng)外圍設(shè)備改變的時候,只需更換相應(yīng)的驅(qū)動程序,不必修改操作系統(tǒng)的內(nèi)核以及運(yùn)行在操作系統(tǒng)中的軟件。[2]該部分包括基于ARM架構(gòu)的串行口通訊、鍵盤驅(qū)動原理、I/O接口電路、A/D接口電路、LCD的驅(qū)動控制、觸摸屏程序設(shè)計(jì)、USB接口組件設(shè)計(jì)的內(nèi)容。
2.控件設(shè)計(jì)
與Windows操作系統(tǒng)類似,控件是可視化開發(fā)的基礎(chǔ)。對于開發(fā)應(yīng)用程序的用戶來說,控件是一個獨(dú)立的組件,有著自己的顯示方式和動態(tài)內(nèi)存管理模式,設(shè)置中有的控件還可以向系統(tǒng)發(fā)送自己的消息。用戶不需要掌握控件的內(nèi)部到底是如何工作的,只需通過控件提供的API函數(shù)改變控件相應(yīng)的屬性,即可改變控件的顯示方式。控件的引入可以大大方便用戶的開發(fā),加速用戶應(yīng)用程序界面的編寫速度。同時,也為運(yùn)行在操作系統(tǒng)上的應(yīng)用程序的界面提供了統(tǒng)一的標(biāo)準(zhǔn),方便了使用??丶O(shè)計(jì)包括消息、文本框控件、列表框控件、按鈕控件、窗口控件、繪圖控件、系統(tǒng)時間功能部分應(yīng)用程序編寫。
3.基本組件設(shè)計(jì)
前面介紹的幾種組件都屬于單個組件的開發(fā)設(shè)計(jì),而組件級編程中涉及到的組件是綜合組件,包含多個單個組件設(shè)計(jì)。該組件級編程可以完成嵌入式系統(tǒng)中包括PDA、電子字典、手機(jī)等設(shè)備的基本功能的實(shí)現(xiàn)。
基本功能組件包括:電話簿組件設(shè)計(jì)、記事本組件設(shè)計(jì)、日程表組件設(shè)計(jì)、系統(tǒng)時間組件設(shè)計(jì)、日歷組件設(shè)計(jì)、智能拼音輸入法組件設(shè)計(jì)、科學(xué)型計(jì)算器組件設(shè)計(jì),這部分處于用戶應(yīng)用程序中。
二、嵌入式驅(qū)動程序設(shè)計(jì)研究
1.ARM的串行口通訊
這部分設(shè)計(jì)目標(biāo)是掌握串行通訊原理;掌握編程實(shí)現(xiàn)ARM和計(jì)算機(jī)實(shí)現(xiàn)串行通訊。ARM通過監(jiān)視串行口,把在程序中插入的想要反饋程序運(yùn)行情況的串行口語句輸出到顯示器中的超級終端中,這樣便可以實(shí)時監(jiān)控程序的運(yùn)行情況,方便調(diào)試程序。串行口組件設(shè)計(jì)是將接收到的字符再發(fā)送給串口(計(jì)算機(jī)與開發(fā)板是通過超級終端通訊的),即按PC鍵盤通過超級終端發(fā)送數(shù)據(jù),開發(fā)板將接收到的數(shù)據(jù)再返送給PC,在超級終端上顯示。[3]
2.鍵盤驅(qū)動原理
這部分設(shè)計(jì)目標(biāo)是掌握鍵盤驅(qū)動的基本原理;熟悉不帶操作系統(tǒng)鍵盤驅(qū)動實(shí)現(xiàn);了解帶操作系統(tǒng)鍵盤驅(qū)動實(shí)現(xiàn)。鍵盤的設(shè)計(jì)是將一個瞬時接觸開關(guān)放置在每一行與每一列的交叉點(diǎn)。矩陣所需的鍵的數(shù)目顯然根據(jù)應(yīng)用程序而不同。每一行由一個輸出端口的一位驅(qū)動,而每一列由一個電阻器上拉且供給輸入端口一位。鍵盤掃描過程就是讓微處理器按有規(guī)律的時間間隔查看鍵盤矩陣,以確定是否有鍵被按下。一旦處理器判定有一個鍵按下,鍵盤掃描軟件將過濾掉抖動并且判定哪個鍵被按下。每個鍵被分配一個稱為掃描碼的唯一標(biāo)識符。應(yīng)用程序利用該掃描碼,根據(jù)按下的鍵來判定應(yīng)該采取什么行動。
3.I/O接口電路
這部分設(shè)計(jì)目標(biāo)是掌握組件接口的設(shè)計(jì);掌握基于ARM開發(fā)板對I/O編程的方法;掌握LED工作原理、編程實(shí)現(xiàn)LED實(shí)現(xiàn)。I/O設(shè)備、相關(guān)的設(shè)備驅(qū)動程序和I/O子系統(tǒng)組成嵌入式I/O系統(tǒng)。I/O系統(tǒng)的目標(biāo)是對RTOS和應(yīng)用程序員隱藏設(shè)備特定的信息,并且對系統(tǒng)的外圍I/O設(shè)備提供一個統(tǒng)一的訪問方法。
利用I/O編程的方法,在ARM開發(fā)板的數(shù)碼管上顯示鍵盤輸入的鍵值。顯示器的種類很多,從液晶顯示、發(fā)光二極管顯示到CRT顯示器,都可以與微機(jī)配接。在單片機(jī)應(yīng)用系統(tǒng)中常用的顯示器主要有發(fā)光二極管數(shù)碼顯示器,簡稱LED顯示器。LED顯示器具有驅(qū)動電路簡單、耗電省、成本低廉、配置簡單靈活、安裝方便、耐振動、壽命長等優(yōu)點(diǎn),但顯示內(nèi)容有限,不能顯示圖形,因而其應(yīng)用有局限性。當(dāng)選用共陰極的LED顯示器時,所有發(fā)光二極管的陰極連在一起接地,當(dāng)某個發(fā)光二極管的陽極加入高電平時,對應(yīng)的二極管點(diǎn)亮。因此要顯示某字形就應(yīng)使此字形的相應(yīng)段的二極管點(diǎn)亮,實(shí)際上就是發(fā)送一個用不同電平組合代表的數(shù)據(jù)字來控制LED的顯示,此數(shù)據(jù)稱為字符的段碼。
4.ARM的A/D接口電路
這部分設(shè)計(jì)目標(biāo)是掌握A/D接口原理、編程實(shí)現(xiàn)ARM系統(tǒng)的A/D功能;了解模型組件設(shè)計(jì)方法。能將模擬量轉(zhuǎn)換為數(shù)字量的電路稱為模數(shù)轉(zhuǎn)換器,簡稱A/D轉(zhuǎn)換器或ADC;能將數(shù)字量轉(zhuǎn)換為模擬量的電路稱為數(shù)模轉(zhuǎn)換器,簡稱D/A轉(zhuǎn)換器或DAC。ADC和DAC是溝通模擬電路和數(shù)字電路的橋梁,也可稱之為兩者之間的接口。A/D 轉(zhuǎn)換器是模擬信號源和CPU 之間聯(lián)系的接口,它的任務(wù)是將連續(xù)變化的模擬信號轉(zhuǎn)換為數(shù)字信號,以便計(jì)算機(jī)和數(shù)字系統(tǒng)進(jìn)行處理、存儲、控制和顯示。一般A/D轉(zhuǎn)換過程要經(jīng)過采樣、保持、量化和編碼四個步驟。前兩步在取樣—保持電路中完成,后兩步則在A/D轉(zhuǎn)換器中完成。D/A轉(zhuǎn)換器的基本原理是將輸入的每一位二進(jìn)制代碼按其權(quán)的大小轉(zhuǎn)換成相應(yīng)的模擬量,然后將代表各位的模擬量相加,所得的總模擬量就與數(shù)字量成正比,便實(shí)現(xiàn)了從數(shù)字量到模擬量的轉(zhuǎn)換。
5.LCD的驅(qū)動控制
這部分設(shè)計(jì)目標(biāo)是掌握LCD(液晶屏)顯示器的基本原理、驅(qū)動控制方法;熟悉用總線方式驅(qū)動LCD、用ARM內(nèi)置的LCD控制器驅(qū)動LCD。LCD顯示器的基本原理就是通過給不同的液晶單元供電,控制其光線的通過與否,從而達(dá)到顯示的目的。因此,LCD的驅(qū)動控制歸于對每個液晶單元的通斷電的控制,每個液晶單元都對應(yīng)著一個電極,對其通電,便可使光線通過。
6.觸摸屏程序設(shè)計(jì)
這部分設(shè)計(jì)目標(biāo)是了解觸摸屏基本概念與原理、編程實(shí)現(xiàn)對觸摸屏的控制;了解嵌入式系統(tǒng)的基本組件模塊和其他組件模塊。觸摸屏是專門處理是否有筆或手指等物體按下觸摸屏,平常相互絕緣的兩層導(dǎo)電層就在觸摸點(diǎn)位置有了一個接觸,并在按下時分別給兩組電極通電。因其中一面導(dǎo)電層(頂層)接通X軸方向的5V均勻電壓場,使得檢測層(底層)的電壓由零變?yōu)榉橇?,控制器偵測到這個接通后,其對應(yīng)位置的模擬電壓信號經(jīng)過A/D轉(zhuǎn)換送回處理器。經(jīng)過坐標(biāo)轉(zhuǎn)換后,得到觸摸點(diǎn)的x,y坐標(biāo)。
7.USB接口組件設(shè)計(jì)
這部分設(shè)計(jì)目標(biāo)是了解USB基本概念與原理、編程實(shí)現(xiàn)對USB接口的控制??梢允褂肬SB進(jìn)行連機(jī)通信,當(dāng)連接USB的時候,可以從PC機(jī)通過USB端口下載程序,也可以上傳文件至PC機(jī),也可以斷開USB停止上傳和下載。
三、嵌入式控件設(shè)計(jì)研究
文本框控件可以顯示文件和數(shù)據(jù)內(nèi)容,能夠通過對文本框的編輯修改內(nèi)容,并可保存到文件,系統(tǒng)調(diào)用以后,文件內(nèi)容不丟失。列表框控件可以列出系統(tǒng)中的存儲在存儲器中的指定擴(kuò)展名的文件,也可以將要顯示的數(shù)據(jù)列出來。并且還可以控制列表框中的列表內(nèi)容上下顯示,及添加新的列表內(nèi)容。
按鈕控件是一個非常重要的組件。大多數(shù)功能設(shè)計(jì)或游戲設(shè)計(jì)都需要按鈕控件。當(dāng)通過觸摸屏對按鈕控件進(jìn)行單擊、雙擊、按下、抬起、移動時,都會觸發(fā)按鈕控件,按鈕控件會根據(jù)不同的動作進(jìn)行響應(yīng)。
窗口控件的作用是輸出信息、顯示圖形。像游戲活動區(qū)域、手寫輸入?yún)^(qū)域、顯示內(nèi)容區(qū)域等,這些區(qū)域都需要窗口控件來完成。游戲只能在窗口中進(jìn)行,不能離開該窗口。窗口以外的區(qū)域?yàn)橛螒蛘f明區(qū)域或控制游戲按鈕區(qū)域。手寫輸入只能在窗口內(nèi)輸入,在窗口以外的區(qū)域不識別。
繪圖設(shè)備上下文(DC)保存了每一個繪圖對象的相關(guān)參數(shù)(如繪圖畫筆的寬度、繪圖的原點(diǎn)坐標(biāo)等)。在多任務(wù)操作系統(tǒng)中,通過繪圖設(shè)備上下文來繪畫,可以保證在不同的任務(wù)中繪圖的參數(shù)相互獨(dú)立、互不影響。
四、總結(jié)
經(jīng)過該門課程學(xué)習(xí),可以從學(xué)會設(shè)計(jì)一個控件,如按鈕、文本框、列表框到根據(jù)這些控件完成一項(xiàng)功能設(shè)計(jì),如可以將存儲卡中的bmp格式的位圖文件名列表顯示出來,通過點(diǎn)擊可以把圖形顯示出來。了解串行口、鍵盤、I/O接口、A/D接口、D/A接口、液晶屏、觸摸屏、USB接口的工作原理及如何讓這些硬件動起來,很容易從中找到設(shè)計(jì)靈感,找到嵌入式開發(fā)的樂趣,完成屬于自己的嵌入式系統(tǒng)應(yīng)用程序設(shè)計(jì)。
參考文獻(xiàn):
[1]王小妮,魏桂英,楊根興.嵌入式組件設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2012.
[2]王小妮.基于嵌入式系列課程的教學(xué)改革與探索[J].教育理論與教學(xué)研究,2013,(5).
[3]王田苗.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)(第3版)[M].北京:清華大學(xué)出版社,2008.
(責(zé)任編輯:王意琴)