


摘要:計算機嵌入式系統簡稱嵌入式系統,是一種完全嵌入受控器件內部為特定應用而設計的專用計算機系統,其體積小、低功耗、可定制的特性,使其在當今這個萬物互聯的時代得到海量應用,小到電子手表,大到通信基站,貌似不可見卻幾乎無處不在。廣闊的應用和市場催生了大量的人才需求,為了更好地培養嵌入式系統方面的應用型人才,本文結合多年的企業嵌入式系統開發和管理經驗,對嵌入式系統理論和實踐課程的教學方法和流程進行了嘗試性改革,讓學生用更貼近企業流程和實踐的方式去學習,縮小學校教學和企業實際操作之間的天然鴻溝,力爭培養出在企業可以更快上手的應用型人才。
關鍵詞:互聯網;嵌入式系統理論與實踐
引言
在當今這個萬物互聯的時代,運用嵌入式系統的設備已經成為日常生活中不可或缺的一部分,小到可穿戴的手表,大到智能汽車;從家庭使用的掃地機器人,到戰場上參戰的無人機,幾乎到處可見嵌入式系統的身影。我國的新興產業,如移動互聯網、云計算、大數據、物聯網、智能制造、移動醫療服務、智能安防等,對嵌入式系統工程人才需求也有大幅增長[1]。為了讓教學更好地服務生活,培養實用型人才,各高校都將嵌入式系統相關知識的學習納入人才培養計劃。
IEEE(美國電氣和電子工程師協會)對嵌入式系統的定義是用于控制、監視或者輔助操作機器和設備的裝置,是一種專用的計算機系統。嵌入式系統的硬件設備并不是我們通常理解的PC形象,它并沒有一個固定的形象,很難從產品外形上直接發現其身影,因為其自身并沒有固定的形態,而是隱藏在其他產品的內部,也正因為如此,其擁有優越的可裁剪特性,在降低產品功耗的同時也降低設備成本。一般來說,嵌入式系統包含軟件和硬件兩個部分,嵌入式系統的軟件部分就是我們通常所說的BSP(board support packet)驅動,主要是將硬件功能用軟件語言包裝成上層應用可調用的函數接口,屬于硬件到軟件的功能封裝和轉化,是硬件之上的第一層軟件,是軟件層面的最底層軟件。
嵌入式系統課程是高等院校電子和信息專業一門非常重要的課程[2],重在培養學生的動手能力、解決復雜工程問題的能力,但傳統的教學模式通常側重于理論教學,難以激發學生的興趣和主觀能動性[3]。近年來,一些高校對嵌入式系統課程的教學進行了多方位的改革嘗試[4-7],均取得一定的成果。本文將企業規范的嵌入式系統開發流程和要求與高校教學的目的和方法充分融合,開發出一套適用高校嵌入式系統課程的與企業開發流程緊密結合的新教學模式,使得學生能學習到更具實用性的嵌入式系統理論知識和開發模式,以便學生走上工作崗位后能更高效、更順暢地適應企業要求,從而增加高校教學的實用性。
1. 嵌入式系統課程的知識體系概覽
嵌入式系統課程是涉及電子、計算機、網絡、通信等多專業交叉的綜合性課程[8]。嵌入式系統體系從知識架構上可以歸為兩大類,即硬件知識和軟件知識。其中,軟件包含BSP驅動軟件以及部分應用層軟件,各層之間涉及的知識體系如圖1所示。在低年級所學的基礎課程,如電子線路、模擬電子線路、數字邏輯電路、硬件語言等屬于硬件類知識,查看或設計嵌入式系統產品設計原理圖以及PCB圖的時候會用到此類知識。VHDL、verilog等硬件編程語言主要用來仿真或針對EPLD/FPGA等可編程器件的開發,BSP驅動所涉及的最主要的基礎課程就是C語言,此外還有Python語言等,同時輔以匯編語言、Makefile、Shell等工具語言進行的自動化編譯和開發。一些較復雜嵌入式系統設備還自帶操作系統,這個操作系統也屬底層驅動的范疇,屬于CPU驅動,但并不是所有嵌入式處理器都可以稱為CPU,不帶操作系統的一般被稱為嵌入式微處理器(micro processor unit,MPU)或嵌入式微控制器(micro controller unit,MCU單片機),高校嵌入式系統知識教學主要是圍繞單片機類的MCU進行的。因為操作系統代碼相當龐大,功能非常復雜,可展示性不強,因此一般在商用設備中使用,不太適合用于教學,而讓單片機運行出一個可視化的功能僅僅需要簡短的代碼驅動即可,非常適合按小時為計時單位的課堂教學和實踐。
2. 當前嵌入式系統課程教學普遍存在的問題
嵌入式系統課程是在完成眾多基礎課程的學習之后開設的一門應用型課程,該課程所依賴的每一門獨立基礎課程的學習難度都在中等偏上,且學習過程中非常依賴實踐來強化學習和理解。如果該課程的教學模式設置不合理,就可能導致教學過程中出現各種意想不到的問題,從而影響教學效果,最常見的現象就是學生入職工作崗位后,發現在學校所學的知識和工作實踐中用到的知識之間存在著偌大的壕溝。學生最普遍和突出的感受就是:大量在學校學習的知識在工作中貌似并沒用到,而在工作中要用的知識在學校好像又沒學到;即使某些知識還有印象,但對細節掌握不清;或者同樣的知識點在老師教學過程中的側重點以及覆蓋面與工作中的似乎并不一致,教學要求和實際應用的要求差別也很大。這些感受明顯違背高校教學的初衷,需要進一步改進。
產生這些感受的主要原因是由教學階段和工作階段兩者間的各種差異造成的。(1)行動目標不一樣:教學以知識傳授為目的,工程應用以實現功能、解決問題為主。(2)時間投入度不一樣:由于在學校期間需要同時進行多門課程的學習,因此不可能像在公司那樣長時間純粹地去學一個知識點。(3)學習方法不一樣:學校主要以教師講授為主、實驗為輔,而工程實踐中全靠在實踐中積累經驗。(4)學習深度不一樣:學校在教授知識時需考慮覆蓋面,因此不允許在課堂上無限制地深究細節,而具體到工作中,個人有足夠靈活的時間對某知識點進行深挖,而且只有對知識點掌握足夠深,才能解決開發過程中遇到的各類問題,最終得到正確的功能。此外,解決故障的過程會很好地加深對該知識點的掌握和理解。(5)上下級知識的學習契機不一樣:在學校,因為課程安排的原因,對于嵌入式系統的知識樹上各科的學習不可能同時進行,而是需要分布在幾個學期中先后學習,因此經常造成學生遺忘先前已學知識的現象;而在工作中,一個系統中的各層級的知識是需要同時研究和掌握的,因此彼此間能夠促進學習和理解,更易于掌握。(6)過程管理不一樣:在課堂上開發一個功能,完全以目標為導向,只要能實現功能就算完成任務;而公司在開發過程中有很多額外的要求,如開發流程規范上的要求、流程管理合規性以及工作效率等各方面的要求,因此實踐過程中需要考慮得更多。(7)考核方法和要求不一樣:在學校,對于課程的考核以筆試為主、實踐為輔,而且實踐時對于功能的驗收屬于一過性的,只要給老師展示的時候功能運行正常就可以通過;而在公司,沒有筆試的環節,在實現功能的同時還需要考核代碼的封裝性、可讀性、穩定性、可移植性、運算復雜度等各種因素。
以上差異存在于教學過程的某一個或多個環節,各教學環節存在的問題歸納如表1所示。
3. 教學過程的改進
為減小學校應用教學和企業實踐之間的差異,針對表1提出的高校嵌入式系統課程教學各環節存在的問題,借鑒企業的開發管理過程,融合企業管理辦法和流程,提出相應的改進辦法,如表2所示,從課程設置、教學過程、考核方式等三個環節進行嵌入式系統課程教學方法的改進。
3.1 課程設置
嵌入式系統是一門實操性很強的課程,之前的教學計劃中理論課時占比偏高,實踐占比偏低,大概2:1的時間比例,較多的理論課時導致這門偏實操的課程沿用了理論課程的教學模式,從而導致教學目標的偏離。在該環節的教學改革中,充分考慮了學生作為嵌入式系統開發新手需要的學習過程,以及開發過程的完整性,提高實踐課時的占比,將當前的理論課時與實踐課時的占比從2:1改為1:1的設置。
3.2 教學過程
在嵌入式系統課程的課堂內容中,為了強化課程間的銜接關系,在課堂上增加了對嵌入式系統課程與其他相關課程的關系梳理,幫助學生及時建立課程之間的神經鏈接,并在教學過程中引用實例驗證,使抽象概念具體化,深化理解。
編碼是嵌入式系統課程中非常重要的環節,代碼走讀是學生學習如何從一個機器語言的學習者轉換成使用者的最有效的方式,因此在課堂上通過充分分析例程,增加了對學生代碼走讀能力的培養和檢驗。
嵌入式系統課程在實踐的時候,如果僅僅以完成功能為主要目標,那就會與公司的開發流程和規范產生較明顯的脫節。對于一個軟件開發者,功能的實現只是目標之一,代碼的規范性、可調性、封裝性、移植性、穩定性、兼容性、可讀性、可維護性以及代碼復雜度等均是衡量代碼質量的指標,是需要在實踐過程中考慮的。因此,在學習過程中培養考慮這些性能的意識和習慣,在驗收的時候增加了代碼性能方面的評分標準。
為更好地銜接教學和工作,在教學過程中,不僅需要關注功能是否完成,還要關注代碼的穩定性,以及內存泄漏、時間復雜度、CPU執行效率等軟件質量考核指標,保證代碼的運行效率,在學習階段就要對學生植入關注代碼質量指標的理念。除了以上正向的理念培養,還要通過設計不合理的代碼,進行反向教育,讓學生親身體驗代碼設計不合理帶來的煩惱,加深理解。
3.3 考核方式
嵌入式系統課程傳統的考核方式以筆試為主,筆試分占80%左右,實踐占總分的20%,這樣的占比導致部分學生出現重筆試、輕實踐的心理,因此有必要將實踐的總分提高。經過分析討論,我們在教學過程中將實踐得分占比提高到50%。但要注意的是,由于互聯網的發展,很多芯片驅動在網上都能下載到代碼,有的通過人工智能就可以把芯片的功能開發出來,因此要讓學生完成功能展示并不難,甚至出現了個別學生可以展示很復雜的功能,然而這些學生卻連一行代碼都解釋不了。因此,要將考核方式從功能展示為主轉化為代碼講解為主,在驗收時對功能要求做微小調整,讓學生現場改造功能,以檢查學生對代碼的掌握程度,除了考核功能,還需要讓學生講解他們在設計代碼時對代碼質量指標的考慮。
4. 實施效果
原先大部分嵌入式系統教學仍然處于以理論學習為主、課程設計為輔的局面,這導致學生的實踐能力得不到提升,缺乏對嵌入式系統課程的學習興趣[9-10],而改進后的教學方法,將原先的以教為主、學生被動接收的模式改為教學和實踐并重的模式。經過一年的實踐,從教學效果上來看,學生上課的積極性和對編程知識的掌握度均有所提高,同時由于在教學實踐過程中引入了公司的開發流程和管理要求,讓學生對實踐的參與度更高了。考核模式的修改大幅提高了學生對實踐課的重視度;驗收方法的改革,給學生以正向的動力去自主學習,學習效率得到了明顯的提高。
結語
本文參考企業規范的嵌入式系統開發流程對嵌入式系統教學的過程和方法進行了修正,通過對課程設置、教學過程、考核方式三個環節進行教學改革,開發出一套更能幫助學生學習和理解知識的新教學模式。通過一學年的教學實踐,新的教學方法很好地改變了學生們對實踐課時的重視程度,大大提高了他們的動手實踐能力,通過實踐也加強了他們對知識的掌握和理解。
參考文獻:
[1]王國霞,李擎,崔家瑞,等.嵌入式課程群多層次創新實訓平臺研制[J].實驗技術與管理,2021,38(3):163-167,235.
[2]馬明星,張玉婷,雷祥.嵌入式課程設計模式探索[J].電腦知識與技術,2017,13(6):177-178.
[3]鐘劍丹.基于競賽驅動的嵌入式課程教學模式探究[J].科教導刊(電子版),2024(5):110-112.
[4]姚睿,崔江,周翟和,等.云桌面下嵌入式技術課程實驗環境建設與教學模式探索[J].實驗技術與管理,2019,36(7):50-53.
[5]劉凱,張蕾.“游戲化課堂”教學模式探索與實踐——以《嵌入式創新設計》課程為例[J].長沙民政職業技術學院學報,2013(4):63-65.
[6]張良,易伶俐.核心價值觀如何進課程——聯合國教科文組織的嵌入式設計模式及其意蘊[J].比較教育研究,2021,43(11):73-79.
[7]柴艷峰,張睿,張薔,等.基于開源項目的計算機組成原理課程“嵌入式”教學模式探索[J].計算機教育,2024(2):164-168.
[8]孫青,李輝勇.面向學生工程能力培養的嵌入式系統設計實訓課程教學改革實踐[J].計算機教育,2020(3):136-140.
[9]陸慶,肖堃,聶曉文.嵌入式課程實驗教學體系的改革與創新[J].實驗科學與技術,2011(S1):201-203,216.
[10]胡仕剛,曹會祎,吳笑峰,等.基于開發板的嵌入式系統課程教學模式探索[J].信息通信,2016(7):160-161.
作者簡介:陸紅紅,碩士研究生,研究方向:計算機嵌入式開發;通信作者:崔艷軍,碩士研究生,cuiyanjun_njust@hotmail.com,研究方向:光電技術人工智能。