摘要:對于處于高速發(fā)展時期的嵌入式技術(shù)及物聯(lián)網(wǎng)技術(shù)時代,嵌入式軟件方向課程的教學(xué)也在各大院校中開展起來。介紹了嵌入式軟件設(shè)計概念、體系結(jié)構(gòu)及發(fā)展方向。設(shè)置了嵌入式軟件設(shè)計課程內(nèi)容,包括嵌入式驅(qū)動程序設(shè)計、ARM體系結(jié)構(gòu)與編程及嵌入式Linux設(shè)計三部分內(nèi)容,對培養(yǎng)適應(yīng)社會需求的嵌入式技術(shù)人才有著重要意義。
關(guān)鍵詞:嵌入式軟件;體系結(jié)構(gòu);課程研究
作者簡介:王小妮(1977-),女,山東威海人,北京信息科技大學(xué)理學(xué)院,講師。(北京 100192)
基金項目:本文系北京信息科技大學(xué)“嵌入式系統(tǒng)及應(yīng)用”課程建設(shè)項目的研究成果。
中圖分類號:G642.3 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-0079(2014)08-0104-02
中國擁有世界最大的嵌入式技術(shù)市場,在手持儀器設(shè)備、信息家電、城市建設(shè)、工業(yè)控制、軍事應(yīng)用等領(lǐng)域,嵌入式技術(shù)無處不在。[1]數(shù)字化、智能化、網(wǎng)絡(luò)化的趨勢將使傳統(tǒng)設(shè)備逐漸轉(zhuǎn)變?yōu)榍度胧皆O(shè)備,因此嵌入式軟件對改造和提升傳統(tǒng)產(chǎn)業(yè)有重大作用。我國嵌入式軟件應(yīng)用規(guī)模為世界第三,在中國軟件前10家企業(yè)中,嵌入式軟件產(chǎn)品生產(chǎn)企業(yè)占了6家。企業(yè)對嵌入式人才需求,如軟硬件設(shè)計人才、應(yīng)用開發(fā)人才、綜合性人才的需求也逐年增加,企業(yè)同時增加了大量嵌入式軟件方面培訓(xùn)項目,員工工資待遇逐漸上升。華為、中興的成功可以提供一種模式,就是發(fā)展嵌入式軟件,將傳統(tǒng)的純硬件制造業(yè)提升為軟硬件一體化的嵌入式設(shè)備制造業(yè),這樣就可以使IT制造業(yè)有較高的增加值,更強的競爭力。據(jù)有關(guān)數(shù)據(jù)表明,2006年與嵌入式軟件對應(yīng)的設(shè)備市場全球出貨量達(dá)到14億臺,2009年達(dá)到22億臺。與之相對應(yīng)的是,2006年中國嵌入式軟件的市場價值是220億元,到2010年達(dá)到550億元。移動嵌入式產(chǎn)品將是未來消費電子類產(chǎn)品增長最快的領(lǐng)域之一。嵌入式技術(shù)發(fā)展趨勢要求從8位單片機應(yīng)用向16位、32位的嵌入式微處理器轉(zhuǎn)變,并實時操作系統(tǒng)管理軟硬件,而嵌入式操作系統(tǒng)則是驅(qū)動硬件系統(tǒng)的靈魂。因此,通過嵌入式軟件增加產(chǎn)品的附加值無疑是最好的選擇,嵌入式軟件對改造和提升傳統(tǒng)產(chǎn)業(yè)有著重大作用。中國工程院院士倪光南強調(diào),我國IT行業(yè)應(yīng)大力發(fā)展嵌入式軟件,提升我國IT產(chǎn)業(yè)的核心競爭力。
對于處于高速發(fā)展時期的嵌入式技術(shù)及物聯(lián)網(wǎng)技術(shù)時代,嵌入式軟件方向課程的教學(xué)也在各大院校中開展起來。要培養(yǎng)適應(yīng)社會需求的嵌入式技術(shù)人才,在設(shè)置嵌入式軟件方向課程時,要結(jié)合市場需求,制訂相應(yīng)的嵌入式軟件設(shè)計這門課程內(nèi)容。
一、嵌入式軟件概述
嵌入式軟件實現(xiàn)嵌入式計算機系統(tǒng)功能的軟件。嵌入式軟件總體上可以劃分為:嵌入式系統(tǒng)軟件和嵌入式應(yīng)用軟件。嵌入式系統(tǒng)軟件涉及操作系統(tǒng)的移植、裁減、驅(qū)動程序開發(fā),和入式應(yīng)用軟件涉及視頻圖像、語音、網(wǎng)絡(luò)等。從運行平臺來分,嵌入式軟件可以分為運行在開發(fā)平臺上的軟件和運行在嵌入式系統(tǒng)上的軟件。運行在開發(fā)平臺上的軟件包括設(shè)計、開發(fā)、測試工具等。運行在嵌入式系統(tǒng)上的軟件包括嵌入式操作系統(tǒng)、應(yīng)用程序、驅(qū)動程序及部分開發(fā)工具。[2]從使用工具角度來分,嵌入式軟件可以分為系統(tǒng)軟件、支撐軟件和應(yīng)用軟件,如圖1所示。
其中:系統(tǒng)軟件:控制、管理計算機系統(tǒng)的資源;支撐軟件:輔助軟件開發(fā)的工具;應(yīng)用軟件:面向應(yīng)用領(lǐng)域。嵌入式軟件系統(tǒng)的體系結(jié)構(gòu)如圖2所示:
驅(qū)動程序?qū)樱菏侵苯优c硬件打交道的一層,它對操作系統(tǒng)和應(yīng)用提供所需的驅(qū)動支持。操作系統(tǒng)層:是提高計算機利用率的程序代碼,能協(xié)調(diào)管理計算機軟件和硬件資源。匯編語言層:操作系統(tǒng)引導(dǎo)程序?qū)τ布O(shè)備進行訪問的代碼要用匯編語言完成。匯編語言可用于系統(tǒng)的低層軟件、加密解密軟件、分析和防治計算機病毒等。高級語言層:用C/C++或JAVA語言進行編程實現(xiàn)應(yīng)用功能,也可以直接使用中間件軟件程實現(xiàn)應(yīng)用功能。應(yīng)用層:由多個任務(wù)組成,每個應(yīng)用任務(wù)完成特定的工作,如I/O任務(wù)、計算的任務(wù)、通信任務(wù)等,由操作系統(tǒng)調(diào)度各個任務(wù)的運行。[3]
二、嵌入式軟件設(shè)計課程研究
嵌入式軟件設(shè)計這門課程可以設(shè)計為80課時,其中20課時講解嵌入式驅(qū)動程序設(shè)計,20課時講解ARM體系結(jié)構(gòu)與編程,40課時講解嵌入式Linux設(shè)計。
1.嵌入式驅(qū)動程序設(shè)計
設(shè)備驅(qū)動程序是介于硬件和OS內(nèi)核之間的軟件接口,是一種低級的、專用于某一硬件的軟件組件。
(1)串行口驅(qū)動設(shè)計:要熟悉串口通訊原理(包括設(shè)置字符的格式、波特率、校驗位),查閱ARM串口寄存器文檔(包括控制、狀態(tài)和數(shù)據(jù)寄存器),查閱電平轉(zhuǎn)換芯片資料(max3232),設(shè)計串口硬件電路圖,完成串口驅(qū)動程序的設(shè)計(包括串口寄存器初始化,發(fā)送接收函數(shù)等)。
(2)鍵盤驅(qū)動設(shè)計:學(xué)習(xí)鍵盤驅(qū)動原理(確定是否有鍵按下;確定是哪一個鍵或哪幾個鍵被按下;確定被按鍵的輸入代碼;消除按鍵抖動干擾等),掌握通過CPU的I/O擴展鍵盤的方法,設(shè)計鍵盤接口電路圖,實現(xiàn)4×4的鍵盤,編程實現(xiàn)鍵盤的驅(qū)動。
(3)A/D接口驅(qū)動程序設(shè)計:學(xué)習(xí)ARM 本身自帶的A/D 控制器及相應(yīng)寄存器;掌握A/D轉(zhuǎn)換的基本原理(包括采樣、保持、量化和編碼);熟悉A/D轉(zhuǎn)換器的類型(包括逐位比較型、積分型、計數(shù)型、并行比較型、電壓-頻率型等類型);編程實現(xiàn)ARM 系統(tǒng)的A/D 功能。
(4)LCD顯示屏驅(qū)動設(shè)計:了解LCD 基本概念與原理;學(xué)習(xí)LCD驅(qū)動器相關(guān)的寄存器;理解LCD 的驅(qū)動控制;熟悉用ARM 內(nèi)置的LCD 控制器驅(qū)動LCD;完成LCD驅(qū)動程序的設(shè)計(包括LCD寄存器初始化、字符顯示刷新、格式化字符輸出、圖形刷新顯示、清屏等函數(shù))。
(5)觸摸屏驅(qū)動設(shè)計:了解觸摸屏基本概念與工作原理(包括表面聲波屏、電容屏、紅外屏和電阻屏);學(xué)習(xí)觸摸屏相關(guān)的寄存器;分析ADS7843工作時序;理解觸摸屏與LCD 的密切配合;編程實現(xiàn)對觸摸屏的控制。
2.ARM體系結(jié)構(gòu)與匯編語言編程
70%以上的系統(tǒng)軟件是用匯編語言編寫的。某些快速處理、位處理、訪問硬件設(shè)備等高效程序是用匯編語言編寫的。某些高級繪圖程序、視頻游戲程序是用匯編語言編寫的。在嵌入式領(lǐng)域中,以ARM為架構(gòu)設(shè)計芯片的占據(jù)整個芯片市場的80%以上。因此學(xué)習(xí)ARM體系結(jié)構(gòu)與匯編語言編程尤其重要。
了解ARM公司情況以及基于ARM技術(shù)的嵌入式系統(tǒng)的應(yīng)用情況,掌握ARM處理器的種類及其主要特點。掌握ARM編程模式的基本知識,包括ARM處理器模式、寄存器及其使用方式,掌握ARM體系中存儲訪問的基本知識。了解ARM處理器的體系結(jié)構(gòu)、指令系統(tǒng)及開發(fā)工具的使用,掌握開發(fā)基于ARM的應(yīng)用系統(tǒng)的各方面的知識。其中包括ARM體系介紹、ARM匯編語言程序設(shè)計、ARM C/C++語言程序設(shè)計、ARM集成開發(fā)環(huán)境的介紹。掌握ARM指令集和Thumb指令集的應(yīng)用領(lǐng)域,掌握各指令的編碼格式、語法格式、執(zhí)行的操作以及應(yīng)用方法。掌握ARM匯編語言程序設(shè)計的基本方法以及ARM匯編器的使用方法。掌握匯編語言格式和程序格式。掌握ARM體系存儲系統(tǒng)的基本概念,掌握存儲管理單元MMU、寫緩沖以及Cache,了解有關(guān)存儲系統(tǒng)的程序設(shè)計。理解ARM匯編程序以及C/C++程序之間互相調(diào)用的技術(shù),了解C編譯器中內(nèi)嵌的匯編器的使用方法。了解嵌入式應(yīng)用程序設(shè)計的基本知識,通過示例具體掌握嵌入式應(yīng)用程序的設(shè)計方法。掌握ARM開發(fā)工具編譯、連接程序的方法。并在此基礎(chǔ)之上介紹一些典型的基于ARM體系的嵌入式應(yīng)用系統(tǒng)設(shè)計時的基本技術(shù)。
3.嵌入式Linux設(shè)計
(1)熟悉Linux引導(dǎo)程序bootloader:初始化硬件設(shè)備,建立內(nèi)存空間的映射圖。將操作系統(tǒng)內(nèi)核映像從Flash內(nèi)拷貝到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,即啟動操作系統(tǒng)。
(2)分析內(nèi)核源碼:包括初始化Cache、Mmu等設(shè)置;內(nèi)核解壓函數(shù);非壓縮內(nèi)核啟動匯編段;Linux內(nèi)核移植NANDFLASH、
LCD、網(wǎng)卡、YAFFS FLASH的方法。
(3)文件系統(tǒng)建立:掌握 Flash的特性,建立在Flash上的文件系統(tǒng)(包括EXT2、Jffs2、yaffs、CRAMFS、proc)。
(4)設(shè)計圖形界面:掌握QT開發(fā)工具及QT編程核心技術(shù)、QT程序設(shè)計方法。
三、嵌入式軟件發(fā)展方向
嵌入式軟件有廣闊的創(chuàng)新空間:面向各種應(yīng)用,硬件、軟件平臺多樣化,不易被壟斷;新需求不斷發(fā)展,新技術(shù)層出不窮;投入不大,容易起步;中國巨大的制造業(yè)是最好的市場。
嵌入式Linux未來的前景看好,但是人才的缺乏已經(jīng)成為當(dāng)前制約嵌入式Linux發(fā)展的瓶頸。一方面,因為嵌入式人才領(lǐng)域門檻較高,從事嵌入式軟件開發(fā)的工作人員不僅要熟練掌握c/c++、匯編語言等基礎(chǔ),而且對Linux底層驅(qū)動內(nèi)核,甚至是硬件都要了然于心。另一方面,因為這一領(lǐng)域較新,目前發(fā)展太快,很多軟硬件技術(shù)出現(xiàn)時間不長或正在如雨后春筍般地涌現(xiàn)(如ARM11處理器、嵌入式Linux操作系統(tǒng)、MPEG技術(shù)、無線通信協(xié)議、移動USB3.0高速傳輸?shù)龋?,目前國?nèi)乃至國際上能夠掌握這些新技術(shù)的人才相當(dāng)匱乏。
近幾年包括未來幾年,市場對嵌入式Linux人才的需求旺盛,而目前熟練的Linux應(yīng)用人才只有幾千名,這意味著各大跨國公司及國內(nèi)消費類電子巨頭企業(yè)都面臨著人才嚴(yán)重短缺的挑戰(zhàn)。嵌入式Linux的從業(yè)者薪酬比其他IT業(yè)同行大約高出50%,初入門的開發(fā)人員平均月薪一般都能達(dá)到8000元,有三年以上經(jīng)驗的人員年薪都在15萬元以上,有10年工作經(jīng)驗的高級嵌入式軟件工程師年薪在40萬元左右。
四、總結(jié)
自主創(chuàng)新,發(fā)展嵌入式系統(tǒng)是提升中國信息產(chǎn)業(yè)競爭力的重要途徑。中國必須掌握嵌入式系統(tǒng)的核心技術(shù),包括芯片和軟件,從中國制造發(fā)展到中國創(chuàng)造,成為一個信息強國。
參考文獻(xiàn):
[1]張玢,孟開元,田澤.嵌入式系統(tǒng)定義探討[J].單片機與嵌入式系統(tǒng)應(yīng)用,2011,(1).
[2]王小妮.基于嵌入式系列課程的教學(xué)改革與探索[J].教育理論與教學(xué)研究,2013,(5).
[3]何立民.嵌入式系統(tǒng)支柱學(xué)科的交叉與融合[J].單片機與嵌入式系統(tǒng)應(yīng)用,2008,(5).
(責(zé)任編輯:王意琴)