焦 俊,何如海,王永梅,范國華,馬慧敏
(安徽農業大學 1.信息與計算機學院2.經濟技術學院,安徽 合肥 230036)
?
基于軟硬件互補的嵌入式系統課程教學
焦俊1,何如海2,王永梅1,范國華1,馬慧敏1
(安徽農業大學 1.信息與計算機學院2.經濟技術學院,安徽 合肥 230036)
摘要:本文分析了當前嵌入式系統課程教學方面存在的問題。圍繞嵌入式系統課程的教學內容,提出了嵌入式軟硬件互補的教學方法。在嵌入式系統互補教學、疑難問題解決和實驗設計幾方面,以具體實例闡述了軟硬件互補教學的具體措施。教學實踐表明,軟硬件互補教學方法能夠有效解決課程中的難點,提高學生對課程的掌握程度。
關鍵詞:軟硬件互補;嵌入式系統;教學改革
嵌入式系統(Embedded Systems)是指“嵌入到對象體系中的、用于執行獨立功能的專用計算機系統”。嵌入式是目前最活躍、最具有創造力的技術之一,在智能儀器儀表、消費電子、國防和工業控制等方面都有著廣泛的應用[1-2]。
國內大部分高等院校都將嵌入式系統作為計算機、信息技術、電子、通信等專業的必修課程。在2004年,IEEE(Institute of Electrical and Electronics Engineers)認為嵌入式系統包括嵌入式微處理器、實時操作系統和嵌入式軟件設計等課程。國內開設嵌人式系統課程的高校是通過增設一門或幾門嵌入式相關的課程來彌補基礎的不足,顯然這是不夠的[2]。因此,如何充實學生在嵌入式系統課程上的薄弱環節,提高嵌入式系統課程的教學質量,培養出滿足社會需求的創新型嵌入式系統開發人才,是各個開設嵌入式系統課程高校面臨的實際問題。本文以農林院校電子信息專業學生開設嵌入式系統設計課程的教學進行研究和探討,尋求一套行之有效的教學方法。
1嵌入式系統課程教學中存在的問題
學習“嵌入式系統”課程前,需要先修“數字電子技術”,“計算機程序設計”,“計算機組成原理”,“微機接口”等基礎課程。“嵌入式系統”的教學主要分為兩類:一類是硬件,以嵌入式處理器為核心;一類是操作系統,以嵌入式操作系統(比如:Linux或wince)為主[3]。由于學時數以及專業方向要求的限制,該課程的教學只能屬于其中的一類。
隨著嵌入式技術的不斷發展,嵌入式系統的內容更新很快,而且具有高度的學科交叉特點。因此,“嵌入式系統”的教學要緊跟產業和技術的發展,更新教學內容,培養學生感受和理解技術進步的過程以及自主學習的基本能力。然而,目前的“嵌入式系統”的教學還沒有做到根據應用的發展和需求的變化來調整授課內容、授課思路和授課方式。主要體現在以下幾方面:①部分高校對嵌人式技術的概念理解模糊,對教學內容了解不深入,難以將嵌入式內容與前期課程的內容結合起來,缺乏全局觀念。②教材在章節的安排上將硬件和軟件分裂開來,教材缺乏具有可操作性的實例,使學生感到抽象和難以理解,學習效果有限;③由于學生沒有實際工作經驗,而且現行的實驗教學大都是利用實驗箱的驗證性基礎實驗,學生缺乏綜合設計的思路和體驗,實驗體會不深,無法掌握嵌人式系統軟硬結合的設計方法[4]。鑒于上述嵌入式系統課程教學中存在的問題,本文結合實際教學實踐,采用軟硬件互補的方法對該課程教學。
2軟硬件互補教學
在嵌入式系統軟硬件互補教學過程中,強調軟件知識與硬件知識的互補性[5],對于難以理解的硬件或軟件知識點,通過結合相應的軟件或硬件知識來闡述,由此來激發學生的學習興趣,引導學生深層次思考,舉一反三,提高教師教學和學生學習效果。
2.1軟硬件互補教學
現有的嵌入式系統教材,大都將嵌入式系統的硬件和軟件知識在教材的章節編排上分開,產生軟硬件脫節現象,使學生覺得嵌入式系統難學難用,教學效果不理想。軟硬件互補教學是在硬件學習中增加軟件實現,軟件學習中添加硬件分析內容,使學生同步獲得嵌入式系統的軟硬件知識。例如,在講解有關ARM處理器結構中指令流水線知識時,“三級流水線結構的R15保存的不是當前指令地址,而是當前指令地址+8”[5],很多學生對此難以理解。為此,實驗時,在ARM的IDE(Integrated Develo- pment Environment)中寫一條指令:MoV R0,PC,執行到該語句時記下當前PC值(假設為0x2000),然后單步執行該語句后觀察R0的值為0x2008,此時“[PC]=當前指令地址+8”。

圖1 ARM的三級流水線
從圖1的ARM的三級流水線結構可知,流水線使用3個階段,指令分3個階段執行,其中,
取指:從存儲器裝載一條指令。
譯碼:識別將要被執行的指令。
執行:處理指令并將結果寫回寄存器。
上述每一操作都需要一個時鐘周期,因此一條正常的指令需要3個時鐘周期才能完成。由于流水線分為3段,在每個時鐘周期內可以完成一條指令。從圖1可見,當第一條指令執行時,CPU開始對第三條指令取指,即在三級流水線中,R15(PC)總是指向“正在取指”的指令,而不是指向“正在執行”的指令,因此“[PC]=當前指令地址+8”。

圖2 ARM的五級流水線
這樣使學生對三級流水線的指令執行有一個感性認識,那么學生會問五級流水線的[PC]=當前指令地址+16?七級流水線的[PC]=當前指令地址+24?答案是否定的。ARM9的五級流水線分為:取指、譯碼、執行、訪存、寫回,流水線深度是五段,其中,取指、譯碼和執行的功能與三級流水線的功能一致。
緩沖/數據:如果需要,則訪問數據存儲器,否則ALU只是簡單地緩沖一個時鐘周期,以便實現所有的指令具有同樣的流水線流程。
回寫:將指令產生的結果回寫到寄存器堆棧,包括任何從存儲器讀取的數據。
當第一條指令執行時,第三條指令正在取指,所以ARM9與ARM7一樣:[PC]=當前指令地址+8。
那么,流水線級數是多好還是少好呢?流水線級數越多,對硬件的要求會更高,增大指令的吞吐量,每一段所做工作會減少,處理器可以以高頻率運行,提高運算性能,但是帶來了增加流水線延遲的問題,所以流水線深度并不是越深越好。從ARM9開始,流水線就變成了哈弗結構,而ARM7還是馮·諾依曼結構。馮·諾依曼結構的指令和數據單一存儲,統一編址,指令和數據不能同時存取,所以儲存器訪存指令(LDR、STR)會嚴重阻塞流水線,造成效率下降;哈弗結構的指令和數據分開存儲,獨立編址,流水線上的“取指”和“訪存”可以并行,執行效率更高。
這樣,可以使學生加深理解R15中保存當前指令的地址與硬件關系。
2.2軟硬件互補解決課程難點
嵌入式系統涉及很多的概念理論,學生難以在短時間內全面掌握完整的基礎理論知識,所以學生普遍認為該課程較難,若能將這些理論通過軟硬件互補教學法進行闡述,可以使復雜問題簡單化,抽象概念具體化,從而有效地化解教學中的疑點和難點。比如,在ARM處理器的匯編語言中,為什么會對指令語法格式中的
〈opcode〉{
〈Rd〉,〈Rn〉{,〈op2 〉}
其中,Opcode指令助記符;Cond指令執行條件;S是否影響CPSR寄存器的值,書寫時影響CPSR,否則不影響;Rd目標寄存器;Rn第一個操作數的寄存器;op2第二個操作數。
指令編碼格式為:

31-2827-2524-212019-1615-1211-0cond001opcodesRnRdop2
當第op2的形式為#immed_8r常數表達式時,該常數必須對應8位位圖,即常數是由一個8位的常數循環移位偶數位得到。因為ARM處理#immed_8r這個32位數時,它是由一個8位數(比如01011010,即0x5A)通過循環移位偶數位得到(1000 0000 0000 0000 0000 0000 0001 0110),就是0x5A通過循環右移2位(偶數位)得到的。而1010 0000 0000 0000 0000 0000 0001 0110,就不符合這樣的規定,編譯時會出錯。因為這個數不能通過將1011 0101循環右移位偶數位得到。
從指令編碼格式中的op2所占的12位數可以發現,要用一個12位的編碼來表示任意的32位數是不可能的。因為12位數有2^12種數,而32位數有2^32種數,要用12位的編碼來表示32位數,只有在表示數的數量上做限制。通過編碼來表示32位數,在12位的op2中8位存數據,4位存移位的次數。其中:
8位存數據:表示該常數必須對應8位位圖。
4位存移位的次數:表明只能移偶數位。
4位只有16種可能值,而32位數可以循環移位32次(32種可能),那就只能限制移偶數位。
這樣解決了能表示的數據是實際數據一半的矛盾。#immed_8r常數表達式的限制,是解決指令編碼的第二個操作數位數不足以表示32位操作數的有效方法。
從軟件調試上理解這個概念,在ARM的IDE中輸入指令:MOV R0,#0x0000F200
在反匯編的窗口發現該指令的機器碼為E3A00CF2,再查閱ARM的硬件數據表,可以發現0x0000F200是由0x000000F2循環右移24(0xC×2=24)位得到。
通過這樣分析,學生對8位位圖的含義有了深刻的理解,掌握了ARM指令格式及編碼格式,同時教會學生對難點問題的分析和解決方法。
2.3軟硬件互補實驗培養學生動手能力
嵌入式系統是一門注重實踐的課程,通過實驗學生掌握嵌入式系統開發環境、理解嵌入式基礎理論、操作系統的裁剪以及程序的設計開發。實驗內容不僅涉及課本內容,還涉及嵌人式領域當前的最新技術。實驗內容從基礎驗證型實驗向綜合設計型過渡。通過基礎驗證型實驗讓學生掌握實驗平臺、開發環境和流程,掌握開發工具的使用方法,結合實驗指導書對實驗進行演示調試。通過綜合設計型實驗來綜合運用嵌入式知識培養學生的實際應用能力和創新能力。
例如,在做Web服務器實驗時,老師要求學生熟悉PXA270RP嵌入式實驗箱,安裝Redhat9在宿主PC機,并且配置好ARM Linux的開發環境[8-9],學習使用socket進行通訊編程的過程,了解一個實際的網絡通訊應用程序整體設計,閱讀HTTP 協議的相關內容,學習重要網絡函數的使用方法。讀懂HTTPD.C源代碼。在宿主PC 機上使用瀏覽器測試嵌入式WEB 服務器的功能。
在宿主PC機端,打開一個終端Terminal,啟動終端窗口。輸入下列5條命令:
①給PXA270-RP目標板上電,并進入其操作界面,輸入minicom。
②以root 身份登陸PXA270-RP目標板。
③將宿主PC機的根目錄掛載到PXA270-RP目標板的mnt目錄下,輸入mount -o soft,timeo=100,rsize=1024 192.168.0.100://mnt命令。
④進入 cd /mnt/pxa270_linux/Experiment_Key/ Web文件夾
⑤運行測試程序的目標程序httpd,結果如圖3。再在宿主PC 機端,打開IE 瀏覽器。輸入:http://192.168.0.50 可以看到打開的百度首頁如圖4。

圖3目標程序圖4百度首頁
經過多次修改和調試,學生看到百度首頁時,就有種成就感和滿足感,只有親身經歷者才能深切體會。
3結語
針對嵌入式系統概念多、難點多和實踐性強的特點,提出軟硬件互補的教學方法,通過軟硬件互補實現教、學一體,解決課程中的難點問題,提高學生的動手能力。這種教學方法是對嵌人式教學的有益探索。依據該教學方法,對本校電子信息工程專業的學生講授嵌人式系統課程的內容,教學實踐證明,該教學方法有效地提高了教學質量和學習效果。
參考文獻:
[1] 仲偉波, 包亞萍, 付躍文, 等.關于嵌人式系統教學的幾點思考[J].實驗室研究與探索, 2006, 12(25): 1565-1568.
[2] 孫國棟, 田萱, 張海燕. 面向物聯網的“嵌入式系統”課程教學改革的探索[J]. 中國林業教育, 2014, 32(2): 69-71.
[3] 楊俊成.基于ARM的嵌入式系統教學[J].電子科技, 2012,25(9):146-147.
[4] 聞紹飛, 張石, 鮑喜榮,等.淺談ARM7嵌入式系統的實驗教學[J].實驗室科學, 2009 (5):53-55.
[5] 譚會生. 基于ARM嵌入式系統的研究性教學探討[J]. 中國電力教育, 2012 (10): 70-71.
[6] 陳志國, 傅毅, 孫俊.軟硬協同在嵌入式系統教學中的探討[J].無錫職業技術學院學報,2013,12(5): 63-66.
[7] 蔣書波, 王曉榮.嵌人式系統平臺課程體系方法探析[J].中國電力教育, 2013(2): 116-117.
[8] 周立功.ARM嵌入式系統實驗教程(二)[M].北京:北京航空航天大學出版社, 2005.
[9] 陳侃松, 劉洪波, 熊攀.基于ARM9的嵌入Web服務器數據動態顯示的實現[J].物聯網技術,2014(3): 18- 23.
Teaching of Embedded Systems Course Based on Hardware and Software in Complementary
JIAO Jun1,HE Ru-hai2,WANG Yong-mei1,FAN Guo-hua1,MA Hui-min1
(1.Information and Computer College;2.Economic and technical College,Anhui Agricultural University,Hefei 230036, China)
Abstract:This article analyzes the current existed problems for embedded systems teaching, puts forward the teaching method of embedded software and hardware complementary around the teaching content of embedded systems, expounds the concrete measures of software and hardware of complementary teaching with concrete examples in teaching, solving the problems and experimental design. The result of teaching practice indicates that the teaching method of software and hardware of complementary can solve the difficulty in the course. At the same time, student’s comprehension of course is improved.
Key words:software and hardware complementary,embedded systems, reform in education
文章編號:1007-4260(2015)03-0125-04
中圖分類號:G642
文獻標識碼:A
DOI:10.13757/j.cnki.cn34-1150/n.2015.03.033
通訊作者:何如海,男,安徽潛山縣人,博士,安徽農業大學經濟技術學院副教授,主要從事教學研究工作。
作者簡介:焦俊,男,江蘇南京市人,博士,安徽農業大學信息與計算機學院副教授,主要從事單片機及嵌入式系統的教學研究。
基金項目:安徽教育廳省質量工程項目(2014jyxm091)和(2014tszy090)。
收稿日期:2015-02-11
網絡出版時間:2015-8-25 15:40網絡出版地址:http://www.cnki.net/kcms/detail/34.1150.N.20150825.1540.033.html