?

嵌入式系統課程“中斷、異常與事件”教學實踐及啟示

2016-11-10 08:31潘登陳啟軍
計算機教育 2016年7期
關鍵詞:異常事件嵌入式系統

潘登 陳啟軍

摘要:從嵌入式系統課程的中斷、異常與事件等基本概念出發,針對教學實踐中出現的問題,討論理論教學對于培養、提高學生動手實踐能力的重要性,強調將理論與實驗教學作為嵌入式系統課程的“一體兩翼”,以理論教學為基礎并使兩者彼此促進,循序漸進地開展課程設計、項目研發等教學內容,以更好地培養、提高學生的實踐能力。

關鍵詞:嵌入式系統;中斷;異常;事件;理論教學;實驗教學;啟示

0.引言

中斷、異常與事件是嵌入式系統理論與技術的3個基礎概念,圍繞這3個基礎概念形成的理論與軟硬件技術,是嵌入式系統課程本科培養階段教學的核心內容。由于嵌入式系統課程一般在微機原理課程之后開設,學生已經初步掌握了Intel微處理器的基礎知識與運用軟硬件技術進行簡單項目設計開發的基本技能,嵌入式系統與微機原理的教材內容具有很大的相似性,往往導致教師和學生在潛意識中把教與學的重點放在動手能力的提高上,很大程度上忽視了基礎概念的掌握,造成學生對這些基礎概念缺乏深刻的理解,不清楚這些概念為解決何種問題而提出,對圍繞該問題建立起來的理論體系與所采用的關鍵技術無法上升為自己的理性認識,最后集中反映在項目開發和實驗中無法充分利用微控制器提供的先進技術與優越性能。

嵌入式系統課程知識點覆蓋面廣,“軟硬”結合,與工程實踐結合緊密,具有理論性強、綜合性強、實踐性強的顯著特點。嵌入式系統的教學在重視培養學生動手能力的同時,如果不加強對嵌入式系統理論的基本概念、基礎理論與核心技術的教學工作,不注重揭示理論與技術的源變,不設法加深學生對教學內容的理解,就很難讓學生在實驗與項目開發中去驗證、體驗和鞏固所學知識,如果學生在實驗過程中“理論指導實驗、實驗驗證理論”做得不到位,就不能很好地將理論與實際相聯系,很難達到培養、提高學生實踐能力的預期目的,更談不上在潛移默化中培養學生的創新思維與研究能力。

1.加強對基本概念“中斷、異常與事件”的理論教學工作

1.1“中斷、異常與事件”的感性認識教學

在“中斷”方面,Cortex-M系列微處理器根據中斷請求產生的時機與優先級,采用“尾鏈”(俗稱“咬尾”)和“遲到中斷”等創新技術,對多個中斷請求進行更高效的管理,這與微機原理中斷處理技術存在很大不同。

幾乎所有的國內外嵌入式系統教材或技術文獻,均在“中斷”之外都提及“異?!?,“異?!迸c“中斷”顯然不是一個完全等價的概念;另一方面,幾乎所有的嵌入式系統教材,在論述微處理器或微控制器的工作原理時,又都毫無例外地將“異?!迸c“中斷”混在一起不做區分,說明微處理器或微控制器處理“中斷請求”和系統“異?!笔录欢ù嬖谥罅抗残缘姆矫?。

“事件”為觸發系統某種行為的消息和請求,或是驅動系統工作或狀態改變的某種激勵,既可以來自系統內部,也可以來自系統外部,一般由某個對象發出,并由某個對象接收和處理?!爸袛嗾埱蟆迸c“異?!钡陌l生,均可以作為“事件”,以脈沖來表征,并驅動微處理器或微控制器有目的地開展工作。

在教學中,首先引導學生思考上述問題,使其形成一定的感性認識。

1.2“中斷、異常與事件”的理性認識教學

當軟硬件出現不正常的行為時,通常會發出代表錯誤或危險的警告,這類事件被稱為“異?!笔录?;對異常進行處理,能夠控制錯誤的代碼和系統異常行為,避免錯誤蔓延。微處理器或微控制器的研發與設計,需要根據市場對“異?!笔录幚淼男枨?,提供理論支撐與理論基礎之上的技術支持,這在客觀上往往要求CPU在“異?!卑l生時能夠中止正在運行的程序,進入特權狀態去執行特定的指令或程序,以完成對“異?!笔录奶幚?。正是由于微處理器或微控制器在處理“中斷請求”與“異常事件”時遵循同一個處理機制——中斷處理機制,才有國內外幾乎所有嵌入式系統教材在論述微處理器或微控制器工作原理時,將“中斷”與“異?!被煸谝黄鸩患訁^分的現象。至于處理“異?!笔录臋C制,為何未另行命名為“異常處理機制”,乃是因為處理“異?!笔录臋C制與“中斷處理機制”相同,以及“中斷處理機制”已經先行提出并形成理論的歷史事實所致,但是二者在概念上不完全等同,針對的問題和所要達到的目的均有所不同,在教、學中必須予以明確。

“異?!弊鳛榕c“中斷”不完全相同的一個概念,其顯著差異的另一重要體現(或證據)是針對它們的允許與屏蔽指令不同。

就微處理器或微控制器的角度而言,根據觸發源(即“異?!笔录┑牟煌?,一般可將異常分為同步異常和異步異常。同步異常是指與CPU當前執行的指令密切相關,造成CPU正常運行狀態被中止的系統事件(或稱內部事件),如指令未定義、指令預取中止、數據訪問中止等。異步異常則由外部事件觸發,與CPU當前執行的指令無關,故被稱為異步異常(或外部異常)。復位即屬于異步異常。

“中斷請求”與“異?!钡陌l生都是事件(event)的子集,而中斷是處理各種異常事件和中斷請求的一種服務機制。CPU與外部設備之間的數據交換,可以采取無條件傳送和查詢傳送,也可以采用中斷的方式。若采取中斷的方式,相應的服務程序一般被稱作“中斷服務(子)程序”。就Cortex-M3微處理器而言,對異常的處理借用了中斷請求的處理機制,因為這個緣故,大多數教材和相關技術文獻對異常和中斷并不加以區分,實際上二者是兩個不同的概念,這一點必須對其有深刻的認識。

嵌入式系統理論以“脈沖”表征“事件”的發生,事件有廣義與狹義之分?!爸袛嗾埱蟆迸c“異?!睂儆凇笆录钡淖蛹?,此“事件”具有廣泛的含義?!爸袛嗾埱蟆迸c“異常(事件)”的相同點:①二者均為隨機事件,是事件的子集;②可采取相同的表征手段,一般以脈沖邊沿或高、低電平加以表征;③都采取“中斷”處理機制,以服務程序對中斷請求或異常事件作出相應處理。

二者的差異在于以下兩個方面:

(1)“中斷請求”一般指確定性隨機事件,肯定會發生,一旦發生必須作相應的處理;除了“中斷請求”以脈沖表示,具有表征“事件”發生的屬性外,“中斷”更多地代表一種機制。

(2)“異?!蓖憩F為非確定性的隨機事件,事件內容不清楚或產生的原因不明,不知道其發生還是不發生,出乎人們的意料,其效果往往是負面的,且難以預期,如某些原因不明的潛伏性故障、設備失效等。對“異?!边M行處理,是為了防止“錯誤”的蔓延,使不良后果處在一定程度的受控狀態。

狹義的“事件”,則不能將其歸人“中斷請求”和“異常(事件)”各自所屬的事件集合中去。圖1對廣義“事件”進行了描述和細分,事件的集合為event,中斷請求的集合為event IRQ常發生的集合為event exception,其他事件event other-event-event-IPR-event exception謂的狹義“事件”。

從圖1可以明顯看到,狹義“事件”“event other”與“中斷請求”“異常事件”除了具有廣義“事件”的屬性之外,顯然還存在著明顯的差異?!癳vent other”在嵌入式系統中具體表現為何種“事件”?應如何處理?與“中斷請求”“異常事件”的處理機制是否相同?這些問題都應當在教學中向學生提出,引導并激發學生去深入思考。

“中斷(異常)”的發生,一般由相應的中斷服務程序對其進行處理,需要CPU的介入;但是CPU是否響應請求并進行處理,與其優先級的高低和是否被屏蔽密切相關。CPU響應中斷或異常處理的請求時,會執行對應的中斷處理程序?!癳vent other”事件與之不同,可以在不需要CPU干預的情況下,向其他模塊發送觸發信號,觸發其他可編程模塊的關聯操作,由該模塊實現某種功能需求。有了上述理性認識之后,下一個問題是“如何設計電路對‘中斷請求‘異常事件和‘狹義事件進行預處理”。需要特別強調的是,這里要設計的處理電路,位于Cortex-M微處理器的外部,所處理的表征“中斷請求”“異常事件”和“狹義事件”也必定來自Cortex-M微處理器的外部。顯然,來自Cortex-M微處理器外部的“中斷請求”“異常事件”和“狹義事件”3個概念除了不同之處外,都屬于廣義上“事件”的范疇,存在均由脈沖表征并對其進行記錄、存儲、清除等相關處理的共性方面,這對處理電路的設計顯然有著非常大的指導意義。圖2描述了STM32F103微控制器EXTI模塊對外部“中斷請求”、異步“異常事件”和外部“狹義事件”的預處理過程。

外部“中斷請求”與異步“異常事件”的處理,與外部“狹義事件”的處理,都需要對表征它們的脈沖(邊沿)進行檢測,并進行記錄、存儲,這是處理外部多個中斷請求/異常事件/狹義事件所必需的電路功能。外部中斷請求/異步異常事件如果未被屏蔽,則由嵌入式向量中斷控制器NVIC模塊進行后續處理事宜;而外部狹義事件如果未被屏蔽,則觸發脈沖發生器PULSEGENERATOR產生脈沖,該脈沖的去向不是嵌入式向量中斷控制器NVIC模塊,而是其他外圍模塊??梢?,外部“狹義事件”與外部“中斷請求”、異步“異常事件”在概念上的異同之處,在處理電路的設計上也得到了很好地反映。

來自Cortex-M微處理器內部的“中斷請求”“異常事件”和“狹義事件”是怎樣的?都有哪些?又是如何處理的?如何通過軟件編程實現外部“中斷請求”“異常事件”和“狹義事件”的捕捉、處理?對上述問題的思考,無疑能夠幫助學生更深刻地理解“中斷請求”“異常事件”和“狹義事件”的概念,更好地掌握微處理器和微控制器工作的基本原理,更熟練地進行項目的軟硬件設計、開發。

2.在理論的指導下開展“中斷、異常與事件"的實驗教學工作

認真學習并深刻理解微處理器與微控制器處理外部“中斷、異常與事件”的基本工作原理,對運用基于Cortex-M內核的微控制器進行嵌入式系統項目開發以及充分利用其先進技術與卓越性能顯然有巨大的促進作用。案例式、驗證式基礎實驗教學內容主要是以所學知識為指導開展實驗工作,鞏固所學內容,加深理解,掌握外部“中斷、異常與事件”處理的軟硬件設計方法。一般可采取問題驅動的實驗教學方式,引導、啟發學生在實驗中細心觀察、體會和領悟。

(1)作為實驗對象的嵌入式系統具有哪些功能?包括哪些主要的軟、硬件模塊?它們是如何連接的?

(2)實驗涉及微控制器內部哪些主要模塊?

(3)實驗需要微控制器內部主要模塊的哪些功能?怎樣通過軟件對可編程模塊(例如STM32F10x系列微控制器的EXTI模塊等)按功能需求進行配置?

(4)如何捕捉外部“中斷、異常與事件”?軟件設計是如何實現的?

(5)程序是如何利用這些模塊的功能開展工作完成既定任務的?模塊相互之間的關系是怎樣的?能否描述模塊之間的動態協作過程?

驗證式實驗結束后,要求學生的實驗報告重點論述兩個方面:畫出實驗項目的硬件工作原理圖,詳細描述微控制器內部所涉及各模塊的具體功能與相互協作的工作原理;畫出軟件流程圖,結合硬件原理圖,詳細描述微控制器對外部“中斷、異常與事件”處理的流程。

實驗報告體現了學生對上述問題的思考過程,從中可以發現學生對外部“中斷、異常與事件”概念的理解程度,以及對相關理論、技術的掌握情況。

3.對嵌入式系統課程教學的啟示

除了“中斷、異常與事件”之外,嵌入式系統課程教學內容還有很多,例如嵌入式系統體系架構、微控制器內部的各可編程模塊、能耗管理、嵌入式操作系統及其移植、并發任務處理、實時計算與實時控制、嵌入式系統項目研發組織與軟硬件開發流程等。關于“中斷、異常與事件”理論與實驗教學的實踐表明:

(1)遵循“理論教學為基礎,理論教學與實驗教學相結合、相輔相成”的原則,合理、均衡地規劃和設計教學內容,加強嵌入式系統課程的體系建設。人類在實踐中形成、積累的感性認識,經過長期的實踐檢驗上升為理論認識,對某些一般性問題和共性問題具有普遍的指導意義,其正確性和有效性已經為人類的長期實踐所證明。必須重視嵌入式系統的理論教學工作,必須把動手能力的培養建立在理論學習的基礎之上,沒有對基本概念、基礎理論、基本方法和關鍵創新技術的深刻理解,動手能力的培養不可能達到很高的水平和應有的高度。

(2)理論教學要深入淺出,注重揭示基本概念、基礎理論、關鍵技術的源變,幫助學生在所學內容與現實世界之間架起“相互聯系”的橋梁,使學生能夠深刻體會到所學知識來源于實踐,必然回歸到實踐中服務于實踐,從而認識到理論知識的價值所在。

(3)實驗教學旨在幫助學生鞏固所學知識,掌握運用理論知識進行軟硬件設計、開發的基本技能。實驗內容(特別是案例式、驗證式實驗)要圍繞課程重點介紹的基本概念、基礎理論和關鍵、核心技術進行設計,遵循“有用、有趣、建立學生自信”、承上啟下、先易后難、從簡單到綜合、循序漸進的原則。

(4)以學生為認知的主體,把教與學緊密結合起來,形成教學相長的良好局面。采取問題引導與思維啟發的方式,在關鍵點處“埋地雷”,讓這些“地雷”引爆實質性問題,產生震撼性效果,在學生失去方向時“亮一盞燈”,讓一點微弱的“光亮”引導學生繼續前行,激發學生思考、學習的興趣,提高學生學習、研究的主動性、積極性,變被動學習為主動學習,在潛移默化中培養學生創新思維與創新研究能力。

(5)密切跟蹤相關領域的最新研究進展,從卓越人才的培養出發,將課程設計、項目研發/科技競賽、校企合作實訓等作為嵌入式系統課程教學的后續內容,注重教學內容基礎性與先進性的統一。以課程設計、項目研發/科技競賽、校企合作實訓等為主要內容的嵌入式系統教學模式,有別于傳統的全日制教學模式,作為補充是非常必要的,可以豐富嵌入式系統的教學手段,幫助學生了解智能感知、智能計算、網絡通信、云計算、物聯網等研究前沿與熱點問題,學習并掌握思考問題、解決問題的方法,親身體驗工程項目研發的全部流程,一般放在理論與實驗教學之后比較適宜,個別比較突出的學生也可提前開展。

圖3描述了同濟大學嵌入式系統教學的路線,體現了“以培養學生動手實踐能力為目標導向、以理論教學為基礎,在理論知識的指導下,以實驗、課程設計、項目研發/科技競賽、畢業設計作為主要實踐手段,循序漸進地提高學生的動手實踐能力”的教學理念。

實驗分兩個階段開展:案例式、驗證式實驗為基礎實驗部分,旨在鞏固學生所學的書本知識,加深理解;綜合性、探究式實驗有一定的難度,著眼于學生動手能力的提高,引導、激發學生的學習、研究興趣,使其初步了解問題的分析方法和研究的基本過程。課程設計、項目研發/科技競賽與畢業設計綜合性和難度逐步提升,注重學生對前沿性熱點問題的了解,讓學生能夠綜合、靈活運用掌握的嵌入式系統基本理論知識與軟硬件開發技能認識問題、分析問題和解決問題,對項目研發組織有初步的感性認識。綜合式、探究式實驗,課程設計、項目研發/科技競賽、畢業設計等內容的開展,可考慮與企業深度合作。對于項目研發與科技競賽,學生既可以從教師設定的項目中選取,也可以自行擬定研究課題。

從圖3還可以看到,學生動手能力的提高,歸根結底建立在理論知識的深刻理解、牢固掌握和綜合、靈活運用的基礎之上,教學反饋的目的正在于此。

4.結語

嵌入式系統是一種專用的計算機系統,融合了計算機、電子、通信等多種技術,廣泛應用于通信設備、信息家電、工控設備、智能儀器、網絡設備、汽車電子等各個領域。由于巨大的市場需求,嵌入式技術是近年來IT領域發展最快的方向之一。嵌入式技術人才的培養,一般分為硬件和軟件兩個方向,均強調對學生實踐能力的培養和提高,而教學過程中學生動手能力的提高,必須以嵌入式系統軟、硬件基礎理論與核心技術的學習、理解和掌握為依托,應著眼于提高學生運用理論于實踐中解決實際問題的綜合能力。脫離了對基本概念、基本理論、基本思路、先進技術與方法的深刻領會與綜合、靈活運用,任何提高學生動手能力的想法和采取的措施只能是無源之水,不可能達到更高的水平和所期望的高度。理論教學與實驗教學是嵌入式系統課程的“一體兩翼”,是提高學生動手實踐能力的必經之途,宜雙管齊下,不能偏廢,更不能將教學目標與教學手段混為一談。認真學習和理解被人類實踐長期且無數次檢驗和證明的理論、方法、技術,并與教學實驗和項目研發實踐相結合,是提高學生動手實踐能力的有效途徑。

猜你喜歡
異常事件嵌入式系統
發電機負序電流異常增大的原因分析
電力計量裝置異常的監測方法及處理對策
網絡輿情反轉現象中的“參照點效應”
保羅·利科的“話語事件”思想
授之以魚,不如授之以漁
熱點事件中的“輿論搭車”現象探析
基于物聯網項目驅動的嵌入式系統教學改革的研究與實踐
面向實踐創新人才培養的嵌入式系統教學研究
探討糖尿病合并促甲狀腺激素、甲狀腺激素異?;颊叩呐R床診斷治療
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合