黎建
摘要:嵌入式系統(tǒng)技術涉及多學科,應用非常廣泛。文章針對大學計算機類專業(yè)開設“嵌入式系統(tǒng)”課程所存在的問題,進行了較深入地分析和研究,提出了改進教學的方法和具體措施。教學實踐表明,使用改進后的教學方法,能夠達到預期的教學效果。
關鍵詞:嵌入式系統(tǒng);ARM;Linux;教學方法;計算機類專業(yè)
中圖分類號:G642 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2021)35-0271-03
Research on the Teaching Method of "Embedded System" Course for Computer Majors
LI Jian
(Guangzhou College of Technology and Business, Guangzhou 528138,China)
Abstract: Multi-disciplinary technologies are involved in the "Embedded System" Courses. The Embedded systems have applications across a wide variety of industries. This paper analyzes and researches the problems found in the teaching of Embedded System courses, which have been offered by Computer Science programs in universities. A new teaching method is described in this paper with detailed protocols to improve teaching method. The teaching practice shows that the use of improved new teaching method can achieve the expected teaching effect.
Key words: embedded systems; ARM; linux; teaching method; computer majors
隨著科學技術的進步,信息技術的發(fā)展,在5G技術的推動下,以信息化、智能化、工業(yè)化及物聯(lián)網深度融合為方向的科技革命席卷而來,并迅速成為社會關注的焦點。嵌入式系統(tǒng)作為一種專用的計算機系統(tǒng),在各類智能化設備中,應用極為廣泛,如工業(yè)過程控制、數(shù)控機床、電力、石油化工系統(tǒng)等[1]。此外,在汽車電子,智能儀器,移動設備中應用發(fā)展更為突出[2]。由于巨大的市場需求,嵌入式系統(tǒng)與技術是近年來IT領域發(fā)展最快的方向之一,特別是嵌入式軟件已成為我國IT產業(yè)中的一個重要的新興產業(yè)和增長點。然而,嵌入式人才培養(yǎng)由于周期長,影響了嵌入式產業(yè)的發(fā)展,為此,“嵌入式系統(tǒng)”成了各大學電子類和計算機類專業(yè)的重要課程之一。但是,計算機類專業(yè)在嵌入式課程教學中,存在一些需要解決的問題。文章對這些問題,進行了較深入地分析和研究,并提出了行之有效的改進方法。
1 電子類和計算機類專業(yè)的教學差異
嵌入式系統(tǒng)是以應用為中心,以計算機技術為基礎,并且軟硬件可裁剪,適用于應用系統(tǒng),對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統(tǒng)[3]。從定義可以看出,嵌入式系統(tǒng)要做到軟硬件可裁剪,必須既要設計硬件,也要設計軟件。由于課時限制,不可能全面鋪開講授,那么,重點應該是硬件還是軟件為主?對電子類專業(yè),了解硬件結構,并且能夠對硬件裁剪設計,寫好設備驅動程序,在給定功能的情況下,能夠設計出最小系統(tǒng)板,可以達到教學要求。但是,對于計算機類專業(yè),其所學的硬件有關課程,是不夠支撐學生對硬件進行設計的,這也是為什么一些計算機類專業(yè)沒有開設這門課程的主要原因。但在軟件設計能力方面,比電子類專業(yè)學生要強很多,這就是優(yōu)勢。當然,計算機類專業(yè)不同,所學的軟硬件課程有比較大的區(qū)別,我們一定要因地制宜,需要將學生尚未學習的硬件前置課程的知識融入教學過程中[4]。對偏軟的計算機類專業(yè),如軟件工程專業(yè),可能沒有開設數(shù)字電路,單片機技術等課程,教學重點應該放在帶操作系統(tǒng)的嵌入式應用與設計上,而這種應用恰恰是在物聯(lián)網,機器人,智能設備,工業(yè)控制等領域不可缺少的。由于社會對嵌入式軟件開發(fā)的需求日趨上升,因而人才需求量巨大??偟膩碚f,計算機類專業(yè)開設“嵌入式系統(tǒng)”課程,對提高學生的軟硬件綜合應用能力非常有效,特別是在嵌入式操作系統(tǒng)上開發(fā)應用,優(yōu)勢超過電子類學生,為學生就業(yè)增加了機會。
2 教學內容研究
嵌入式的概念非常廣,嵌入式計算機可以從8位51系列單片機到64位ARM系列處理器,當然,應用場所不一樣:低端應用由于成本原因,往往采用8位單片機,如鍵盤鼠標控制;隨著科學技術的進步,32位、64位處理器逐漸成為高端應用主流,如機器人,無人機,移動設備等。中低端應用,受處理器性能的限制,一般沒有操作系統(tǒng),直接用程序控制硬件,即所謂的“裸奔”(一些32位單片機也難上操作系統(tǒng),如STM32系列),開發(fā)者要有較深厚的硬件基礎,掌握計算機的底層工作原理和設計,熟悉匯編、C語言等基于底層的開發(fā)語言及方法,這是電子類學生的優(yōu)勢。對應于高端應用,由于處理器硬件資源既豐富又復雜,基本上不可能直接控制硬件,必須依賴于操作系統(tǒng)。這種情況下,計算機類專業(yè)由于開設了不少語言類(如C、C++、Java等),操作系統(tǒng)類(Linux,Android等)課程,特別是一些算法和數(shù)據(jù)處理課程,優(yōu)勢非常明顯:可以直接裁剪和優(yōu)化操作系統(tǒng),對現(xiàn)場采集到的數(shù)據(jù)進行清洗和挖掘及處理,能夠開發(fā)語音處理,圖像識別等人工智能設備必需的高級應用。然而,計算機類學生花了不少時間學習C,C++,雖然編程能力很強,但要編寫設備驅動程序,還是有不少困難,主要原因是對硬件接口原理的理解不夠。一般情況下,硬件生產廠家都會提供設備驅動程序和API,通過調用API,可以很方便地實現(xiàn)驅動硬件設備,不影響嵌入式應用軟件開發(fā)(如Android系統(tǒng),通過API,我們可以使用移動設備上的LED燈, GPS等)。當然,在教學方法和教學內容上與電子類專業(yè)應有較大的區(qū)別。首先,要重點講授什么是嵌入式計算機,什么是嵌入式操作系統(tǒng)以及嵌入式軟件開發(fā)的特點,讓學生知道嵌入式就在身邊:小到U盤鼠標,大到路由器,手機;在嵌入式處理器結構方面可以少講,畢竟,學生已經學過“計算機組成原理”,但對硬件接口可以講一些,盡管學生可能對協(xié)議不太明白,但通過實驗可以慢慢理解。接下來,教學重點要從搭建Linux環(huán)境,特別是交叉開發(fā)環(huán)境入手,掌握BootLoader的功能和作用,再根據(jù)嵌入式操作系統(tǒng)和內核的特點,學習如何裁剪和優(yōu)化。然后,利用系統(tǒng)自帶的驅動程序或API,試著編寫一些簡單的硬件控制程序,再熟悉一下驅動程序的編寫規(guī)則和流程,對其進行改寫,加深理解程序是怎樣控制硬件的;當然,掌握系統(tǒng)調用方法也是必需的。最后,講授嵌入式軟件與普通軟件開發(fā)的異同點,通過布置綜合應用項目,讓學生加深對嵌入式軟件開發(fā)的理解。如果教學課時充足,講一些Android應用:可以讓學生通過NDK工具,設計一個可以調用自己用C(或C++)編寫的App。
3 教學方法和經驗探索
計算機類一些專業(yè)硬件課程不多(如軟件工程專業(yè)),當學生看到嵌入式實驗箱或評估板后,可能一臉茫然,屬正常,不用擔憂。隨著教學的深入,學生開始進入狀態(tài),有可能會喜歡這門課,但如何讓學生真正學會并掌握這門課程,是每個嵌入式課程教師的重要職責。因此,有必要對教學方法和經驗進行探索。
3.1要真正讓學生理解嵌入式計算機與通用計算機的異同點
嵌入式計算機是計算機技術發(fā)展中的一種計算機存在的形式,是從計算機技術的發(fā)展中分離出來的,能夠嵌入到對象體系中,而嵌入式系統(tǒng)則是嵌入對象體中的專用計算機系統(tǒng)。所以,我們在講授時,重點要體現(xiàn)嵌入式系統(tǒng)的“嵌入”“專用性”“計算機”這幾個基本特征,由此可以引出,這類應用系統(tǒng)對功能、可靠性、成本、體積、功耗等都有嚴格要求。還有,SoC的基本概念學生也要掌握,可以通過我們熟悉的手機為例,來闡述嵌入式與通用計算機的異同點。必須讓學生明白,絕大多數(shù)情況下,嵌入式系統(tǒng)對實時性有很高的要求,所以其軟件設計比通用軟件設計要求更高,開發(fā)工作量和難度更大。另外,還要引入協(xié)同設計的思想,讓學生知道嵌入式產品的設計過程中,軟件設計和硬件設計是緊密結合、相互協(xié)調的。只有這樣,既可以最大限度地利用有效資源、縮短開發(fā)周期,又能取得更好的設計效果。
3.2培養(yǎng)學生良好的硬件資源使用習慣
嵌入式系統(tǒng)設計課程一般在大三大四開設,前二年的實驗和編程課程,都是在通用PC機上進行的,對硬件資源使用沒有約束,學生也養(yǎng)成了“大手大腳”的習慣:編程時動不動就定義和申請大數(shù)組,雖然數(shù)據(jù)量并不大;可以用字節(jié)數(shù)組來存放的數(shù)據(jù),為圖方便,經常使用整數(shù)數(shù)組類型;放著快速分類查找數(shù)據(jù)的算法不用,卻用最原始的枚舉法,只要結果正確就行,不管CPU耗時多少。如果嵌入式設計還是這樣,可能導致項目失敗或成本劇增。一些計算機類專業(yè)沒有學過單片機課程,不知道有些情況下,為了節(jié)省幾個字節(jié),或讓CPU運行快0.1秒,或為了節(jié)省1分錢的硬件價格,要花費不少精力(2019年,我國出口鼠標2.9億個,節(jié)省1分錢的硬件成本,其收益都非??捎^。在這方面,電子類學生編程習慣要好很多)。如何培養(yǎng)學生良好的硬件資源使用習慣呢?教師先要講解嵌入式系統(tǒng)資源的組成,不同芯片有不同資源;不同功能需求,使用不同的芯片;不同資源,有不同成本價格。可以給出一些項目需求和嵌入式CPU列表,讓學生自己選擇嵌入式芯片,按項目編程,以能夠滿足項目功能要求的最小系統(tǒng)為優(yōu)勝者?;蛘?,教師設定項目需求和CPU類型,讓學生編程實現(xiàn),通過檢查學生的程序,了解他們對資源的使用情況,程序優(yōu)化情況以及運行情況。通過這樣反復訓練,可以培養(yǎng)學生良好的編程習慣以及嵌入式軟件編程風格。
3.3 怎樣讓學生喜愛嵌入式系統(tǒng)開發(fā)
對一些硬件課程開設比較少的計算機類專業(yè),學生剛開始感覺新鮮,都在認真聽課,但隨著課程的深入,部分學生感到實驗和調試環(huán)境與之前不同,不習慣,硬件工作原理不好理解,調試也不方便,逐漸失去興趣。因此,教師應該從下面幾個方面來提高學生學習嵌入式課程的積極性:
3.3.1實驗和調試環(huán)境的選擇
嵌入式教學設備有很多廠家生產,提供的實驗和調試環(huán)境五花八門。如果從學生經常使用的IDE開發(fā)環(huán)境和工具來說, Eclipse+JLink調試工具是不錯的選擇。Eclipse集成環(huán)境,計算機類學生非常熟悉,C、C++、Java、Web等課程的學習一般都會使用它,非常方便,當然,廠家要提供相應的插件來支持嵌入式軟件的開發(fā)和調試。這樣,在學習中,不會為搭建環(huán)境而浪費時間,而且運行和調試程序的方法基本沒有改變,學生更容易上手。多年的教學經驗表明,學生使用Eclipse來完成實驗編程和調試任務,都不會有什么困難。
3.3.2 I/O口編程應該注意的問題
I/O控制技術是硬件接口技術中最簡單的一種,嵌入式編程教學都是從控制I/O口開始。在I/O口上,接上LED燈,電機或蜂鳴器等硬件模塊,通過程序來控制它們動作,這是必做的實驗,也是嵌入式系統(tǒng)設計的入門實驗。如果學生能夠理解I/O口的基本原理,并能成功控制硬件的運行,他們一定很有成就感,就會對嵌入式軟件開發(fā)開始感興趣。但是,如果學生不理解I/O口的工作原理,控制硬件失敗,就會遭到挫折,失去對嵌入式軟件開發(fā)的興趣。因此,I/O口編程實驗在嵌入式教學中非常重要。當然,對于電子類專業(yè)學生,上過很多硬件有關課程, I/O口編程就比較簡單了,但對于計算機類專業(yè),特別是一些數(shù)字電路都沒有學過的學生,掌握I/O口編程有點困難。教師在講授時,重點應該讓學生多理解高低電平,拉電流,灌電流等基本概念,還有上拉電阻下拉電阻的作用??刂萍拇嫫鞯脑O置比較難,學生一般掌握不好,最后導致程序運行失敗。所以,對控制寄存器的設置方法,教師也要作為重點,多花費些時間講授,消除計算機類專業(yè)學生對硬件的排斥[5]。需要注意的是,常見的嵌入式芯片,一般都是RISC指令集(如應用最為廣泛的ARM系列芯片),不能直接對寄存器某位設置,需要通過移位和與或非組合操作,使用C語言編程時,學生很容易犯錯,教師要循循善誘、科學指導,把方法講透,使設置變得容易。
3.3.3設計讓學生感興趣的實驗項目
嵌入式系統(tǒng)設計課程,理論性和實踐性都較強,特別注重理論與實踐相結合。實驗課的目的是,幫助學生鞏固和加深理解所學的理論知識,訓練他們的實驗技能、工程實踐觀點和嚴謹?shù)目茖W作風[6]。通過實驗,學生可以對嵌入式系統(tǒng)的設計與開發(fā)過程有更深的體會,因此,在教學方法上,要圍繞著提高學生分析問題、解決問題的能力、綜合開發(fā)能力、團隊作戰(zhàn)能力而展開。為了上好實驗課,要設計一些讓學生感興趣的實驗項目:I/O口編程除了經典的走馬燈實驗外,還可以讓學生通過不同的順序來控制燈的顯示,從中得到編程的樂趣;通過控制蜂鳴器,實現(xiàn)莫爾斯電碼實驗,要求學生編程發(fā)出SOS電碼聲音,學生對這樣的實驗非常有興趣;利用Linux下系統(tǒng)調用和多線程技術,操作LCD顯示屏[7]、觸摸屏、音頻設備等設備,實現(xiàn)音樂和動畫播放實驗和對弈游戲實驗(比如:貪吃蛇小游戲[8]),使學生對嵌入式軟件開發(fā)方法,有了更進一步的認識,并且在“玩”中學會不少編程技巧。總之,教師要對實驗項目認真對待,好好設計,是保證學生能夠學好嵌入式系統(tǒng)設計課程的條件之一。另外,學生分組實驗也很有必要。不建議實驗課一人一組,盡管有些學校設備充足。做嵌入式實驗,學生從搭建環(huán)境,到編程,調試都是很費時間的,對復雜一點的實驗,要保證在有限的課時內完成,不提倡個人英雄主義,要體現(xiàn)團隊作戰(zhàn)能力,學生分工協(xié)作共同完成,這也是為將來學生走向社會打下一定的基礎。如果學生經常完不成實驗,會有很大的失落感,久而久之失去對嵌入式課程的興趣。所以,編寫實驗指導書,讓學生快速上手,是教師的職責所在。
4結束語
隨著信息化、智能化、工業(yè)化及物聯(lián)網深度融合,計算機類專業(yè)開設“嵌入式系統(tǒng)”課程是很有必要的。但是,不同的計算機類專業(yè),所學的軟硬件課程有較大的區(qū)別,所要求的先修課程也可能難以滿足,因此,我們一定要因地制宜,取長補短,充分發(fā)揮本專業(yè)優(yōu)勢,讓學生真正掌握好“嵌入式系統(tǒng)”課程內容。經過多年的教學實踐證明,計算機類專業(yè)學生在嵌入式系統(tǒng)應用設計方面,能夠做得很好。
參考文獻:
[1] 馬志剛.嵌入式系統(tǒng)的現(xiàn)狀及發(fā)展趨勢[J].中國設備工程,2020(21):145-147.
[2] 王龍飛.嵌入式系統(tǒng)的應用現(xiàn)狀及發(fā)展趨勢[J].中國新通信,2018,20(23):95-96.
[3] 王劍等.嵌入式系統(tǒng)設計與應用:基于ARM Cortex-A8和Linux[M].北京:清華大學出版社,2017.
[4] 吳晨睿.新工科背景下“嵌入式系統(tǒng)”課程教學改革研究[J].南方農機,2021,52(14):173-174.
[5] 俞翔, 楊慶, 曹欲曉,等. 應用型本科計算機專業(yè)嵌入式系統(tǒng)課程教學改革方案研究[J]. 中國教育技術裝備,2018(8):90:92.
[6] 王寶珠,李文娟,鄧華陽.新工科背景下,應用型本科嵌入式系統(tǒng)教學改革[J].科技視界,2020(23):9-10.
[7] 李建祥.嵌入式Linux系統(tǒng)開發(fā)入門寶典-基于ARM Cortex-A8處理器[M].北京:清華大學出版社,2016.
[8] 李亞蘭, 陳淼, 李翔,等. 培養(yǎng)實踐動手能力的嵌入式系統(tǒng)教學方法改革[J]. 計算機教育, 2020(3):141:144.
【通聯(lián)編輯:王力】