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