?

基于Proteus和uC/OS—II的嵌入式課程教學研究與實踐

2014-04-29 02:32李創翁紹捷
中國電力教育 2014年36期

李創?翁紹捷

摘要:“嵌入式系統及應用”是自動化、測控技術與儀器等相關專業的重要專業基礎課程,主要講授嵌入式微處理器、嵌入式操作系統和嵌入式系統設計技術。在以往的課程教學過程中,理論課和實驗課內容之間脫節,容易出現教學效率低下、學生難以掌握和無法學以致用的情況。針對存在的問題,本文提出將基于Proteus和uC/OS-II的嵌入式仿真平臺引入到教學過程中,提出“理論講授—實驗驗證”并行展開的教學模式,通過“邊學邊用”的方式激發學生的學習熱情,強調學生分析問題、解決問題能力的提高,強化設計技能訓練。教學實踐表明,所設計的仿真平臺和提出的教學方法有效地提高了課程的教學效果和質量。

關鍵詞:嵌入式系統及應用;Proteus;uC/OS-II;仿真平臺

中圖分類號:G642.0 文獻標識碼:A 文章編號:1007-0079(2014)36-0154-03

“嵌入式系統及應用”課程是高等教育院校電氣信息類專業一門很重要的專業基礎課程,具有實踐性、應用性很強的特點。[1,2]掌握該門課程內容能有效地提高學生分析、解決問題的能力,增強實踐動手能力,也能培養學生的自主創新能力和探索精神。但是根據多年的教學實踐和教學效果問卷調查結果反饋情況,學生普遍反映該課程知識點分散、指令集難記、嵌入式操作系統過于復雜、理論課內容難以指導實驗課內容、了解課程的重要性但不知道如何應用等問題;而教師則反映在講授過程中較難調動學生的學習熱情、理論課聽課率低、分組實驗效果不佳等問題。造成這種情況的原因有多個方面:“嵌入式系統及應用”課程的課時數較少使得學生對課程內容掌握不足,但更主要是由于課程實踐性強、實驗內容和理論課內容之間聯系不強所導致的。

為了改進本課程的教學效果,使學生真正掌握嵌入式系統開發和設計技術,海南大學機電工程學院進行了長期摸索,開展“電工電子系列課程教學創新團隊建設”項目,利用英國Labcenter Electronics公司的Proteus軟件,搭建了基于Proteus和uC/OS-II的嵌入式仿真平臺,將其引入到課堂教學和實驗教學中。經過兩年的教學實踐和教學效果調查,學生對教學效果反映良好,課程設計水平和動手能力得到了極大提高。

一、Proteus-uC/OS-II仿真平臺的設計

1.Proteus與uC/OS-II介紹

英國Labcenter Electronics公司推出的Proteus是一款硬件仿真EDA軟件Proteus的優勢體現在虛擬系統建模(Virtual System Modelling,VSM)系統,支持基于ARM7、8051、PIC、AVR等系列微處理器的數字、模擬協同仿真,并支持源代碼級在線調試。[3]Proteus是一個完整的嵌入式軟、硬件設計仿真平臺,為開發真實的嵌入式系統提供了前期測試和驗證平臺。[4]

uC/OS-II是美國Jean J. Labrosse設計的輕量級嵌入式操作系統,是一個可移植、可裁剪的基于優先級的搶占式多任務實時內核,已經移植到幾乎所有知名的微處理器上。uC/OS-II已經通過聯邦航空局(FAA)商用航行器認證,主要采用ANSI-C編寫,源代碼量大約在6000-7000行,與CPU硬件相關部分采用匯編語言編寫,執行效率高,占用ROM空間小。[5]uC/OS-II的上述特點使得其特別適用于嵌入式產品開發和嵌入式系統教學中。

2.Proteus-uC/OS-II仿真平臺的設計

針對“嵌入式系統及應用”課程的全部知識點,筆者利用Proteus精心設計了基于NXP公司LPC2124處理器的仿真平臺,包括LCD接口(LM4229,240×120點陣)與ZLG/GUI移植、4×4鍵盤接口、A/D轉換接口、I2C接口、、UART接口、SPI接口、外部中斷接口、GPIO接口(LED顯示)等典型外設接口。利用ARM公司的ADS 1.2和Keil uVision4 for ARM集成開發工具,采用“應用程序-驅動程序-底層代碼”的自上而下的軟件結構,將uC/OS-II操作系統移植到Proteus仿真平臺中,并對學生開放所有設計源代碼,方便課堂內外講解和調試。Proteus仿真平臺的結構圖如圖1所示:

教學過程中使用的軟件版本具有8個功能,支持鍵盤對應的數字鍵輸入和鍵盤的方向鍵選擇輸入。仿真平臺的8個功能如表1所示。功能設計的原則是幫助學生明確嵌入式系統設計“自上而下”的概念和體系,盡量將外設功能情況實時地通過LCD顯示和串口顯示,以直觀的方式說明處理器和外設運行情況,加強教學的趣味性和實用性。

表1 仿真平臺功能

功能1:ADC轉換實驗 功能5:SPI接口數碼管實驗

功能2:I2C讀寫實驗 功能6:外部中斷實驗

功能3:GUI菜單、曲線繪制實驗 功能7:uC/OS-II統計功能實驗

功能4:UART讀寫與Shell實驗 功能8:uC/OS-II信號量、郵箱實驗

將uC/OS-II移植到Proteus仿真平臺,在軟件中創建4個任務:LED1顯示任務TaskLED1、LED3顯示任務TaskLED3、處理器休眠任務TaskPowerDown、鍵盤處理任務TaskKeyBoard。通過LED1和LED3指示操作系統運行情況,在TaskPowerDown任務中對GUI界面進行刷新和處理器低功耗操作,在TaskKeyBoard中掃描鍵盤動作,使用函數指針指向表1中的8個功能代碼入口地址,通過按鍵直接選擇任意功能進行運行。

仿真平臺正常運行后,顯示如圖2所示的GUI界面和串口調試信息。

在軟件設計過程中,充分考慮了系統的軟硬件可擴展性,提供給學生的軟件代碼書寫規范,函數和變量命名風格統一,采用大量的宏定義(#define)和條件編譯,保證了硬件管腳接線變化時能方便地修改ARM處理器的GPIO管腳配置。

以LED1連接在P0.28引腳為例,采用如下代碼對LED1的連接和行為進行描述:

#define LED1 28

#define LED1_ON() IOCLR = 1<

#define LED1_OFF() IOSET = 1<

連接LED1管腳的初始化代碼如下:

#if LED1 < 16

PINSEL0 &= ~(3<<(2*LED1));

#else

PINSEL1 & =~(3<<(2*(LED1-16)));

#endif

IO0DIR |= (1<

所有外設引腳均采用這種方式進行初始化和行為描述,因此可以在TargetInit函數中僅對必要的外設(如串行口、RTC時鐘)進行初始化,在各任務代碼中對使用的外設進行獨立的初始化。這種代碼風格符合學生的使用習慣和教學實際需要,無需在多個*.c文件之間來回進行函數查找和代碼修改。

二、Proteus-uC/OS-II仿真平臺在實驗教學中的應用

“嵌入式系統及應用”課程的核心體現在硬件和軟件的結合上。但傳統的理論教學中,ARM7TDMI處理器架構和RISC指令集是教學的重點和難點,這部分內容一般安排在外設接口和操作系統教學之前;而實驗教學一般以點亮一個LED開始,按照GPIO、串行口、定時器、外部中斷的順序講授ARM處理器的內部寄存器。在實際教學中發現,處理器架構和指令集內容過于抽象,降低了學生的學習熱情,造成教學進度緩慢、學生對知識點掌握不到位等情況,極大地影響了課堂教學效果和實驗效果。

1.基于仿真平臺的嵌入式操作系統教學

筆者將設計的Proteus-uC/OS-II仿真平臺引入到教學中,從操作系統的運行機制、實現原理上進行宏觀講解,然后對應用軟件的結構進行分解介紹,最后深入到操作系統源代碼和ARM移植代碼的分析和講解。這種教學方式完整地覆蓋了嵌入式系統軟硬件設計的流程和理論知識點,也能讓學生在入門階段形成“自上而下”的設計思路,徹底擺脫傳統的“前-后臺”設計思想的限制,對嵌入式操作系統和嵌入式處理器的架構和內部狀態寄存器集有更深刻的了解,為以后從事嵌入式系統軟硬件開發打下堅實的基礎。

uC/OS-II是輕量級的嵌入式操作系統,其源代碼僅有7000行左右,在裁剪了郵箱、隊列、信號量等功能后,OS_Core.c和OS_task.c文件源代碼結構清晰,特別適合在教學中進行源代碼級分析。OS_TCB鏈表結構和最低優先級查找算法是uC/OS-II的精華知識點,對后續學習信號量、郵箱、互斥等鏈表結構具有舉一反三的作用。下面詳細列舉基于LED1和LED3任務的uC/OS-II任務切換教學過程:

在TaskStart任務中創建TaskLED1和TaskLED3任務,要求LED1每秒閃爍一次,LED3每秒閃爍5次。因此,需要分別在TaskLED1和TaskLED3中分別調用OSTimeDlyHMSM(0,0,1,0)和OSTimeDlyHMSM(0,0,0,50),使得任務延時并交出CPU控制權。在教學中,依次分析OSInit、OSTaskCreate和OSStart的源代碼,根據鏈表斷開和插入操作,對OSTCBCur、OSTCBFreeList、OSTCBHighRdy和OSTCBList四個指針的內容進行討論,使學生掌握操作系統在建立用戶任務后OSTCBTbl數組的鏈表結構。同時,在建立用戶任務TaskLED1和TaskLED3的過程中,對OS_core.c的任務就緒表OSRdyTbl、映射表OSMapTbl的內容變化進行分析,掌握uC/OS-II優先級查表算法“以空間換處理時間”的核心思想。在理論課教學中,首先通過源代碼和流程圖分析,使得學生對uC/OS-II的內部數據結構有一個初步了解,然后在Proteus平臺,通過Keil uVision4的聯調方式,以單步運行的方式,結合軟件流程圖走向,在Keil中觀察相關變量的內容變化,學生就能比較容易地掌握uC/OS-II的數據結構和任務級任務切換的概念。在這個過程中所涉及到的軟件中斷、定時器中斷等內容則在后續理論課程中進行講授。

2.基于仿真平臺的外設接口知識點教學

在學生從應用的角度,掌握了uC/OS-II的任務創建、信號量等知識點之后,進入到ARM處理器外設接口的知識點學習階段。在課堂教學中,對于表1中所列的功能1-功能6的各外設功能,按照GPIO、UART、定時器、I2C、SPI、外部中斷的知識點順序在課堂上講解ARM處理器的內部寄存器和對應的功能。利用Proteus仿真平臺中的Debug功能和Keil的聯調功能,實時查看不同配置時相關外設寄存器的內容,對仿真效果進行在線分析和調試,加深學生對外設寄存器的理解。

3.基于仿真平臺的ARM處理器底層結構知識點教學

在獨立講授Proteus-uC/OS-II仿真平臺的功能1 – 功能8之后,進入到uC/OS-II操作系統的移植代碼部分。這部分知識點與ARM7TDMI處理器架構和RISC指令集密切相關。通過在課堂上依次講授ARM處理器啟動代碼、OS_cpu_a.s、OS_cpu_a.c源代碼分析和軟件中斷等內容。以中斷級任務切換函數OSIntCtxSw的講授過程為例:

OS_TASK_SW是任務級任務切換函數,引起0x00號軟中斷,并最終會跳轉到OSIntCtxSw執行,OSIntCtxSw也是中斷級任務切換函數的入口地址。對OSIntCtxSw的理解,實際上是要理解各個任務的堆棧設置。一個任務正常運行,是運行在user模式下,根據ARM7的體系結構,user模式的所有寄存器和system模式下的所有寄存器使用同一個物理地址。其他模式R13,R14不同物理地址,FIQ模式R8-R14不同物理地址。其他模式相比user/sys模式,多一個SPSR寄存器,用于保存發生中斷時的CPSR的備份。因此,當發生任務切換,需要保存當前任務的所有寄存器,即R0-R14。

利用Keil軟件的聯調功能,對uC/OS-II的啟動過程、任務級任務切換和中斷級任務切換等過程在Proteus仿真平臺進行單步Debug調試,配合ARM處理器內部寄存器的內容加深對指令集和處理器架構的理解。

4.基于仿真平臺的現場教學實踐

在教學準備階段,教師事先根據知識點準備好Proteus仿真模型,課堂上講解完相關知識點后,對Proteus仿真結果進行分析,學生結合串行口顯示、LCD顯示和內部寄存器內容,可以看到真實的運行現象和結果,增強了教學的直觀性、生動性和趣味性。

目前,高年級的學生均擁有筆記本電腦,可以要求學生將電腦帶進課堂,利用Proteus軟件與教師同步運行仿真平臺,觀察ARM處理器的內部寄存器、存儲器和變量的內容變化,觀察外設電路的工作狀態。此外,在課堂上教師可以提供一些具有典型錯誤的代碼,采用啟發式和自主式的方式,要求學生在課堂上修改源代碼和調試,加深對嵌入式系統設計與開發的理解。通過在課堂上現場指導學生對實例進行修改、編程和調試,觀察仿真運行情況,使學生及時理解相關知識點,領會抽象和復雜的概念,積累軟硬件設計、調試的經驗,達到“學以致用”的目的。

由于理論課程時間相對較短,嵌入式系統設計需要開發者擁有一定的經驗和投入大量的時間,而學生獨立開展設計工作的能力相對較弱,為了使得學生充分體驗嵌入式系統設計過程,筆者對課程設計進行了精心準備和選題,選取軟硬件兼顧、工作量的題目,要求學生在課余時間完成Proteus仿真,如基于GPRS Modem的遠程無線數據傳輸系統、溫濕度監測系統、直流電機控制系統等。在學期期中階段開始課程設計準備工作和指導工作,定期跟蹤設計進度,要求學生在期末階段完成Proteus仿真模型和軟件設計;對于部分動手能力較強的學生,則要求完成印刷電路板作品,體會Proteus仿真模型和實際軟硬件開發的不同,總結模型與真實電路的差異,將Proteus作為輔助設計工具和前期調試驗證工具。

三、結束語

筆者將Proteus-uC/OS-II仿真平臺應用于“嵌入式系統及應用”課程的理論教學中,采用“操作系統-外設接口-底層結構”的自上而下的體系結構對課程的理論知識點進行了分解,通過課堂演示和課堂內調試,使學生及時有效地掌握相關知識點。在課程的期中階段,開展基于Proteus的課程設計,使學生深刻體會嵌入式系統設計和開發的全過程,同時認識到Proteus仿真模型和實際電路的區別,在實際應用中積累設計經驗和調試經驗。通過近兩年將Proteus-uC/OS-II仿真平臺引入到《嵌入式系統及應用》教學全過程的實踐,學生普遍反映該課程趣味性高,有利于學生實踐和創新能力的提高。在教學過程中,有部分同學借助將筆者提供的仿真平臺,自行購買元器件,使用印刷電路板對仿真平臺進行了實現,也有部分學生將該仿真平臺在其他ARM開發板上進行了實現。借助于Proteus-uC/OS-II仿真平臺,學生在各種電子大賽,智能車、創新課題和畢業設計中取得了優異的成績。

參考文獻:

[1]李春光,謝光前.以項目為導向的嵌入式系統實踐教學研究[J].中國電力教育,2014,(4):183-184.

[2]錢誠,彭馨馨.計算機應用專業嵌入式系統課程教學探討[J].中國電力教育,2014,(8):144-145.

[3]陳知紅,王錦蘭.Proteus 仿真軟件在電工學中的應用[J].實驗技術與管理,2014,31(2):93-95.

[4]張蘭紅,陸廣平.基于 Proteus 仿真的單片機教學的研究與實踐[J].中國電力教育,2014,(5):76-77.

[5]邵貝貝.嵌入式實時操作系統uC/OS-II[M].北京:北京航空航天大學出版社,2003.

(責任編輯:劉麗娜)

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合