劉春+王中齊



摘 要:分析目前嵌入式系統設計的現狀,提出在嵌入式設計課程的教學中引入系統級硬件設計與軟硬件聯合仿真方法,遵循“小系統設計—驅動設計—應用層設計—綜合設計”的脈絡,以培養能力和信心為宗旨,以“強化自主式學習法”為教改思想,對教學與實驗內容進行改編,增加設計型仿真實驗,編排虛實結合的軟硬件組合接口設計、游戲設計等,設計多階目標滿足不同強化訓練需要。通過對4屆學生的成績綜合分析發現,該教學法對提升整體成績效果明顯。
關鍵詞:強化自主式學習;嵌入式系統;仿真實驗;Proteus
1 背 景
近年來,隨著物聯網等技術的廣泛應用,嵌入式系統設計軟硬件開發工作呈現出更寬廣的市場需求。從培養計算機綜合系統能力角度來看,現有的教學內容和教學模式常常偏“軟”,硬件層與系統層設計還遠不能滿足實際需要。針對這一問題,許多高校都進行了教改嘗試。如電子科技大學、武漢理工大學等引入項目案例教學法力求增強課程吸引力[1-2],而同濟大學、華中科技大學等則自行研制開發教學開發板和配套教材[3-6],以求從內容上突破。上述方法取得了一定的成效,但對普通應用型高校和應用型人才的培養來說,均不易普及。嵌入式設計課程具有技術性強、軟硬結合、內容寬廣的特點,但也面臨總體課時不足、實驗器材落后、教師經驗缺乏等諸多限制。經過多次更換教材、改編實驗內容等嘗試,我們認識到要在諸多限制下教好這門課程,需要回歸到學習和教育的本源,激發學生自主學習動力,設計并利用強化方法引導學生逐步深入,并解決以下3方面的問題。
(1)學生有條件在脫離學校實驗器材限制的情況下自主反復實驗。
(2) 教學和實驗的內容設計既要循序漸進,又要連續保持高度壓力,驅動學生強化學習。
(3)把考試目標分解為單元目標并以一定的成就機制吸引使學生自我正反饋學習。
例如,華中科大自行研發了綜合實驗箱,在大一階段就發給學生自主學習,大四再收回。這種方法解決了實驗器材的限制,但大多數學校尚不具備這種條件。Proteus仿真軟件早已在單片機、微機原理、自動化、計算機組成原理等專業課中被引入作為先進的自我學習實驗手段[7-8],8.4以上版本已能支持ARM7、ARM9、CORTEX M3等CPU。通過引入這一最新適用于嵌入式CPU的仿真軟件,筆者以ARM7為基礎設計了一系列的軟硬件結合設計型教學內容,推行強化式自主學習,最后再基于硬件實驗箱進行綜合強化設計。
2 教改思想:強化自主式學習
引導性學習以老師講、學生聽,老師出題、學生備考為基本學習形式,這一典型教學方法并不太適用于嵌入式系統的教學。首先嵌入式教學內容覆蓋廣泛,從電子技術基礎、原理圖設計、ARM芯片原理、匯編設計,到嵌入式操作系統、交叉編譯、驅動程序設計、上層應用程序設計,很難在規定課時內完整講解所有內容。其次,嵌入式課程大量內容還是技術性和設計型的,課堂講授效果比純理論類課程差,需要補充大量實驗來強化教學效果。
自主性學習(self-dominated study)一般是指個體自覺確定學習目標、制訂學習計劃、選擇學習方法、監控學習過程、評價學習結果的學習。自主學習不是放任不管,結合嵌入式學習要求,在自主式學習基礎上需要引入教師的強化引導要求,以使自主學習增加以下3個要求。
(1)有目標。 布置的學習任務均帶有明確的課題目標或階段性目標,學生在完成任務后能得到階段性評分,并形成自我反饋。
(2)有強度。每個階段布置的學習任務都具備一定的復雜度,需要學生花費一定時間思考和嘗試,在完成任務后有成就感,并獲得繼續深入的動力。
(3)有意義。具化為能力的培養,使學生能感受到自身進步,培養解決問題的信心。
3 教改內容:體系的沿襲與內容的創新
美國硅谷圣何塞州立大學是硅谷地區重要的IT工程師搖籃,經過訪問考察發現其嵌入式課程由CMPE 241: Embedded System Development Tools、CMPE 242: Embedded Hardware Design、CMPE 243: Embedded Systems Applications和CMPE 244: Embedded Software共同組成。其內容涵蓋了軟硬件設計和編程開發,并額外開設了IEEE 802/11BGN課程(CMPE 245: Embedded Wireless Architecture),選用教材包括自編材料和廠家芯片手冊,芯片體系架構主要講述ARM Cortex M3核的LPC1769,實驗方法是要求學生自購模塊化LPC1769開發板和外圍模塊,逐步添加和深入,在美國當地購齊材料成本約為每人160美金,軟件為LPCXpresso集成環境。
從課程體系的設置以及教學內容的編排看,大多數國內高校與其主要不同之處在于自購實驗板和嚴格的實驗評分。筆者講授過針對ARM7、ARM9、CORTEX M3和A8的課程,從教學經驗看,比較合適本科層次的還是ARM7,其難易適中,教學材料豐富,學生就基本原理與基本技術的學習容易上手和深入。嵌入式操作系統方面則各有偏重,有從適宜理解方面選擇UCOS操作系統教學,還有從與實用對接角度考慮選擇Linux系統。筆者認為嵌入式系統的教學應沿襲現有成熟課程體系,但其教學內容的編排應進行必要的變革創新。
首先,以ARM7+ Embedded Linux組合的教學內容是比較合適的選擇。內容應包括ARM7的體系結構、匯編與C混合編程應用、無操作系統的驅動與應用程序設計、嵌入式Linux操作系統基礎、交叉編譯環境設置、嵌入式圖形應用程序設計等。至于Android、iOS等應放到后置課程中學習。課程總體目標是以綜合應用設計的方式,配以案例教學和大量的實踐實驗,使學生切實體會到一個項目的提出、方案選擇、硬件設計、軟件設計、調試等一系列過程,達到各種所學知識的高度融合。以上內容體系與課程目標與大多數學校的教學大綱和教學目標是基本一致的。
其次,嵌入式系統學科是典型的工科學科,是在基礎理論科學的基礎上結合理論研究、應用研究和工程實踐經驗積累而發展起來的應用學科,其目標是培養在工程領域中從事設計、研究、制造、管理等方面的工程技術人才,尤其強調動手實踐和綜合運用所學知識解決實際問題的能力。為此嵌入式系統課程,特別是實驗課程,內容的安排應從被動的觀察思考類,轉到主動的設計實現類,這就需要結合學校條件,采取虛實結合的先進實驗方法,重新改編實驗內容。表1比較了傳統的依托ADS CodeWarrior IDE的嵌入式實驗課程內容,和以Proteus8 IDE為依托的創新實驗設計內容。
ADS實驗一般設計10課時,受客觀條件限制基本上難以展開。Proteus實驗則可以完全擺脫實驗箱和實驗室課時的限制,以課外自主式學習和實驗為主,以課堂實驗檢查為輔,從第三個實驗開始即進入設計型模式,設計難度從2機時到15個機時不等,涉及的軟件工具還包括Vmware、Ubuntu Linux、QT、SQLite、Skyeye等,不但對教學內容構成必要的補充,而且充分覆蓋對學生的整體應用設計能力的培養。
4 教改方法:虛實結合的軟硬件組合設計強化訓練
由于硬件條件受限,目前國內大部分高校沿用的還是ADS環境結合實驗箱進行實驗,但是ADS是純粹的軟件環境,只能將最后編譯結果下載到實驗箱建立與硬件的聯系,欠缺軟件到硬件中的必要聯系。一些大學在嵌入式系統的教學中引入了Verilog設計工具進行仿真,該工具的使用與C語言環境有較大不同,要求先學習硬件描述語言,適用于電子或自動化等專業,對計算機類等本科專業學習門檻較高。而Proteus仿真與設計軟件可以在PC上完成從原理圖設計、電路仿真、PCB設計到軟件代碼調試、實時仿真、測試和PCB 3D視圖驗證的整個開發過程,8.0以上的版本不但直接對Keil等編譯環境進行集成設置,還增加了Arduino流程圖設計集成環境,可以做機器人仿真設計,大大豐富了軟硬件之間的直接聯系。利用Proteus,學生可以完成從硬件電路設計到軟件代碼聯調仿真的綜合,他們可在自己的電腦上充分自主地設計、聯調和觀察結果,不但彌補了硬件設計的短板,而且能克服實驗箱引起的諸多限制,是絕大多數工程技術專業學生進行自主式學習的有利工具。
大多數ADS實驗內容是驗證和思考型的,比如大多數GPIO控制實驗是要求控制IO引腳點亮LED燈,實驗相對簡單,難以對學生產生足夠的刺激。增加實驗次數,提高實驗復雜度,在實驗中布置個性化檢查點,事前充分輔導講解,事后嚴格逐個檢查,這些措施是使學生從自主式學習邁向強化自主式學習的關鍵。
如筆者在設計GPIO實驗中,加入了更多復雜條件,要求一組LED燈被控制進行至少3組以上的變換顯示效果,并增加一個喇叭,對每種輸出效果配上不同的音效。檢查時,要求每個學生對喇叭隨機變調,或對顯示效果隨機修改并加以解釋。由于實驗內容與室外廣告燈箱效果近似,因此學生在設計時興趣大增,利用課余時間自主實驗和學習,取得了明顯的進步和滿意的實驗效果。
再如在中斷實驗中,ADS實驗內容是使用S3C2410實驗箱的定時器0實現0.5秒的定時并產生中斷,每產生一次中斷即控制蜂鳴器的I/O口狀態取反,實驗目的過于單調。在Proteus的中斷實驗中,筆者將ADC和字符顯示實驗進行了結合,要求設計一個電子秤,對傳感器進行ADC轉換取得數值,然后用矩陣式鍵盤進行算術運算,并顯示結果。該實驗設計機時在15個小時左右,學生們一邊抱怨難度太大,一邊興致勃勃地加班加點,最后完成的學生都覺得很有成就感,未能自主完成的學生在參考其他同學的成果后,也有自己的收獲,圖1為本實驗的學生作業圖。
5 教改層次:逐步深入,設計多階目標滿足不同需要
教學梯度應遵循“小系統設計—驅動設計—應用層設計—綜合設計”的脈絡,并注意從縱向和橫向進行多階次設計,使其可以由淺入深,由易到難,滿足不同學習能力學生的需求。具體實施如下:
(1)小系統設計是指在訓練之初,每一步的復雜度都限制在小型組合系統框架內,如設計ARM CPU+存儲器組合系統、 CPU+矩陣鍵盤系統、CPU+串口通訊系統、 CPU+IIC實時時鐘系統等,這些獨立的小系統設計均覆蓋了系統設計的一個方面,由于限制了系統規模,在設計和實驗時不會造成各個模塊之間的干擾,學生容易上手。
(2)驅動設計則提高了難度,要求在軟件的設計中融合特定硬件的用法,如CPU+LCD顯示系統設計實驗,是編程點亮12864LCD液晶屏幕顯示點陣和字符(學生姓名學號)。
(3)通過上述兩個階段的訓練,學生具備了基本的完整應用系統設計能力,可以布置應用層的實驗項目,如電子秤系統、貪食蛇游戲機等,這些實驗均由多個小系統實驗組合而成,只是范圍更大、難度更深了。
(4)綜合設計實驗進一步在上述各種實驗基礎上,以課程設計的形式,實現多科目融合設計,如將網絡通訊、界面開發、嵌入式數據庫、軟件工程包含在一起,設計無線點菜系統。這樣的設計任務接近實用化需求,學生在完成最終的綜合設計訓練后會有極大的成就感,開發信心倍增。
具體到編排實驗內容時,還要注意縱橫結合。縱向多階是指教學與實驗內容的逐次遞進,橫向多階是指編排的內容在同一個階層有不同的難度要求和分數獎勵。目前采用的方法是在同一個層次編排兩個以上的實驗,以適應普通學生和學有余力的學生。如表1所示,Proteus實驗分為基礎實驗和進階實驗。在組建交叉編譯環境實驗時,基礎實驗只要求建立環境,而進階實驗要求安裝skyeye模擬器進行實驗驗證。又如在接口實驗中,IIC與SPI接口實驗是設計溫濕度檢測器,而進階實驗是設計基于TFT LCD屏幕的貪食蛇圖形游戲,如圖2所示,用矩陣鍵盤控制蛇的移動方向,其挑戰性非常強,完成時間需要15個機時。設計這些進階實驗的目的是通過優秀學生的努力與成就展示,帶動普通學生更加努力投入自主鉆研的學習中。
上述所有的Proteus內容雖然適于嵌入式系統教學,但是最終還應該設計一個環節與真正的硬件實物進行連接,最合適的安排就是學期結束前的課程設計環節。在學生已經建立了基本的嵌入式基礎知識后,以課程設計的形式,進行一個集成各個模塊的大型設計,再將編譯后的可執行文件下載到實驗箱上,最終使得學生通過這樣的完整設計與實現過程達到課程培養目標。筆者設計的強化課程設計《基于ARM的無線點菜系統》獲得學生好評,課程采風《開發達人是怎樣煉成的》還被湖北日報荊楚網報道。
為了配合上述的各階層目標,筆者將課程總評成績拆解為一系列的小目標成績,其中期末考試占30%,而每個實驗的現場考核都按難度不等計入5~10分,對高難度設計設立獎勵分。也可以按周進行實驗的規劃,并設置提交時間區間,按區間給起評分。
6 教學效果檢驗與展望
為了檢驗上述強化自主式學習的教學效果,筆者對連續4屆的學生進行了成績跟蹤與回訪,將各分項實驗得分和最終在實驗箱上進行課程設計時完成的目標項數對比,并以此作為判別依據。其中第一屆采用的是ARM7+ADS實驗內容;第二屆采用ARM11+ADS;第三屆采用ARM7+LINUX+課堂Proteus;第四屆采用強化自主式學習法,內容為ARM7+LINUX+課外Proteus,其對比結果見表2。
從表2可看出,經過課程與實驗的優化,學生的成績逐漸提高,但是對ADS型實驗,學生成績起伏不大,既無興趣的提高也無明顯降低,基本上依賴學生自覺。對于第四屆的教學改革,可見實驗成績有強化性的提高,最終的課設成績也有大幅度的改善。進一步分析第三屆引導式學習法與第四屆強化自主式學習法取得的分段成績(見表3),強化自主式學習法對低分段學生有明顯的提升效應,在實驗難度不是特別大的情況下(如實驗3—4),整體能取得最好的成績;在難度最大的時候(如實驗5),整體仍然能取得穩定的成績,這些比較充分地說明了該種教改方法對學生成績的促進。
基于Proteus仿真軟件,我們對嵌入式系統課程的教學實驗內容和方法進行了改革,克服了課時與實驗設備的限制,以強化自主式學習法取得了較好的教學實踐效果。需要注意的是,由于軟件仿真能力的限制,目前可以仿真的uclinux系統功能微弱,圖形和網絡能力很少,還不足以支撐實現系統級的設計仿真,所以最后一個連接實驗箱的環節目前仍然不可或缺。此外采取上述方法的前提是學生對Proteus設計調試方法有一定基礎,筆者在講授計算機組成原理時,已經引入和設計了相應的組成原理Proteus實驗對學生進行了準備性訓練。強化自主式學習法從學習的本源出發對嵌入式系統課程的教學進行了有益的嘗試,未來的工作包括需要進一步調整教學與實驗內容的難度以適應不同階層的學生,以及進一步設法解決系統級應用設計完整仿真的問題。
參考文獻:
[1] 李文生, 鄧春健, 呂燚. 案例驅動的嵌入式系統教學改革探索[J]. 計算機教育, 2011(2): 22-25.
[2] 李寧, 宋薇, 庫少平. 項目化嵌入式教學方法研究[J]. 單片機與嵌入式系統應用, 2010(2): 5-8.
[3] 郭華, 張小軍, 張德學. 嵌入式教學改革探索[J]. 教育教學論壇, 2016(27): 101-103.
[4] 潘登, 陳啟軍. 面向卓越人才培養的嵌入式系統教學改革[J]. 計算機教育, 2013(13): 1-5.
[5] 陳乃金, 周鳴爭. 計算機系統能力背景下的嵌入式系統實驗教學研究[J].電腦知識與技術, 2016, 12(12): 98-99.
[6] 凌明, 劉昊, 時龍興. 關于嵌入式系統課程教學過程中幾個問題的思考[J].電氣電子教學學報, 2007(S1): 97-99.
[7] 萬松峰. 基于Proteus的單片機原理與應用的教學改革[J]. 高教學刊, 2016(14): 121-123.
[8] 張婧婧, 李勇偉. 電子類仿真軟件應用的教學之道[J]. 計算機教育, 2016(7): 126-129.
[9] 郝建新, 王金全, 陳曉寧, 等. 強化學生自主性學習的方法和機制[J]. 河南科技, 2010(6): 67-67.
(編輯:彭遠紅)