竇亞玲 劉金平
摘要新工科建設推動工科專業的新一輪改革。以工程能力培養為導向,結合“嵌入式系統”課程的實踐性特征,對理論與實驗學時進行了重組,并通過“去教材”、項目化課程內容等方法重構了嵌入式課程體系;教學過程中從五個層面實施對學生工程能力的培養進程。實際教學效果良好。
關鍵詞 工程能力 嵌入式系統 項目式驅動
中圖分類號:G424文獻標識碼:ADOI:10.16400/j.cnki.kjdk.2021.25.046
Embedded System Course Teaching Oriented by Engineering Ability Training
DOU Yaling, LIU Jinping
(School of Information Science and Engineering, Hunan Normal University, Changsha, Hunan 410081)
AbstractTheconstructionof newengineeringdisciplinespromotesanewroundofreformofengineeringdisciplines. Guided by the cultivation of engineering ability and combined with the practical characteristics of embedded system course,the theoretical and experimental class hours are reorganized,and the embedded curriculum system is reconstructed by means of "de teaching materials" and project-based curriculum content; In the teaching process, the training process of students’ engineering ability is implemented from five levels. The actual teaching effect is good.
Keywordsengineering ability; embedded system; project driven
0引言
新工科建設[1]推動高等院校工科專業的教學改革與創新,越來越多的教改探索聚焦在遵循工程教育規律、與時代特征匹配的新培養模式。近年來,嵌入式系統技術發展迅猛,專業知識內涵與外延不斷擴展,嵌入式應用技術產品不斷迭代重構。嵌入式系統課程教學面臨的挑戰是客觀的,為培養適應新技術與新經濟發展要求、具有可持續競爭力的創新人才,教學改革更是迫在眉睫。
“嵌入式系統”是一門實踐程度要求很高的工科專業課程,卻存在知行時間脫節、空間分離現象。[2]一方面,理論課和實踐課課時分配不合適,重理論課輕實踐課,到頭來課程考核淪為知識點的死記硬背;另一方面,理論課和實踐課脫節,因為課時的分離,很難做到知行合一滿足工程能力培養的需要。
“嵌入式系統”的實驗教學始終是教學的核心環節。一方面,實驗設備更新換代周期短,投入大;另一方面,實驗資源易受場地、時間等客觀條件限制。虛擬仿真實驗方案[3]將實驗環境從實體設備遷移到互聯網仿真平臺,一定程度上打破時空限制,提高實驗資源利用率,易于維護更新迭代。然而,目前大部分開設嵌入式系統課程的高校依然很難構建虛實結合的實驗環境。
嵌入式技術的核心是軟件和硬件相結合,[4]“嵌入式系統”課程涉及的知識點龐雜,課程涉及計算機系統相關的硬件知識和軟件編程技術,先導課程之間的銜接存在困難,如何在有限學時中,設計以工程能力培養為導向的課程體系與培養進程成為該課程教學的重要挑戰。
1構建工程化的嵌入式系統課程體系
嵌入式工程課程體系通常涉及4大進階模塊。[5]信息科學與工程學院開設的“嵌入式系統”課程是大學三年級階段的一門專業課,2019-2021三個學年,累計授課400余人,涉及計算機科學與技術、軟件工程兩個專業,專業課程總課時都是64學時,課程教學采用ARM Cortex M4系列STM32F407Tx芯片定制開發板。
1.1理論與實驗學時重組
嵌入式系統是實操性為主的課程,理論知識與實踐操作是有機統一的。傳統的課程設計中將理論學時和實驗學時在時間和空間上分割。比如教師在教室里講述ARM程序狀態寄存器中不同標志位的含義,學生通過記憶去理解,而無法實時通過編寫匯編代碼去驗證。又比如GPIO的實驗環節是操控LED燈,教師在理論課上分析了原理,到了實驗課上,學生通常已經對原理記憶模糊。
學時重組就是打破理論課與實驗課的界限,以4學時為嵌入式系統課程的基本教學單元,4學時中間只設定一次規定的課間休息。為方便教學管理,授課地點從多媒體教室搬遷到獨立的實訓室,教、學、實踐實現實時融合與互動。
1.2芯片數據手冊與原理圖替代傳統教材
“嵌入式系統”課程的教材具有兩個“痛點”:一是教材更新跟不上技術換代,二是嵌入式系統的專用性特點限制了教材的通用性。官方芯片數據手冊是嵌入式工程師做開發的主要技術資料。引導學生直接使用數據手冊,有利于培養工程能力。
課程中所用到的官方數據手冊包括:CortexM3與M4權威指南(中英文)、STM32F4xx參考手冊(中英文)、EEPROM與FLASH的官方芯片及其課程中用到的傳感器手冊等。
課程中所使用的基于STM32F407Tx芯片的開發板是定制版,廠商提供全套原理圖PDF,方便學生直接查閱。
1.3課程內容項目化模塊設計
在2019-2021三年的教學實踐中,結合學科專業特點對課程內容不斷調整,形成可持續發展的培養工程能力的課程體系。表1給出課程體系的基本項目與說明(所涉及的芯片等產品可根據需要自行更新或另行選擇,只需要同步更新配套資料即可)。編號KB表示課程基本模塊,KS表示課程限選模塊;重要程度與難易程度是針對課程考核給出的參考值,“+”數量表示程度,數量越多程度越深;擴延度是根據每個課程項目實踐完成的時間給出的需要占據課后學習時間的參考數據,“+”數量表示需要利用課后時間的長短,數量越多時間越長。
對應的給出不同模塊的項目要求說明:
KB-1自行安裝Keil5,創建工程項目實現:Cortex M4寄存器、處理器模式、狀態的所見即所得。
KB-2:在Keil5工程中編寫ARM匯編啟動代碼,采用“做中學”的方式學習ARM通用指令包括存儲器訪問、寄存器數據處理、分支等以及基于Keil編譯平臺的偽指。運用指令完成匯編語言與C語言混合編程實例。
KB-3:掌握寄存器編程與固件庫編程兩個嵌入式系統開發模式,在Keil工程中編程實現通過GPIO寄存器方式控制LED燈;進一步安裝基于STM32的固件庫,編程實現通過GPIO固件庫函數控制LED燈。完成不同模式的工程開發的比對分析。
KB-4:理解STM32F4中斷實現機制,以外部中斷EXTI為例,基于STM32固件庫編程實現按鍵中斷控制LED燈。
KB-5:理解STM32F4時鐘系統,任務1是采用SYSTICK系統時鐘中斷,實現毫秒和微秒級時延,結合KB-3實現流水燈的精準時間延遲控制;任務2是在KB-3基礎上設置GPIO復用(AF)模式,實現定時器(TIM)輸出PWM波形實現蜂鳴器BUZZER播放樂曲。
KB-6:理解UART串口通信協議,編程實現上位機PC與下位機STM32F407Tx開發板通過UART發送接收數據,同時能夠根據原理圖完成物理接線與開發板跳線正確設置。進一步連接藍牙模塊,實現上位機手機發送數據控制下位機開發板上LED與蜂鳴器BUZZER工作(見表1)。
KS-7:理解IIC通信協議,閱讀芯片與從設備讀寫時序,利用固件庫編程實現主設備STM32F407Tx與從設備EEPROM(AT24C02)數據讀寫操作。
KS-8:理解SPI通信協議,閱讀從設備數據手冊理解讀寫、與FLASH特有的擦寫指令,利用固件庫編程實現主設備STM32F407Tx與從設備FLASH(W25Q128)通過SPI協議進行大量數據讀寫操作。
KS-9:理解CAN總線通信協議,編程實現消息幀自發自收的回環測試,進一步完成兩個終端間通過CAN總線協議收發消息幀。
KS-10:任務1需要完成uCOS移植,創建uCOS工程項目,進一步完成任務函數、任務創建、實時調度、分時調度、時間管理的代碼實現。任務2需要完成uCOS任務并發控制包括互斥信號量、時間標志組的代碼實現。

2嵌入式系統課程體系中工程能力培養
課程教學過程中,教師對教學定位是工程項目實訓。全程貫穿工程能力的培養。以嵌入式系統課程教學為例,從以下五個層面實施:
第一層面:工欲善其事必先利其器。
軟件運用,硬件操作,代碼編寫規范等方面與實際工程項目要求接軌。課程筆記NotPad++,代碼編寫采用Source Insight,代碼編譯平臺是Keil編寫與編譯平臺同步。可執行代碼通過Jlink下載到開發板上運行。整個過程與實際工程開發一致。
第二層面:課程任務項目驅動。所有理論知識為解決實踐項目而存在。以按鍵中斷為例給出學生在項目驅動過程中的主體作用:
Step1:下達任務,按鍵控制LED燈。
實施效果:按下K2,LED0亮了,再次按下,LED0滅了。
Step2:怎么實現,對應的GPIO口是什么?
學生查看原理圖,做好日志記錄。
Step3:控制方案選擇:輪詢可以嗎?弊端在哪?
學生主動提出中斷控制。
Step4:ARM Cortex M4的中斷機制是什么?
學生查看數據手冊,明確外部中斷EXTI的控制流程圖。
Step5:如何編碼實現?STM32固件庫哪些函數可以編碼實現流程圖?
教師通過VNC與學生同步敲代碼,指導學生在SI中一邊學習固件庫函數一邊完成初始化代碼。
Step6:中斷響應函數是什么?怎么寫?
教師帶出中斷向量表,學生從STM32啟動源代碼中找到外部中斷對應的向量地址,通過VNC教師同步示范中斷響應函數的規范寫法,學生完成代碼規范書寫。
Step7:學生連線下載燒錄代碼,測試按鍵結果。
Step8:結合現場實際,以學生為主體分析解決問題,教師梳理總結知識要點,完成項目任務。
第三層面:學生工作量要足夠,量的累積才有質的改變。教學全程學生需要建立三個完整工程,累計代碼作業與實驗16人次,日志文檔人均100頁,硬核編碼量(l)3000+。課程沒有采用任何實驗教材,每個學生的日志文檔形成一本有特色的實驗案例。
第四層面:工程項目需要協作精神,但更基本是每個人務實求真。課程采用定制開發板,原則上一人一板,可以協同討論技術問題,但代碼編寫任務實現拒絕“摸魚”與“打醬油”行為。三年一線教學實踐觀察結果:絕大多數學生主觀意愿是獨立自主完成項目。
第五層面:教師在整個教學過程中從知識的廣播員演變成解決工程項目問題的引導者,從旁側觀察者進階成撥燈指路者,客觀上激發了教師在學生工程能力培養過程中的驅動力。
3總結
以2021學年為例,給出以工程能力培養為導向的教學考核方案并對教學效果進行定量分析。考核方案中實行兩組“一”。
3.1“一人一板一日志”
實訓日志包括設計方案、實施步驟、效果視頻、結果分析。發布在CSDN,視頻分享到主流視頻學習網站如B站學習區。此部分在考核中占比40%。
3.2“一人一卷一考核”
考核試卷均為設計大題,全部來源10大項目模塊的實踐內容。此部分在考核中占比60%。
教學效果數據定量分析表明:計算機科學與技術、軟件工程專業的卷面及格率超過70%,優良率高達30%,卷面成績與實訓過程表現成正相關。兩個專業169名授課學生中90%表示能夠接受4節課為基本學時單元;89%表示認同數據手冊替代教材;100%認可在做中學,理論與實踐融合,以項目模塊驅動的教學方式。課程結束意見反饋中,95%學生留言:課程干貨滿滿,有較大收獲;10%-20%學生表示有意向繼續深入學習,嘗試將嵌入式系統開發作為專業發展方向。
相關教師認為,教與學雙方的興趣和熱情得到提升,學生實操能力切實提高,工程能力得到培養。
*通訊者:劉金平
基金項目:“《嵌入式系統》可持續發展教學生態環境的構建(202048JG30)”;“結合工程認證理念探索一流軟件工程人才培養途徑(202048JG29)”
參考文獻
[1]徐曉飛,沈毅,鐘詩勝,等.新工科模式和創新人才培養探索與實踐——哈爾濱工業大學“新工科‘型’方案”[J].高等工程教育研究, 2020(2):18-24.
[2]李江昊,劉豐,王偉.理論實踐強結合性課程知行合一教學改革與探索[J].計算機教育,2020(6):179-183.
[3]李輝勇,牛建偉,符宗愷等.基于虛實結合的嵌入式系統虛擬仿真實驗教學改革與實踐[J].計算機教育,2020(10):179-182.
[4]孫青,李輝勇.面向學生工程能力培養的嵌入式系統設計實訓課程教學改革實踐[J].計算機教育,2020,(3):136-140.
[5]竇亞玲,周龍,蔡美玲“.嵌入式系統”教學生態環境的構建探索與實踐[J].科教導刊,2020(35):112-113.