肖 堃 廖 勇
(作者單位:電子科技大學(xué))
綜合設(shè)計(jì)作為信息與軟件工程學(xué)院學(xué)生工程能力培養(yǎng)的重要環(huán)節(jié)已經(jīng)寫入各個(gè)方向的培養(yǎng)方案,并且是信息與軟件工程學(xué)院在人才培養(yǎng)過程中的特色之一。與傳統(tǒng)課程實(shí)驗(yàn)和課程設(shè)計(jì)相比,綜合設(shè)計(jì)強(qiáng)調(diào)對(duì)多門課程的知識(shí)點(diǎn)進(jìn)行串聯(lián)和綜合應(yīng)用,在工程訓(xùn)練中加深同學(xué)對(duì)理論知識(shí)的直觀認(rèn)識(shí),從而實(shí)現(xiàn)“做中學(xué)”。
孫士明等在《計(jì)算機(jī)專業(yè)嵌入式系統(tǒng)實(shí)踐教學(xué)體系探索》一文中指出,嵌入式系統(tǒng)是軟硬件高度結(jié)合的整體,嵌入式系統(tǒng)開發(fā)綜合運(yùn)用了計(jì)算機(jī)、自動(dòng)控制、通信、電子信息等多方面的知識(shí),涉及知識(shí)面寬、理論性和實(shí)踐性強(qiáng)[1]。柳翔等在《嵌入式軟件工程人才培養(yǎng)的探索與實(shí)踐》一文中指出,嵌入式系統(tǒng)開發(fā)人才不僅要具有扎實(shí)的學(xué)科與專業(yè)基礎(chǔ)知識(shí),更應(yīng)具備較強(qiáng)的技術(shù)與工程實(shí)踐能力[2]。嵌入式系統(tǒng)方向是信息與軟件學(xué)院的重要招生方向,也是當(dāng)前IT技術(shù)的重點(diǎn)應(yīng)用領(lǐng)域,如何培養(yǎng)嵌入式系統(tǒng)方向?qū)W生的工程能力是信息與軟件工程學(xué)院人才培養(yǎng)中面臨的重要課題。
與傳統(tǒng)個(gè)人計(jì)算機(jī)系統(tǒng)的軟件開發(fā)與硬件開發(fā)相對(duì)獨(dú)立不同,嵌入式系統(tǒng)開發(fā)是軟件、硬件高度協(xié)同設(shè)計(jì)的過程[3]。傳統(tǒng)個(gè)人計(jì)算機(jī)系統(tǒng)的開發(fā)人員一般是計(jì)算機(jī)科學(xué)或計(jì)算機(jī)工程方面的專業(yè)人士,而嵌入式系統(tǒng)開發(fā)則要求更多的計(jì)算機(jī)以外的專業(yè)知識(shí),例如電路設(shè)計(jì)和應(yīng)用行業(yè)知識(shí)等[4]。在實(shí)踐中人才培養(yǎng)單位應(yīng)力圖以前沿性技術(shù)類項(xiàng)目作為驅(qū)動(dòng),基于綜合設(shè)計(jì)這種新型的工程化訓(xùn)練方案來構(gòu)建挑戰(zhàn)性學(xué)習(xí)課程。
嵌入式系統(tǒng)開發(fā)綜合運(yùn)用了計(jì)算機(jī)、自動(dòng)控制、通信、電子信息等多方面的知識(shí)[5],涉及知識(shí)面寬、理論性和實(shí)踐性強(qiáng)[6],依靠傳統(tǒng)的理論教學(xué)與課程實(shí)驗(yàn)難以讓學(xué)生了解嵌入式系統(tǒng)開發(fā)的全過程,因而難以建立嵌入式系統(tǒng)開發(fā)的整體概念。同時(shí),嵌入式系統(tǒng)開發(fā)人才不僅要具有扎實(shí)的學(xué)科與專業(yè)基礎(chǔ)知識(shí),更應(yīng)具備較強(qiáng)的技術(shù)與工程實(shí)踐能力[7]。因此,如何在理論學(xué)習(xí)和課程實(shí)驗(yàn)之外給學(xué)生以實(shí)際鍛煉的機(jī)會(huì),讓他們通過實(shí)際項(xiàng)目來串聯(lián)嵌入式系統(tǒng)開發(fā)的知識(shí)點(diǎn),進(jìn)而建立從底層到高層、從硬件到軟件、從平臺(tái)到應(yīng)用的嵌入式系統(tǒng)開發(fā)整體概念,就成為當(dāng)前嵌入式系統(tǒng)方向人才培養(yǎng)的重要課題。
嵌入式系統(tǒng)設(shè)計(jì)通常采用軟硬件協(xié)同設(shè)計(jì),將軟件設(shè)計(jì)和硬件設(shè)計(jì)作為一個(gè)整體并行設(shè)計(jì),這樣能夠找到軟硬件的最佳結(jié)合點(diǎn),從而使系統(tǒng)高效工作。這種設(shè)計(jì)方法可以充分利用現(xiàn)有的軟硬件資源,縮短系統(tǒng)開發(fā)周期,降低開發(fā)成本,提高系統(tǒng)性能,避免由于獨(dú)立設(shè)計(jì)軟硬件體系結(jié)構(gòu)而帶來的弊端[8],其設(shè)計(jì)流程如圖1所示。
圖1 嵌入式系統(tǒng)設(shè)計(jì)流程
信息與軟件工程學(xué)院嵌入式系統(tǒng)方向的培養(yǎng)方案中,開設(shè)了嵌入式操作系統(tǒng)、計(jì)算機(jī)組成原理、匯編語(yǔ)言與接口技術(shù)、C程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、嵌入式系統(tǒng)導(dǎo)論、ARM處理器體系結(jié)構(gòu)及應(yīng)用、微機(jī)原理與接口、嵌入式網(wǎng)絡(luò)編程、Linux操作系統(tǒng)編程等多門學(xué)科基礎(chǔ)課程和專業(yè)課程,通過這些課程可以構(gòu)建從基礎(chǔ)知識(shí)到專業(yè)知識(shí)再到專業(yè)技能的層次遞進(jìn)的嵌入式系統(tǒng)開發(fā)課程知識(shí)體系,如圖2所示。
圖2 嵌入式系統(tǒng)專業(yè)課程知識(shí)體系
本案例將教學(xué)內(nèi)容與嵌入式系統(tǒng)設(shè)計(jì)有效結(jié)合,進(jìn)行小班教學(xué),讓參加小班的同學(xué)以組為單位(共6組,每組5人),共同學(xué)習(xí),綜合應(yīng)用多門課程核心知識(shí)點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)諸如四軸飛行器、智能小車、智能監(jiān)控等嵌入式系統(tǒng),以此為討論依托,研討嵌入式底層軟件開發(fā)(如:內(nèi)核模塊、設(shè)備驅(qū)動(dòng)程序、設(shè)備文件訪問等),鍛煉他們的編碼能力,鞏固課堂上講授的知識(shí)點(diǎn)。此外,每周約定課時(shí)組織學(xué)生進(jìn)行綜合設(shè)計(jì)實(shí)踐研討、進(jìn)度檢查、答疑、文檔寫作講解及課程設(shè)計(jì)答辯,讓學(xué)生通過實(shí)踐理解課程的核心知識(shí)點(diǎn),很好貫徹執(zhí)行了“做中學(xué)(To Learn by doing)”的教學(xué)方式和卓越工程師教育培養(yǎng)計(jì)劃的培養(yǎng)理念。通過小班教學(xué)/研討為嵌入式系統(tǒng)設(shè)計(jì)提供重要的理論基礎(chǔ)和實(shí)踐基礎(chǔ),通過嵌入式系統(tǒng)設(shè)計(jì)的實(shí)踐環(huán)節(jié)又為課內(nèi)研討提供了驅(qū)動(dòng)力和發(fā)現(xiàn)問題的機(jī)會(huì)。增強(qiáng)學(xué)生溝通交流、合作研究的能力。同時(shí),讓學(xué)生形成自主研究、自主學(xué)習(xí)與終身學(xué)習(xí)的習(xí)慣和能力。
以智能監(jiān)控的設(shè)計(jì)與實(shí)現(xiàn)課題為例,選擇面向通用的ARM開發(fā)板作為目標(biāo)系統(tǒng),宿主機(jī)采用Linux操作系統(tǒng),交叉開發(fā)工具采用GNU交叉開發(fā)工具鏈。學(xué)生首先掌握建立嵌入式Linux開發(fā)環(huán)境的基本方法和流程,掌握嵌入式Linux板級(jí)支持包,特別是設(shè)備驅(qū)動(dòng)程序開發(fā)方法和調(diào)試方法,然后學(xué)習(xí)BSD TCP通信編程流程,BSD Socket網(wǎng)絡(luò)編程API,嵌入式Linux中應(yīng)用程序訪問物理設(shè)備的方法,嵌入式Linux攝像頭驅(qū)動(dòng)的開發(fā)方法,嵌入式Linux Web服務(wù)器的開發(fā)方法等知識(shí)點(diǎn),然后逐步進(jìn)行嵌入式操作系統(tǒng)內(nèi)核(Linux)的移植,再在移植后的操作系統(tǒng)內(nèi)核上進(jìn)行設(shè)備驅(qū)動(dòng)程序的開發(fā)以及多任務(wù)及網(wǎng)絡(luò)通信等復(fù)雜應(yīng)用程序的開發(fā),最后開發(fā)集成溫濕度傳感器的IP Camera等綜合應(yīng)用,通過使用操作系統(tǒng)、設(shè)備驅(qū)動(dòng)程序及應(yīng)用程序的能力實(shí)現(xiàn)典型的嵌入式應(yīng)用。
系統(tǒng)設(shè)計(jì)對(duì)軟硬件功能進(jìn)行分配,并確定嵌入式系統(tǒng)的主要模塊、接口和總線結(jié)構(gòu)。軟硬件功能分配就是對(duì)系統(tǒng)功能是由硬件模塊來實(shí)現(xiàn)還是由軟件模塊來實(shí)現(xiàn)進(jìn)行逐一的定義,這需要對(duì)應(yīng)用場(chǎng)景、用戶體驗(yàn)以及成本等多重因素進(jìn)行綜合考量。開發(fā)者根據(jù)軟硬件功能分配結(jié)果確定系統(tǒng)將采用哪些硬件模塊和軟件模塊以及軟硬件模塊之間的通訊方法(數(shù)據(jù)總線、共享存儲(chǔ)器、數(shù)據(jù)通道等),并最終確定嵌入式系統(tǒng)的體系結(jié)構(gòu)。系統(tǒng)設(shè)計(jì)工作要求開發(fā)者綜合運(yùn)用計(jì)算機(jī)組成原理與結(jié)構(gòu)、操作系統(tǒng)基礎(chǔ)、網(wǎng)絡(luò)基礎(chǔ)、嵌入式處理器體系結(jié)構(gòu)以及接口技術(shù)、人機(jī)界面設(shè)計(jì)等知識(shí)。不管嵌入式系統(tǒng)的硬件平臺(tái)形態(tài)如何變化,其硬件設(shè)計(jì)的主要工作都是根據(jù)需求選擇適合的器件來進(jìn)行電路設(shè)計(jì)。硬件設(shè)計(jì)的手段是借助EDA軟件進(jìn)行原理圖設(shè)計(jì)、PCB物理布線以及硬件描述語(yǔ)言編程等。硬件設(shè)計(jì)還需要向軟件設(shè)計(jì)提供相關(guān)信息,例如主處理器的內(nèi)存映射、需軟件編程的寄存器定義等等。硬件設(shè)計(jì)工作要求開發(fā)者綜合運(yùn)用數(shù)字邏輯、電子電路基礎(chǔ)、電路設(shè)計(jì)以及FPGA硬件設(shè)計(jì)等知識(shí)。
嵌入式系統(tǒng)軟件平臺(tái)可以分為開源平臺(tái)和封閉平臺(tái)兩大類,例如GNU/Linux操作系統(tǒng),Google Android系統(tǒng)以及微軟Windows Phone系統(tǒng)等。在實(shí)際工程項(xiàng)目中,不管是選擇開源平臺(tái)還是封閉平臺(tái),軟件設(shè)計(jì)的工作都不是要求開發(fā)者從無(wú)到有地開發(fā)整個(gè)軟件平臺(tái),而是基于現(xiàn)有的開源工程或商用操作系統(tǒng)進(jìn)行適配、剪裁、定制、集成以及局部開發(fā)。軟件設(shè)計(jì)的工作主要包括:針對(duì)具體硬件修改板級(jí)支持包并開發(fā)對(duì)應(yīng)設(shè)備驅(qū)動(dòng)、內(nèi)核組件的剪裁、硬件抽象層適配、公共庫(kù)及服務(wù)的剪裁與集成、特定應(yīng)用程序及服務(wù)的開發(fā)等等。軟件設(shè)計(jì)要求開發(fā)者綜合運(yùn)用匯編語(yǔ)言、高級(jí)編程語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)與算法、面向?qū)ο蟪绦蛟O(shè)計(jì)、操作系統(tǒng)、網(wǎng)絡(luò)、軟件工程、嵌入式操作系統(tǒng)編程、嵌入式網(wǎng)絡(luò)編程、實(shí)時(shí)軟件設(shè)計(jì)、人機(jī)界面設(shè)計(jì)等知識(shí)。軟硬件集成工作包含系統(tǒng)驗(yàn)證和系統(tǒng)確認(rèn)。對(duì)嵌入式系統(tǒng)的驗(yàn)證是通過工具或技術(shù)手段來檢查系統(tǒng)有無(wú)軟硬件缺陷。對(duì)嵌入式系統(tǒng)的確認(rèn)是通過工具或技術(shù)手段來檢查系統(tǒng)是否達(dá)到設(shè)計(jì)要求,例如功能、性能、功耗等。當(dāng)今的嵌入式系統(tǒng)功能復(fù)雜,軟硬件高度一體化,所以在實(shí)際工程項(xiàng)目中往往是通過軟件工程的思想來指導(dǎo)軟硬件集成工作。軟硬件集成工作要求開發(fā)者綜合運(yùn)用軟件工程、軟件項(xiàng)目及配置管理、軟件測(cè)試與質(zhì)量保證等知識(shí)。
綜合設(shè)計(jì)是一種新型的工程化訓(xùn)練方案,以工程項(xiàng)目的形式開設(shè),是對(duì)課程實(shí)驗(yàn)、課程設(shè)計(jì)的延續(xù)和擴(kuò)充,是對(duì)課程知識(shí)的深入應(yīng)用和綜合應(yīng)用?;谇度胧较到y(tǒng)綜合訓(xùn)練的學(xué)習(xí)課程設(shè)計(jì)以學(xué)生工程能力培養(yǎng)為主線,以加強(qiáng)學(xué)生設(shè)計(jì)開發(fā)能力為核心,終將實(shí)現(xiàn)對(duì)學(xué)生的專業(yè)知識(shí)、系統(tǒng)觀念、創(chuàng)新意識(shí)、開拓能力以及科研素養(yǎng)等進(jìn)行全方位的培養(yǎng)。