驅(qū)動程序設(shè)計范文
時間:2023-04-08 16:29:44
導語:如何才能寫好一篇驅(qū)動程序設(shè)計,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。
篇1
關(guān)鍵詞:wince 驅(qū)動程序;開發(fā);設(shè)計
1 引言
WINCE和Windows 98或Windows 2000不同,它可以工作在12種不同的處理器體系結(jié)構(gòu)、180余種CPU上;同時,WINCE是一個實時操作系統(tǒng)(實時系統(tǒng)的意義就是輸入的指令不必進入隊列就可以馬上處理,過去我們使用的DDS就是實時系統(tǒng)),可以滿足應用程序所需要的實時性要求。
Windows CE的模塊化設(shè)計使得它能夠在大量的平臺上定制使用,從客戶電子設(shè)備到專用的工業(yè)控制器。由于它是模塊化的,因而我們可以使用滿足平臺系統(tǒng)需求的最小軟件模塊和組件集合來設(shè)計嵌入式系統(tǒng)平臺,從而使內(nèi)存用量最小,但最大可能地提高操作系統(tǒng)的性能。因此外圍擴展設(shè)備就必須要有硬件驅(qū)動才能正常工作。
和其它的操作系統(tǒng)一樣,Windows CE也提供設(shè)備驅(qū)動軟件,這些軟件的目的是驅(qū)動內(nèi)部和外圍的硬件設(shè)備,或為它們提供接口。設(shè)備驅(qū)動程序?qū)⒉僮飨到y(tǒng)和設(shè)備鏈接起來,使得操作系統(tǒng)能夠識別設(shè)備或者為應用程序提供設(shè)備服務。
Windows CE支持廣泛的基于各種CE平臺的設(shè)備驅(qū)動程序。也提供一些用于驅(qū)動程序開發(fā)的模型(model) ,其中包括來自其它操作系統(tǒng)的驅(qū)動程序模型(model),因為這些豐富多變的驅(qū)動程序模型, Windows CE適應大部分的內(nèi)部和外圍設(shè)備口Microsoft Windows CE設(shè)備驅(qū)動程序工具包配備了文檔資料,這些文檔資料使得你能夠為Windows CE創(chuàng)建設(shè)備驅(qū)動程序。目前,Windows CE提供了四種設(shè)備模型,其中兩種是專用于Windows CE的模型,另外兩種外部模型來自其它操作系統(tǒng)。
2 驅(qū)動程序開發(fā)簡介
2.1 開發(fā)工具
Windows CE驅(qū)動可以使用Platform Builder或者Visual Studio開發(fā),但是開發(fā)人員一般都使用Platform Builder開發(fā)設(shè)備驅(qū)動程序,對于部分驅(qū)動也會使用Visual Studio開發(fā),應用程序開發(fā)人員更多的使用Visual Studio開發(fā)驅(qū)驅(qū)動程序。作為BSP(Board Support Package)的一部分進行整體編譯開發(fā)。
2.2 驅(qū)動分類
2.2.1 按加載方式和接口類型分類
1) 本機驅(qū)動程序(Built-In Drivers)
通常由GWES加載,驅(qū)動接口一般都是定制的(Custom Purpose)。
2) 流驅(qū)動程序(Stream Drivers)
通常由Device Manager加載,驅(qū)動接口是標準的流式接口。
3) 混和型驅(qū)動程序
同時有定制式和流驅(qū)動兩套驅(qū)動接口,但是和系統(tǒng)交互只使用流式驅(qū)動接口,比如PC卡槽驅(qū)動。
2.2.2 按驅(qū)動層次分類
1) 層次型驅(qū)動程序(Layered Driver)
> MDD(Model Device Driver),與硬件無關(guān),面向上層應用程序,一般由微軟建立統(tǒng)一框架;
> PDD(Platform Dependent Driver),針對具體硬件平臺的操作代碼,一般由驅(qū)動開發(fā)商實現(xiàn)MDD和PDD之間通過標準的設(shè)備驅(qū)動服務供應商接口DDSI連接。
2) 獨立型驅(qū)動程序(Monolithic Driver)
> 獨立驅(qū)動程序包含了MDD面向上層應用和PDD面向硬件平臺兩方面的代碼;
> 適用于操作不復雜的驅(qū)動;
> 減少了MDD和PDD傳遞之間傳遞信息的開銷,實時性更強;
3 流驅(qū)動程序的實現(xiàn)
流驅(qū)動程序必須實現(xiàn)一套標準接口,流驅(qū)動程序適用于IO操作,這也是嵌入式系統(tǒng)中最常見的設(shè)備驅(qū)動,操作接口和文件系統(tǒng)操作相似,通過CreateFile,ReadFile,WriteFile,IOControl函數(shù)等來操作應用程序和流驅(qū)動交互,可以把設(shè)備當作文件操作。
3.1 文件前綴名確定
根據(jù)文件前綴名在系統(tǒng)中必須唯一這一特點,在定義文件前綴名必須是三個字母,若有多個同類設(shè)備,由后綴一個阿拉伯數(shù)字區(qū)分,例如COM1,LPT3等等。文件前綴名將會在驅(qū)動的標準接口函數(shù)中體現(xiàn),比如XXX_Init,XXX_Close等。
3.2 通用函數(shù)
根據(jù)設(shè)備的不同,所需函數(shù)不同,通用函數(shù)如下所示:
1) XXX_Init:通知設(shè)備管理器為設(shè)備初始化分配資源;
2) XXX_Deinit:通知設(shè)備管理器回收設(shè)備初始化時分配的資源;
3) XXX_Open:打開設(shè)備。應用程序調(diào)用CreateFile時,通過文件系統(tǒng)映射為XXX_Open;
4) XXX_Close:關(guān)閉設(shè)備。應用程序調(diào)用CloseFile時,通過文件系統(tǒng)映射為XXX_Close;
5) XXX_PowerUp:設(shè)備上電時,操作系統(tǒng)調(diào)用該函數(shù)完成必要的上電操作;
6) XXX_PowerDown:設(shè)備掉電時,操作系統(tǒng)調(diào)用該函數(shù)完成必要的關(guān)機操作
7) XXX_Read:從打開的設(shè)備文件中讀取數(shù)據(jù),可以通過ReadFile映射;
8) XXX_Write:向打開的設(shè)備文件寫數(shù)據(jù),可以通過WriteFile映射;
9) XXX_Seek:文件定位,根據(jù)設(shè)備情況決定是否支持;
10) XXX_IOControl:IO操作擴展,可以根據(jù)設(shè)備情況來決定支持何種特殊的操作模式。
3.3 DEF文件建立
流驅(qū)動一般以DLL形式存在,DEF文件定義了DLL需要導出的接口集,因此DEF文件的名稱與設(shè)備驅(qū)動名稱相同。
3.4 寫注冊表
在wince中任何設(shè)備的識別都是通過注冊表來實現(xiàn)的,因此必須在注冊表中添加具體的設(shè)備驅(qū)動項,以便系統(tǒng)識別。具體方法如下:
在注冊表中增加驅(qū)動程序入口點,找到注冊表項,注冊項位于注冊表的Root Key下,一般為[HKEY_LOCAL_MACHINEDriversBuiltInSampleDrv],建立必要的子鍵和鍵值,“Prefix”和“DLL”是兩個重要,而且是必須的鍵,分別描述了設(shè)備前綴名和驅(qū)動程序的動態(tài)連接庫名,然后根據(jù)具體設(shè)備的需要建立驅(qū)動程序需要的其子他鍵。
4 調(diào)試驅(qū)動程序
驅(qū)動程序編寫完畢后,就應該進行硬件的調(diào)試。具體方法如下:
4.1 調(diào)試區(qū)信息(Debug Zone)
調(diào)試區(qū)一般和WinCE的控制臺調(diào)試工具Cesh.exe配合調(diào)試,在不打斷OS運行情況下,進行驅(qū)動的實時調(diào)試,利用宏開關(guān),可以選擇需要輸出的調(diào)試區(qū)信息,可以得到進程,線程和調(diào)試狀態(tài)信息。并且可以利用IDE環(huán)境,動態(tài)選擇開關(guān)調(diào)試區(qū)信息,但是打印驅(qū)動程序輸出調(diào)試信。必須借助于至少一種外設(shè)顯示調(diào)試信息,比如串口或者網(wǎng)卡或者其他通過調(diào)用RETAILMSG或者DEBUGMSG完成,不影響OS的運行,保證驅(qū)動程序運行的真實性,動態(tài)輸出設(shè)備的狀態(tài)信息,調(diào)試相對簡單,也是最廣泛使用的一種調(diào)試方法。
4.2 核心調(diào)試工具(Kernel Debugger)
核心調(diào)試工具將會禁止所有硬件中斷,掛起操作系統(tǒng),因此可以單步調(diào)試OS或者核心代碼,可以訪問堆棧信息,但是必須在Platform的環(huán)境下,利用至少一種外設(shè)進行通信。
4.3 硬件輔助調(diào)試方法
利用硬件調(diào)試工具可以觀察物理設(shè)備的真實狀態(tài),一般常用的方法可以利用JTAG工具實時查看CPU內(nèi)部寄存器,利用邏輯分析儀或者示波器實時查看物理外設(shè)的輸入輸出狀態(tài)。利用指示LED來顯示驅(qū)動程序?qū)崟r狀態(tài)信息。
4.4 Visual Studio調(diào)試
可以利用VS內(nèi)置的調(diào)試工具進行單步跟蹤,狀態(tài)調(diào)試等。
5 測試驅(qū)動程序
驅(qū)動程序經(jīng)過調(diào)試以后就需要對驅(qū)動的功能進行測試。其常用的方法如下:
1) 寫一個應用程序來測試驅(qū)動程序的正確性
2) 模擬各種可能發(fā)生的硬件輸入狀態(tài)來測試驅(qū)動程序的正確性
3) 利用Windows CE自帶的測試工具CETK來測試驅(qū)動程序的性能和完備性
6 驅(qū)動程序的集合和
6.1 驅(qū)動程序集成
驅(qū)動程序經(jīng)過調(diào)試和測試確定其正確性后,就可以對驅(qū)動程序進行集成了。具體過程如下:
1) 在BSP的Driver目錄下建立新的驅(qū)動文件夾MyDrv
2) 實現(xiàn)MyDrv驅(qū)動以及相關(guān)的DEF文件
3) 如果需要用到硬件中斷資源,修改原BSP中的相關(guān)中斷處理函數(shù)OEMInterruptEnable,OEMInterruptDisable,OEMInterruptDone,OEMInterruptHandler
4) 在Platform.reg中,增加驅(qū)動程序相關(guān)項
5) 在Platform.bib中,增加驅(qū)動程序的相關(guān)注冊表項MyDrv.Dll$(_FLATRELEASEDIR)MyDrv.dll NK SH
6.2 驅(qū)動程序
驅(qū)動程序進過集成以后就可以使用了,具體的過程如下所示:
1) 利用CAB Wizard生成.cab驅(qū)動包
2) 直接提供驅(qū)動程序文件夾以及相關(guān)注冊表項和修改說明
7 總結(jié)
本為詳細的介紹了,wince下驅(qū)動開發(fā)的流程,介紹了驅(qū)動程序開發(fā)到的詳細過程,并詳細說明了各個部分的實現(xiàn)和操作方法,使是初學者對wince下驅(qū)動程序的開發(fā)流程和一般的開發(fā)工具有了初步的了解。
篇2
關(guān)鍵詞:嵌入式操作系統(tǒng);Win CE;SPI;驅(qū)動程序
中圖分類號:TP311文獻標識碼:B
文章編號:1004-373X(2009)10-069-04
Design of EP9315-SPI Driver Based on Win CE
ZHANG Dong1,XU Dijian2
(1.Chongqing University of Arts and Sciences,Chongqing,402160,China;2.Chongqing University of Science and Technology,Chongqing,401331,China)
Abstract: It is very important to compile driver connecting operating system with corresponded hardware device.Based on stream interface driver model,the design of SPI driver in embedded operating system Win CE in development environment of platform builder 4.2 and design method are introduced and analysed,realizing virtual address map,key code and the relationship between driver and SPI application program in EVC program environment is discussed.Driver and corresponded application program can be operated on FS_EP9315 development platform of ucdragon rightly.Experience indicates the methord is right and feasible.
Keywords:embedded operating system;Win CE;SPI;driver program
0 引 言
嵌入式是“以應用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,適合應用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的計算機系統(tǒng)”。Windows 是Microsoft推出的功能強大的緊湊、高效、可伸縮的32位嵌入式操作系統(tǒng),主要面對各種各樣嵌入式系統(tǒng)的產(chǎn)品[1,2]。
該系統(tǒng)具有多線程、多任務、完全搶占式的特點,是為各種具有嚴格資源限制的硬件系統(tǒng)所設(shè)計的。為了將操作系統(tǒng)和硬件設(shè)備連接起來,硬件和軟件的驅(qū)動聯(lián)系就顯得很重要。SPI是一種高速、全雙工、同步的通信總線,在芯片的管腳上只占用4根線,節(jié)約了芯片的管腳,同時為PCB的布局節(jié)省了空間,提供了方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片都集成了這種通信協(xié)議。SPI的工作模式有兩種:主模式和從模式,SPI總線可以配置成單主單從、單主多從、互為主從。為了充分利用芯片的SPI接口進行相應的驅(qū)動程序設(shè)計以及應用程序設(shè)計,通用方法的研究就顯得十分重要。
1 Win CE提供的驅(qū)動模型
Win CE操作系統(tǒng)支持兩種類型的驅(qū)動程序,一種為本地驅(qū)動程序,是把設(shè)備驅(qū)動程序作為獨立的任務實現(xiàn)的,直接在頂層任務中實現(xiàn)硬件操作,因此有明確和專一的目的。本地驅(qū)動程序適合于那些集成到Win CE平臺的設(shè)備,諸如鍵盤、觸摸屏等設(shè)備。另一種是具有定制接口的流接口驅(qū)動程序,它是一般類型的設(shè)備驅(qū)動程序,為用戶一級的動態(tài)鏈接庫(DLL)文件,用來實現(xiàn)一組固定的函數(shù)稱為“流接口函數(shù)”,這些流接口函數(shù)使得應用程序可以通過文件系統(tǒng)訪問這些驅(qū)動程序。這里論述的SPI驅(qū)動就屬于流接口驅(qū)動。
2 SPI驅(qū)動程序的設(shè)計
2.1 EP9315芯片及SPI接口簡介
EP9315是一款基于ARM920T,由Cirrus Logic公司生產(chǎn)的工業(yè)級芯片[3,4] ,內(nèi)帶MMU,16 KB的指令Cache,16 KB的數(shù)據(jù)Cache和數(shù)學協(xié)處理器,主頻為200 MHz,系統(tǒng)總線為100 MHz。該芯片擁有一組SPI接口,利用它可方便實現(xiàn)與SPI器件進行通信,可大大簡化工程應用的硬件設(shè)計軟件。
SPI驅(qū)動程序采用Win CE流驅(qū)動的標準形式。下面從驅(qū)動程序具體設(shè)計步驟以及驅(qū)動代碼的編寫兩個方面做較為詳細的闡述。
2.2 SPI驅(qū)動程序設(shè)計步驟
在Platform Builder 4.2下設(shè)計Win CE流接口驅(qū)動程序可按照以下步驟進行[5-7]:
(1) 在C:\\Win CE420\\PLATFORM\\ep931x\\drivers目錄下新建一個目錄SPI;
(2) 從其他驅(qū)動目錄下復制makefile文件到SPI目錄下;
(3) 用文本編輯器建立4個文本文件,文件名分別為SPI.c,SPI.h,SPI.def和sources;
(4) 編輯目錄C:\\Win CE420\\PLATFORM\\ep931x\\driver下的dirs文件。用文本編輯器打開該文件,找到“DIRS=”等式,在該等式最后添加一行, 如下面所示:
DIRS=…
SPI
(5) 在Platform Builder 4.2中打開Platform.bib文件,在該文件最后和FILES之前加入一行,指明在生成Windows CE內(nèi)核映射時自動將SPI.dll加入到內(nèi)核映像中,添加內(nèi)容如下:
SPI.dll MYM(_FLATRELEASEDIR)\ SPI.dll NK SH
(6)具體的流接口驅(qū)動程序跟注冊表密不可分,在Platform Builder 4.2中打開platform.reg文件,在該文件最后加入如下所示注冊表信息,以使在生成操作系統(tǒng)映像時,Platform Builder將注冊表信息加入到注冊表中。在Platform.reg中添加內(nèi)容如下:
[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\SPI]
"Prefix"=" SPI "
"Dll"=" SPI.dll"
"FriendlyName"=" SPI Driver"
"Index"=dword:1
"Order"=dword:0
篇3
關(guān)鍵詞:VxWorks操作系統(tǒng);串口驅(qū)動程序;共享中斷
中圖分類號:TP316文獻標識碼:A文章編號:1009-3044(2009)33-9544-03
The Design of Driver for Multi Serial Sharing IRQ Based on VxWorks System
LIU Wei,TAO Ying
(Department of Information Engineering, Jiangxi Vocational College of Finance and Economics, Jiujiang 332000, China)
Abstract: This paper introduces the structure of serial port driver on the VxWorks system, then the achievement of the driver of serial driver is analyzed. The driver for multi serial sharing IRQ based on VxWorks system is designed, and loading VxWorks system with the module of the driver is achieved.
Key words: VxWorks system; serial port driver; sharing IRQ
VxWorks操作系統(tǒng)是美國Wind River公司開發(fā)的一種嵌入式實時操作系統(tǒng),由于其高可靠性、強實時性以及可裁減性,廣泛應用于航空航天、軍事、民用通信和工業(yè)控制等領(lǐng)域。
在某大型控制系統(tǒng)中,我們需要開發(fā)一個具有4路串口通訊、1路CAN通訊以及2路以太網(wǎng)通訊的多種通訊方式并存的通訊設(shè)備。考慮到通訊能力以及通訊的實時性要求,CPU選用盛博公司PC104+總線的Pentium III處理器,串口選用具有PC104總線接口的4路串口擴展板,采用VxWorks操作系統(tǒng)來實現(xiàn)以上需求。由于每種通訊方式都采用中斷方式觸發(fā),而系統(tǒng)硬件提供的中斷源是有限的,針對這種情況,為了節(jié)省系統(tǒng)的中斷資源,本文設(shè)計了一個基于VxWorks的多串口共享中斷的驅(qū)動程序,并對該驅(qū)動程序的功能進行了長時間測試驗證。
1 串行設(shè)備驅(qū)動的結(jié)構(gòu)
在VxWorks操作系統(tǒng)中,串行設(shè)備作為一種特殊的字符型設(shè)備,操作系統(tǒng)為其提供一個簡單、統(tǒng)一、獨立于設(shè)備的接口,在應用層對于串行設(shè)備的任何操作都可以視為對一個文件的操作,而具體的實現(xiàn)是通過串行設(shè)備的驅(qū)動程序來完成。
在VxWorks中串行設(shè)備驅(qū)動采用3層抽象的軟件結(jié)構(gòu),即I/O系統(tǒng)、虛擬設(shè)備ttyLib或tyLib以及硬件驅(qū)動,其結(jié)構(gòu)示意圖如圖1所示。在VxWorks中,I/O系統(tǒng)并不直接與具體的硬件驅(qū)動進行交互,而是將驅(qū)動程序中與硬件無關(guān)的部分放在虛擬設(shè)備ttyLib中實現(xiàn),再利用虛擬設(shè)備ttyLib與I/O系統(tǒng)進行通訊,使得I/O系統(tǒng)獨立于具體的硬件驅(qū)動,而驅(qū)動程序的開發(fā)者只需要實現(xiàn)系統(tǒng)所提供的接口并且將其掛載到虛擬設(shè)備ttyLib就能完成具體串行設(shè)備驅(qū)動的設(shè)計,從而保證驅(qū)動代碼的可復用性和接口的統(tǒng)一性。
2 串行設(shè)備驅(qū)動的實現(xiàn)
VxWorks在啟動過程中對串行設(shè)備驅(qū)動的實現(xiàn)主要包括兩部分:串口的初始化和串行設(shè)備的創(chuàng)建。串口的初始化主要包括初始化串口設(shè)備,分配串口所需的資源以及完成串口中斷程序的系統(tǒng)掛接;串行設(shè)備的創(chuàng)建包括tty驅(qū)動的初始化和對tty設(shè)備的創(chuàng)建,即建立起I/O系統(tǒng)與硬件驅(qū)動層的聯(lián)系。
2.1 串口的初始化
sysInit()作為VxWorks操作系統(tǒng)啟動的入口程序會調(diào)用第一個C程序函數(shù)usrInit(),完成用戶定義系統(tǒng)的初始化工作,而串口的硬件初始化是在usrInit()函數(shù)的子函數(shù)sysHwInit()中完成。對于VxWorks現(xiàn)有的Intel8250驅(qū)動(Tornado目錄/target/src/drv/sio/i8250Sio.c),sysHwInit()還會調(diào)用sysSerial.c文件下的sysSerialHwInit(),sysSerialHwInit()函數(shù)主要對串行設(shè)備的設(shè)備描述符進行初始化,在初始化過程中還會調(diào)用底層的i8250HrdInit()對串行設(shè)備的端口進行初始化。在完成系統(tǒng)硬件和VxWorks內(nèi)核的初始化以后,系統(tǒng)會啟動一個函數(shù)名為usrRoot()的任務,usrRoot()作為VxWorks操作系統(tǒng)的根任務調(diào)用sysClkConnect()對系統(tǒng)時鐘中斷進行配置,而具體的工作是由sysClkConnect()的子函數(shù)sysHwInit2()完成,其中sysHwInit2()會調(diào)用sysSerialHwInit2()來完成串行設(shè)備的中斷掛接。
2.2 串行設(shè)備的創(chuàng)建
在usrRoot()中通過調(diào)用ttyDrv()完成tty驅(qū)動的初始化,而ttyDrv()則調(diào)用iosDrvInstall()將tty驅(qū)動添加到系統(tǒng)的驅(qū)動程序列表中,并且完成與I/O系統(tǒng)層的各系統(tǒng)操作函數(shù)的連接。tty虛擬設(shè)備層與底層硬件驅(qū)動的連接則是通過ttyDevCreate()來完成,并實現(xiàn)各個串行設(shè)備的創(chuàng)建。
3 多串口共享中斷的驅(qū)動程序開發(fā)
串口擴展板選用的是盛博的A3-CSD板卡,采用PC104總線接口,集成了4路16C554兼容的光電隔離異步串行口,每個串行口能獨立控制發(fā)送與接受,且具有16字節(jié)FIFO以減少中斷請求次數(shù),此外該擴展板還具有一個串口中斷狀態(tài)指示寄存器,可以指示產(chǎn)生中斷的串口。根據(jù)上述硬件配置,可以在現(xiàn)有Intel8250驅(qū)動的基礎(chǔ)上進行改進來完成多串口共享中斷的驅(qū)動程序設(shè)計。
3.1 串口設(shè)備的初始化
每個串口設(shè)備都需要有一個的描述自身屬性的結(jié)構(gòu)體I8250_CHAN_EX,即設(shè)備描述符,且結(jié)構(gòu)體的第一個成員必須為指向SIO_DRV_FUNCS結(jié)構(gòu)的指針,該結(jié)構(gòu)體還包含描述16C554芯片各個端口的信息以及提供給高層協(xié)議的回調(diào)函數(shù)。在系統(tǒng)啟動過程中通過調(diào)用sysSerialHwInitEx()完成對該結(jié)構(gòu)體的初始化并且將自定義的全局指針數(shù)組pi8250ChanEx[4]中各元素分別指向4個串口的I8250_CHAN_EX結(jié)構(gòu)體,初始化過程中會調(diào)用i8250HrdInitEx()將串口驅(qū)動程序的設(shè)備操作入口函數(shù)安裝到SIO_DRV_FUNCS結(jié)構(gòu)中,然后調(diào)用sysSerialHwInitEx2()完成串口中斷的系統(tǒng)連接。其中sysSerialHwInitEx2()的實現(xiàn)代碼為:
void sysSerialHwInitEx2 (void)
{
int i;
for (i = 0; i < N_UART_CHANNELS_EX; i++)
if (i8250ChanEx[i].int_vec)
{/*將四個串口設(shè)備的中斷服務程序i8250ShareIntEx ()連接到同一中斷*/
(void) intConnect (INUM_TO_IVEC (i8250ChanEx[i].int_vec),
i8250ShareIntEx, (int)&i8250ChanEx[i] );
if (sysBp)
sysIntEnablePIC (devParasEx[i].intLevel);/*中斷使能*/
}}
其中,宏N_UART_CHANNELS_EX表示串口設(shè)備的個數(shù),i8250ChanEx結(jié)構(gòu)的成員變量int_vec表示該串口的系統(tǒng)中斷號,這里每個i8250ChanEx結(jié)構(gòu)的int_vec項值都是相同的。
3.2 串口驅(qū)動程序的入口點函數(shù)編寫
編寫串口設(shè)備驅(qū)動程序需要完成串口設(shè)備的入口點函數(shù),這些函數(shù)包括控制命令函數(shù)i8250IoctlEx(),啟動發(fā)送循環(huán)函數(shù)i8250StartupEx(),輪詢方式輸入函數(shù)i8250PRxCharEx(),輪詢方式輸出函數(shù)i8250PTxCharEx(),回調(diào)安裝函數(shù)i8250CallbackInstallEx(),單串口中斷服務函數(shù)i8250IntEx(),多串口共享中斷服務函數(shù)i8250ShareIntEx()等函數(shù)。這里只列出多串口共享中斷服務函數(shù)i8250ShareIntEx(),其余函數(shù)可以參考i8250Sio.c文件的各相應函數(shù)。
void i8250ShareIntEx (I8250_CHAN_EX*pChan)
{
FASTintoldlevel;
oldlevel = intLock(); /*關(guān)閉系統(tǒng)中斷*/
IntStatus = sysInByte(UART_INT_STATUS); /*讀串口中斷狀態(tài)指示寄存器* /
while(( IntStatus & 0x0F) != 0x00 )/*判斷是否有串口中斷產(chǎn)生*/
{
if (IntStatus & COM0_ INT _FLAG)
i8250IntEx(pi8250ChanEx[0]);/*串口1產(chǎn)生了中斷*/
……………
if (IntStatus & COM3_ INT _FLAG)
i8250IntEx(pi8250ChanEx[3]);/*串口4產(chǎn)生了中斷*/
}
intUnlock(oldlevel); /*開啟系統(tǒng)中斷*/
}
其中,全局變量pi8250ChanEx為I8250_CHAN_EX結(jié)構(gòu)的指針數(shù)組,分別指向4個串口設(shè)備所對應的I8250_CHAN_EX結(jié)構(gòu),宏UART_INT_STATUS表示串口中斷狀態(tài)指示寄存器地址。
在進入i8250ShareIntEx()后首先關(guān)閉系統(tǒng)中斷,通過查詢串口中斷狀態(tài)指示寄存器來判斷產(chǎn)生中斷的串口設(shè)備,然后將產(chǎn)生此中斷的串口描述符結(jié)構(gòu)體,即pi8250ChanEx[4]中對應的元素,作為參數(shù)傳遞給單串口中斷服務函數(shù)i8250IntEx(),最后重新開啟系統(tǒng)中斷。
3.3 以模塊加載串口驅(qū)動程序
在config.h中加入#undef INCLUDE_TTY_DEV,執(zhí)行下面的代碼后生成一個o格式的串口驅(qū)動的庫文件8250SioEx.o,然后在應用程序中利用loadModule()將8250SioEx.o動態(tài)加載到內(nèi)存中運行。
sysSerialHwInitEx();/*初始化串口設(shè)備*/
sysSerialHwInitEx2(); /*串口中斷的系統(tǒng)掛接*/
if (N_UART_CHANNELS_EX > 0)
{
ttyDrv();
for (int i = 0;i < N_UART_CHANNELS_EX;i++)
{
sprintf (tyName, "%s%d", "/tyCo/", i);
(void) ttyDevCreate (tyName, sysSerialChanExGet (i), 512, 512); /*創(chuàng)建tty設(shè)備*/
}
}
其中sysSerialChanExGet()返回一個描述串口設(shè)備的I8250_CHAN_EX結(jié)構(gòu)體。
4 結(jié)束語
本文詳細分析了串行設(shè)備驅(qū)動程序的結(jié)構(gòu)以及在VxWorks啟動過程中串行設(shè)備驅(qū)動程序的加載過程,設(shè)計了一個多串口共享中斷的驅(qū)動程序,利用該驅(qū)動程序?qū)?個串口同時進行了連續(xù)10小時的數(shù)據(jù)收發(fā)測試,4個串口都能穩(wěn)定地發(fā)送和接收數(shù)據(jù)。此外,在測試過程中發(fā)現(xiàn)在進入多串口共享中斷服務函數(shù)后需要將系統(tǒng)中斷關(guān)閉,待執(zhí)行完中斷處理后再開啟系統(tǒng)中斷,否則會引起串口工作的不穩(wěn)定。
參考文獻:
[1] 周啟平.VxWorks下設(shè)備驅(qū)動程序及BSP開發(fā)指南[M].北京:中國電力出版社,2004.
[2] 陳智育,溫彥軍,陳琪.VxWorks程序開發(fā)實踐[M].北京:人民郵電出版社,2004.
[3] VxWorks programmer’s guide version 2.0[Z].Wind River System Inc,1999.
[4] TL16C550 asynchronous communications element[Z].1998.
篇4
[關(guān)鍵詞]USB ECP Driver Studio 設(shè)備驅(qū)動程序
[中圖分類號]TP[文獻標識碼]A[文章編號]1007-9416(2010)02-0029-02
1 引言
由于現(xiàn)在大多數(shù)計算機沒有并行口而具有多個USB接口,因此很多并行口設(shè)備無法和計算機直接連接使用。利用基于單片機STC11F32XE的USB 轉(zhuǎn) ECP 模式并行口可以連接其他ECP模式并口設(shè)備,以達到讓具有ECP接口的設(shè)備可以和沒有并口的PC進行數(shù)據(jù)通信的目的。并口采用的是IEEE 1284-A接口, USB 接口驅(qū)動芯片采用Philips 半導體公司的PDIUSBD12,該芯片的數(shù)據(jù)端口D0-D7接單片機的P0 口,引腳WR_N、RD_N、及A0 分別接單片機的P3.6、P3.7、P3.5 引腳。整個硬件電路圖如圖 1 所示。當 USB 設(shè)備硬件設(shè)計完成之后,接著就必須根據(jù)硬件特點和需要完成的功能,設(shè)計出合乎產(chǎn)品的USB驅(qū)動程序,否則,設(shè)備將無法被PC機識別,不能正常使用。
2 WDM型的USB驅(qū)動程序結(jié)構(gòu)
USB設(shè)備的驅(qū)動程序是一種典型的WDM驅(qū)動程序。WDM驅(qū)動程序是分層的。對于USB設(shè)備驅(qū)動程序來說,其驅(qū)動程序包括兩個層次:設(shè)備(功能)驅(qū)動程序?qū)雍涂偩€(底層)驅(qū)動程序?qū)印SB底層驅(qū)動程序由操作系統(tǒng)提供,不要開發(fā)者自己編寫,它位于USB功能驅(qū)動程序的下面,負責與實際的USB硬件打交道,實現(xiàn)復雜而繁瑣的底層通信;USB功能驅(qū)動程序必須要由開發(fā)者編寫,它不與實際的USB硬件打交道,是把包含URB(USB Request Block,USB 請求塊)的IRP發(fā)送到USB底層驅(qū)動程序,來實現(xiàn)對USB設(shè)備信息的發(fā)送和接收。(圖2) 給出了USB 驅(qū)動程序的結(jié)構(gòu)模型。
3 USB驅(qū)動開發(fā)編程環(huán)境的建立
開發(fā)一個WMD 驅(qū)動程序,必須要搭建合適的開發(fā)環(huán)境以此來減小開發(fā)難度。對于WDM 驅(qū)動的開發(fā),一般必須使用的軟件是VC++6.0和DDk (Driver Development Kit,驅(qū)動程序開發(fā)工具包)。但為了進一步降低開發(fā)難度,選擇使用了第三方驅(qū)動開發(fā)工具--Driver Studio。它以類的方式對DDK 進行封裝,可以十分容易地利用它提供的向?qū)懋a(chǎn)生一個必需的驅(qū)動程序框架。
一般首先安裝VC++6.0,接著安裝DDK,如果需要的話,還可以安裝Windows SDK 來輔助開發(fā),最后安裝Driver Studio 3.2。因為Driver Studio的類庫要使用DDK庫函數(shù),所以在安裝好Driver Studio 之后必須首先要編譯出一個庫文件,否則會提示找不到庫文件vdw_wdm.lib 等錯誤。編譯該庫文件的步驟如下:啟動VC++6.0,找到并打開Driver Studio3.2 安裝目錄下的vdwLibs.dsw工程文件,然后選擇DriverStudio->DDK Build Settings,在彈出的對話框中設(shè)置DDK的安裝路徑和運行的操作系統(tǒng)。然后選擇菜單Build->Batch Build,要根據(jù)驅(qū)動運行的平臺來選擇對應的工程文件,這里選擇了x86對應的工程,正確選擇之后,單擊Rebuild All 按鈕,開始編譯庫文件。這個類庫只需編譯一次,以后開發(fā)其他的驅(qū)動就不必再次編譯了。
4 USB驅(qū)動創(chuàng)建方法及步驟
該驅(qū)動程序的主要功能包括:端點0采用控制傳輸,可以保證傳輸過程中的數(shù)據(jù)的完整性和正確性,主要負責USB枚舉過程中的數(shù)據(jù)的讀寫。另外,又增加了端點1和端點2。端點1采用中斷傳輸,這種傳輸主要用在數(shù)據(jù)量不大,但對時間要求較嚴格的設(shè)備中。因此,模塊滿足了實時性的特點;端點2采用批量傳輸,該種傳輸通常用在數(shù)據(jù)量大、對數(shù)據(jù)的實時性要求不高的場合中,利用該方式可以完成大量數(shù)據(jù)的快速傳輸,可以與高速的ECP并行口相匹配,因此,模塊滿足了高速數(shù)據(jù)傳輸?shù)囊蟆?/p>
單擊VC菜單欄下的DriverStudio菜單項,選擇Driver Wizard菜單,會出現(xiàn)一個驅(qū)動向?qū)υ捒颉螕鬝tart a new Driver Project 將創(chuàng)建一個新的驅(qū)動工程。然后按照向?qū)稍擈?qū)動程序的框架。具體步驟如下:①設(shè)置工程名和路徑。在彈出的對話框中,設(shè)置工程名為UsbToECP、路徑為D:\。②選擇驅(qū)動工程的類型。在對話框中選擇 WDM Driver,驅(qū)動框架選擇DriverWorks C++ Framework。③選擇WDM驅(qū)動類型。在彈出的對話框中選擇 WDM Function Driver。④選擇驅(qū)動總線的類型。在對話框中選擇為 USB 總線,然后在分別設(shè)定USB Vendor ID 和USB Product ID。 ⑤設(shè)置USB 的端點資源。單擊Add增加端點。這里增加 4 個端點,Pipe Name 分別是Ep1_In、Ep1_Out、Ep2_In和Ep2_Out。其中Ep1_In和Ep1_Out選擇中斷傳輸,端點地址均為1,傳輸方向分別為輸入和輸出,最大包長為8字節(jié),最大傳輸大小為 4096字節(jié)。Ep2_In和Ep2_Out選擇批量傳輸,端點地址均為2,傳輸方向分別為輸入和輸出,最大包長為64字節(jié),最大傳輸大小為 40960字節(jié)。⑥選擇需要處理請求類型。這里選擇IRP_MJ_DEVICE_CONTROL、IRP_MJ_READ和IRP_MJ_WRITE。它們分別與API函數(shù) DeviceIoControl、ReadFile和WriteFile一一對應。⑦設(shè)備I/O操作方式。配置IRP_MJ_READ和IRP_MJ_WRITE的緩沖方式分別為Buffered。另外還需要增加4個IO Control 的控制代碼:EP1_READ、EP1_WRITE、EP2_READ、EP2_WRITE。打開方式選擇Interface。⑧添加注冊表項。可以根據(jù)自己需要增加,這里增加了一個設(shè)備名稱。⑨設(shè)置電源管理。選擇Device requires an inrush of power at startup,說明該設(shè)備啟動時需要大電流,這樣做的目的是防止相同的設(shè)備同時上電,減少對電源的沖擊。步驟10-13按默認配置即可。
5 驅(qū)動的編程
USB驅(qū)動程序的編程最主要的就是編寫端點1和端點2的數(shù)據(jù)處理函數(shù),其中主要編寫的是UsbToECPDevice類成員函數(shù)Read()、Write()、及DeviceControl()中調(diào)用的4 個IoControl()函數(shù)。
Read()函數(shù)對應著WIN32 API的ReadFile函數(shù),其參數(shù)通過KIrp I傳遞過來。因為端點1指定的緩沖方式為Buffered 方式,所以調(diào)用KIrp類的成員函數(shù)I.BufferedReadDest()來獲取保存數(shù)據(jù)的緩沖區(qū)地址,調(diào)用I.ReadSize()來獲取讀到的數(shù)據(jù)長度。如果獲取到的緩沖區(qū)地址為NULL,則說明參數(shù)無效,則以USB_STATUS_INVALID_PARAMETER來完成該IRP,然后返回USB_STATUS_INVALID_PARAMETER。若讀取的字節(jié)數(shù)是0,就直接完成該IRP,不需要進行數(shù)據(jù)處理。接著創(chuàng)建一個URB來完成數(shù)據(jù)的處理。因為端點1采用的是中斷傳輸,所以必須創(chuàng)建一個中斷傳輸?shù)?URB并提交它,端點管道KUsbPipe類提供一個創(chuàng)建中斷傳輸URB的函數(shù)BuildInterruptTransfer。這樣底層的USB 總線驅(qū)動程序就會負責從端點 1 讀取數(shù)據(jù),當完成數(shù)據(jù)的讀取后,提交相應URB的函數(shù)就會返回。當URB創(chuàng)建成功后,利用KUsbPipe類的成員函數(shù)SubmitUrb()來提交這個URB,否則返回資源不足的錯誤信息。SubmitUrb()函數(shù)返回后,可以用URB的成員變量TransferBufferLength來獲取實際讀到的字節(jié)數(shù),最后刪除創(chuàng)建的URB。
本文為全文原貌 未安裝PDF瀏覽器用戶請先下載安裝 原版全文
Write()函數(shù)的處理方法與Read()函數(shù)的方法非常相似,不同之處在于利用KIrp類I的成員函數(shù) BufferedWriteSource()和WriteSize()來分別獲取緩沖區(qū)的地址和傳輸?shù)淖止?jié)數(shù)。另外,函數(shù)EP1_READ_Handler()和EP1_WRITE_Handler()的實現(xiàn)與Read()和Write()函數(shù)基本是一樣的,略有不同。
端點2 的EP2_READ_Handler(KIrp I)和EP2_WRITE_Handler(KIrp I)與端點 1的EP1_READ_Handler(KIrp I)和EP1_WRITE_Handler(KIrp I)處理方式幾乎是一樣的,主要的不同是在創(chuàng)建URB時要用到創(chuàng)建批量傳輸URB 的函數(shù)BuildBulkTransfer(),其參數(shù)及意義與BuildInterruptTransfer()相同。
6 驅(qū)動的安裝
在對端點1和端點2編程完成之后,然后對其進行編譯,如果沒有錯誤,可以看到編譯報告中有一行“MODULE=.\objfre\i386\UsbToECP.sys”,這個就是所要的驅(qū)動文件,另外,在目錄下還產(chǎn)生一個inf文件,其也是安裝驅(qū)動時需要的一個重要的文件,它里面有一些重要的安裝信息,可以根據(jù)需要進行修改。一般主要是對inf的Stings 進行修改,表1給出了該驅(qū)動的Strings 段的幾個重要屬性的修改。
將該設(shè)備與PC機連接,系統(tǒng)會提示安裝驅(qū)動,首先指定驅(qū)動安裝所要使用的inf文件所在的位置,該inf文件可以在驅(qū)動工程目錄的driver目錄下找到,是由向?qū)ё詣由傻摹H缓筮x擇安裝驅(qū)動所需要的UsbToECP.sys文件,該文件在D:\ UsbToECP\driver\objfre\i386下。正確安裝驅(qū)動之后,打開計算機的設(shè)備管理器,將會看到該USB設(shè)備。如下圖3所示。打開圖3中的Class for BinBinUsb devices下的BinBinUsb Device屬性,選擇相應標簽,將會看到如下圖4的驅(qū)動信息。
7 結(jié)語
USB設(shè)備驅(qū)動的開發(fā)是設(shè)備開發(fā)過程中必不可少的一項任務。通過研究利用VC++、DDK和Driver Studio對USB驅(qū)動程序的設(shè)計方法,成功地設(shè)計了基于單片機的USB轉(zhuǎn)并口設(shè)備的驅(qū)動程序。通過測試,使用該驅(qū)動的USB轉(zhuǎn)并口設(shè)備運行穩(wěn)定,達到了預期的效果。這種USB驅(qū)動的設(shè)計方法簡化了開發(fā)難度,開發(fā)的驅(qū)動穩(wěn)定可靠,必將受到USB設(shè)備開發(fā)者的廣泛關(guān)注,同時也給其他的基于WDM驅(qū)動的開發(fā)提供一個新途徑。
[參考文獻]
[1] 榮佳波,常明志,井科偉,楊少勇.USB 設(shè)備的WDM驅(qū)動程序設(shè)計[J].應用科技,2004,31(3);39-41.
篇5
[關(guān)鍵詞]數(shù)字電視機頂盒,驅(qū)動程序開發(fā),軟件架構(gòu),Pipeline
中圖分類號:TN948 文獻標識碼:A 文章編號:1009-914X(2014)24-0098-01
1 背景和意義
在國際社會綜合環(huán)境的影響下和從中國自身發(fā)展的實際情況出發(fā),中國正在逐步改變和調(diào)整經(jīng)濟結(jié)構(gòu)和產(chǎn)業(yè)結(jié)構(gòu),擴大內(nèi)需,大力發(fā)展文化產(chǎn)業(yè)和電子信息產(chǎn)業(yè)。2010年1月13日,總理主持國務院常務會議決定加快推進電信網(wǎng)、廣播網(wǎng)、互聯(lián)網(wǎng)三網(wǎng)融合[1],并審議通過了推進三網(wǎng)融合總體方案。2010年至2012年為試點階段,以推進廣電和電信業(yè)務雙向階段性進入重點,2013年至2015年為推廣階段,國家將全面推進三網(wǎng)融合。
目前機頂盒軟件開發(fā)中遇到的普遍問題是軟件開發(fā)周期長。分析其原因,一部分是由于項目管理問題所致,本文對此因素不作討論;另外一個因素就是隨著機頂盒芯片所提供功能不斷向傳統(tǒng)PC靠攏,帶來的是平臺驅(qū)動軟件和上層應用軟件復雜
2 機頂盒軟件開發(fā)傳統(tǒng)架構(gòu)
機頂盒軟件開發(fā)的傳統(tǒng)架構(gòu)主要分為基本型,改進型和中間件。基本型主要是以芯片的功能模塊為單元,對上層軟件提供標準接口。而改進型則在基本型的基礎(chǔ)之上,在驅(qū)動層中集成部分復雜應用(如PVR),降低了上層軟件開發(fā)這些應用的難度。中間件則是為滿足機頂盒應用程序的高度可移植,其對應用程序而言徹底屏蔽不同平臺的差異。
2.1 基本型
在最初的標清機頂盒軟件開發(fā)中,由于其所提供的功能簡單,部分客戶會選擇在應用程序中直接調(diào)用芯片驅(qū)動程序的開發(fā)模式。
2.2 中間件
數(shù)字電視機頂盒中間件(middleware)[2]是指位于數(shù)字電視機頂盒芯片驅(qū)動程序與應用程序之間的軟件部分。中間件標準的應用極大地推動數(shù)字電視機頂盒市場的發(fā)展。目前,中間件廠商主要有茁壯、NDS、愛迪德、天柏、同洲等廠商。
2.3 存在問題分析
基于中間件架構(gòu)來進行數(shù)字電視機頂盒軟件開發(fā),是目前市場上比較通用的做法。由于應用程序基于中間件之上,因此其可移植。系統(tǒng)集成的主要工作轉(zhuǎn)變?yōu)槿绾我浦仓虚g件到芯片廠商的平臺驅(qū)動之上。在大量的項目實踐中發(fā)現(xiàn)在目前的軟件架構(gòu)下仍然存在如下問題:
(1)系統(tǒng)集成方式:每個客戶都在做著重復類似的工作。以節(jié)目直播為例,每個客戶都要建立一套自己的播放流程,并建立如下設(shè)備的之間的相互關(guān)聯(lián):Tuner,Tsrouter, Demux, ES buffer, Video Decoder, Video Img,Video Output。
(2)中間件可移植性:無法徹底屏蔽驅(qū)動API函數(shù)的改變。由于在客戶的中間件中直接調(diào)用芯片的驅(qū)動API函數(shù),而這些API函數(shù)常常直接與硬件模塊緊密相關(guān)。雖然芯片廠商努力保持底層API函數(shù)不要改變,但是當芯片更新?lián)Q代或升級的時候,這些驅(qū)動API函數(shù)常常不可避免的也隨之改變。于是,導致客戶的中間件也需要做出相應的變動,并進行重新驗證。
(3)驅(qū)動調(diào)用時序:無法引導客戶遵循芯片廠商期望的驅(qū)動API函數(shù)調(diào)用時序。中間件的基本操作通常難以一一對應的映射到芯片的驅(qū)動程序上,在大多數(shù)情況下,中間件定義的一個基本操作需要調(diào)用底層驅(qū)動的若干api函數(shù)才能完成。最重要的是,在這些底層api函數(shù)執(zhí)行的時候,常常是有時序的要求。對于芯片廠商提供的驅(qū)動程序而言,原則上不應該對驅(qū)動API函數(shù)調(diào)用時序做任何的假設(shè)。
3 pipeline技術(shù)分析
隨著畫中畫,時移等新應用的不斷出現(xiàn),通過直接調(diào)用芯片驅(qū)動程序的方式來移植機頂盒中間件的方式,正變得越來越復雜。迫切需要在芯片驅(qū)動程序之上,能存在一個高度抽象層,徹底屏蔽不同平臺的底層差異,簡化機頂盒資源的管理,降低設(shè)備廠商中間件集成的難度,減少在系統(tǒng)集成中遇到的問題,縮短機頂盒軟件開發(fā)周期。
關(guān)于pipeline技術(shù),本文將分硬件設(shè)計中的Pipeline技術(shù)[3][4]和軟件設(shè)計中的Pipeline模式[5]進行描述。
3.1 硬件設(shè)計中的Pipeline技術(shù)
流水線(Pipeline)技術(shù)是目前廣泛應用于微處理芯片(CPU)中的一項關(guān)鍵技術(shù)。流水線設(shè)計就是將組合邏輯系統(tǒng)地分割,并在各個部分(分級)之間插入寄存器,并暫存中間數(shù)據(jù)的方法。目的是將一個大操作分解成若干的小操作,每一步小操作的時間較小,所以能提高頻率,各小操作能并行執(zhí)行,所以能提高數(shù)據(jù)吞吐率(提高處理速度)。
3.2 軟件設(shè)計中的Pipeline模式
Pipeline設(shè)計模式的理念是使多個對象處理同一個請求,這些對象形成一條鏈。每個對象擁有下一個對象的引用,該對象可以進行預處理,交給下一個對象處理,然后把處理結(jié)果返回給下一對象。Pipeline像是流水線,每個對象負責一個動作,一起協(xié)作完成一件事情。
3.2.1 序列模式(sequence)
Pipeline設(shè)計的序列模式如圖4所示。在序列模式中,首先由Pipeline控制中心創(chuàng)建整個序列中的所有模塊并建立數(shù)據(jù)的流向關(guān)系, 然后把數(shù)據(jù)輸入傳遞給第一個模塊,啟動Pipeline開始工作。當?shù)谝粋€模塊完成指定功能后,根據(jù)模塊序列找到下一個模塊號, 并把處理過的數(shù)據(jù)傳遞給下一個模塊, 以此類推,直到最后一個模塊為止。
3.2.2 中心模式(center)
在中心模式中,每個模塊都從Pipeline控制中心接收數(shù)據(jù)輸入,然后把處理結(jié)果返回給Pipeline控制中心。由Pipeline控制中心決定調(diào)用下一個模塊,并把上一個模塊的輸出作為下一個模塊的輸入。 以此類推,直到最后一個模塊為止。
4 總結(jié)
機頂盒驅(qū)動軟件架構(gòu)設(shè)計,是一項涉及正確性,健壯性,可重用性,靈活性和高效性的系統(tǒng)設(shè)計工作。本文采用了pipeline架構(gòu)來完成機頂盒驅(qū)動設(shè)計,并將機頂盒驅(qū)動設(shè)計分為流水線管理(Pipeline Manager)設(shè)計,視頻輸出管理(Video Presentation Manager)設(shè)計和音頻輸出管理(Audio Presentation Manager)設(shè)計三大部分。研究了通過流水線來統(tǒng)一管理數(shù)字電視機頂盒系統(tǒng)資源,其簡化了機頂盒設(shè)備廠商系統(tǒng)集成的難度,減少了系統(tǒng)集成中所遇到的問題,縮短了數(shù)字電視機頂盒產(chǎn)品的軟件開發(fā)周期。
參考文獻
[1] 王大鵬,雒春雨,三網(wǎng)融合背景下機頂盒技術(shù)發(fā)展方向,2007國際有線電視技術(shù)研討會,2007.
篇6
摘要:模塊化就是把人才培養(yǎng)方案,專業(yè),課程,課堂都看成模塊,世界萬物都是模塊,學生也是模塊,大模塊分成小模塊,小模塊做好了,大模塊也就做好了,《Java 程序設(shè)計》是職業(yè)學院軟件技術(shù)專業(yè)必修課,學習目前世界上優(yōu)秀的編程語言, 對提高學生就業(yè)能力有重要意義。然而,由于 Java 語言具有較高的抽象性、復雜性和嚴謹性,學生普遍感到學習難度較大;加之受傳統(tǒng)教學模式的制約,學生往往感覺抽象、枯燥,學習興趣不高,接受程度有限。為改變這一現(xiàn)狀,我們將項目任務驅(qū)動法引入教學,對課程體系進行優(yōu)化,對實訓內(nèi)容進行重新設(shè)計,以此激發(fā)學生學習熱情、改善教學效果、提高教學效率,從而更好地滿足職業(yè)院校培養(yǎng)實用型技能人才的要求。
關(guān)鍵詞:Java程序設(shè)計;項目任務驅(qū)動;項目實訓 。
Java 語言作為一種純面向?qū)ο蟮某绦蛟O(shè)計語言, 是目前世界上優(yōu)秀的編程語言之一, Java平臺以其移動性、安全性和開放性受到g迎,在企業(yè)中得到廣泛應用,尤其是近年來基于 Android 系統(tǒng)的Java 手機軟件發(fā)展十分迅速,在形成一個新興產(chǎn)業(yè)。Java 程序員的就業(yè)前景廣闊,可以從事 Java 桌面軟件開發(fā)、Java手機軟件開發(fā)、Jsp網(wǎng)站開發(fā)以及其他與 Java 語言編程相關(guān)的工作。 《Java 程序設(shè)計》作為我院軟件技術(shù)專業(yè)的專業(yè)必修課,力求使學生掌握 Java 面向?qū)ο蟪绦蛟O(shè)計能力,具備從事 Java 編程工作的基礎(chǔ),提高軟件技術(shù)專業(yè)學生的就業(yè)能力。 對《Java 程序設(shè)計》教學進行深入改革、提高教學質(zhì)量,有利于抓住當前 Java 技術(shù)廣泛應用,社會對 Java 程序設(shè)計人才需求量大的有利時機,提高軟件技術(shù)專業(yè)學生的就業(yè)率,提升軟件技術(shù)專業(yè)的影響力。
一、《Java 程序設(shè)計》課程的教學現(xiàn)狀
(一)課程地位和特點 計算機軟件技術(shù)專業(yè)的培養(yǎng)目標是:培養(yǎng)德、智、體全面發(fā)展的學生,能掌握計算機系統(tǒng)基礎(chǔ)知識和基本原理,熟悉計算機系統(tǒng)常用(軟硬件)工具,具有一定的硬件操作和較強的軟件開發(fā)能力。學生畢業(yè)后,既有大專層次的理論知識,又具有本專業(yè)較熟悉的實際操作技能適應在企事業(yè)單位計算機應用一線上直接參與管理或工作;適應在計算機軟件企業(yè)從事專業(yè)的軟件開發(fā)工作。 安排在第二學期,為培養(yǎng)學生“從 事軟件開發(fā)工作”而開設(shè)。教學目標是讓學生掌握 Java 面向?qū)ο蟪绦蛟O(shè)計能力,具備從事 Java 編程工作的基礎(chǔ)。前導課程是《C語言程序設(shè)計》,掌握基本的編程能力基礎(chǔ);后續(xù)課程是《Java Web 開發(fā)技術(shù)》,學習實用的編程技術(shù)。 《Java 程序設(shè)計》是一門典型的程序設(shè)計類課程,由于程序設(shè)計本身具有的抽象性、 Java語言的復雜性和嚴謹性及傳統(tǒng)教學模式的影響,學生普遍感到學習難度大,學習興趣不高, 接受程度有限。
(二)難點和不足 由于程序設(shè)計工作本身具有的抽象性,對學生的邏輯思維能力要求較高;而 Java 語言的復雜性和嚴謹性,又使學生普遍感到 Java 語言學習難度大;加之傳統(tǒng)教學采用的“先講解后演示再練習”的方法,往往讓學生感覺到過于枯燥和抽象;而當前《Java 程序設(shè)計》的課程體系更使之難以適應高職院校培養(yǎng)高技能人才的要求,其主要問題有: 1. 課程體系設(shè)計不合理。當前《Java 程序設(shè)計》的授課模式以理論講授和演示為主,理論內(nèi)容占主導地位,而實訓環(huán)節(jié)處于從屬地位。 由于當前的《Java 程序設(shè)計》高職課程體系很大程度上仍然是本科課程體系的簡化版,是從本科課程體系中刪除較難理論內(nèi)容并增加實踐內(nèi)容而形成的,并沒有完全擺脫本科模式的影響。然而,高職教育的培養(yǎng)目標是不同的。 高職教育更強調(diào)培養(yǎng)熟練的動手實踐能力。因此,高職課程和本科課程在課程體系的設(shè)計應該是完全不同的,不僅僅是理論與實踐的比例問題,而應該重新設(shè)計課程體系,使理論內(nèi)容為實踐內(nèi)容服務,才能真正實現(xiàn)以培養(yǎng)動手實踐能力為主導。 2. 實訓內(nèi)容設(shè)計不合理。當前《Java 程序設(shè)計》的實訓內(nèi)容大多屬于驗證性實訓,與真實開發(fā)項目存在很大差距,學生難以適應實戰(zhàn)項目實踐,對培養(yǎng)崗位職業(yè)能力的作用非常有限。課程現(xiàn)有實訓內(nèi)容是根據(jù)理論內(nèi)容設(shè)計的,是為了驗證理論內(nèi)容而實踐,從而導致實訓內(nèi)容強調(diào)緊扣理論內(nèi)容,而忽略了真實的崗位情境,造成實訓情境過分理想化。這樣即使學生能掌握一些實踐技能,但是這些技能在真實的崗位情境中卻難以應用。因此,必須設(shè)計好實訓內(nèi)容,突出 Java 語言的實用性、針對性,才能引導學生“在做中學”。 針對上述問題,我們引入項目任務驅(qū)動式教學法,對《Java 程序設(shè)計》課程教學進行改革。
二、《Java 程序設(shè)計》課程的項目任務驅(qū)動式教學改革
(一) 項目驅(qū)動是一種教學理論基礎(chǔ)上的教學法
在教學過程中,把具體的、學生感興趣的、有意義的具體任務作為線索,將知識點巧妙地隱含在每個任務之中;學生在預定情境下,經(jīng)過思考并借助教師的引導解決問題,通過自主建構(gòu)的方式獲得知識、 培養(yǎng)職業(yè)能力。 與傳統(tǒng)教學 “教師講、學生聽”,教師處于主動傳輸知識的地位,學生處于被動接受知識的 地位的模式相比,項目驅(qū)動法強調(diào)的是 “以學生為主體、以教師為主導、以任務為主線”。在 任務驅(qū)動法教學過程中,學生能充分發(fā)揮主觀能動性,圍繞任務要求開展實踐探索,教師不再是課堂的中心,單方面地向?qū)W生灌輸知識,而是在學生完成任務的過程中起到組織、引導、督促、 協(xié)助、評價的作用。采用這種教學方法,可以解決傳統(tǒng)教學存在的無法充分調(diào)動學生的積極性和創(chuàng)造性,項目驅(qū)動式教學改革符合高職教育發(fā)展方向,符合國家教育部《關(guān)于全面提高高等職業(yè)教育教學質(zhì)量的若干意見》 提出的高職教育的教學過程要突出實踐性和職業(yè)性的要求。
(二)《Java 程序設(shè)計》課程的項目驅(qū)動式教學
1. 概述
為了更好地實施教學,切合高職教育人才培養(yǎng)的要求,培養(yǎng)適應行業(yè)需求的程序設(shè)計人才, 我們在《Java 程序設(shè)計》課程中引入任務驅(qū)動教學法,以行業(yè)流行的my Eclipse 作為開發(fā)平臺,對 《Java 程序設(shè)計》課程教學進行改革。我們緊扣 教學大綱,重新梳理《Java 程序設(shè)計》課程的知識體系,設(shè)計一系列具有實用性和趣味性的任務案例,并將所有知識點融入到各項目案例中。建立一套任務驅(qū)動式課程體系。我們以培養(yǎng)崗位職業(yè)能力為主線,用典型任務序化知識,并將知識融入任務情景之中。按“教師提出任務->學生分析任務->學生解決任務->學生提交任務完成報告->學生相互評價->教師總結(jié)與評價”的結(jié)構(gòu)組 織每一個任務。任務驅(qū)動的整個流程按照實際需要進行安排,如果不能在一個教學時間單元中完成整個流程,則可以分段進行,比如把學生解決任務這個模塊放到課余時間進行,讓學生自主學習與挖掘新知識,加深對知識的理解。
2. 課程體系的優(yōu)化設(shè)計
《Java 程序設(shè)計》課程的內(nèi)容由三大部分構(gòu) 成:Java 基本語法、Java 面向?qū)ο髾C制、應用編程。其中 Java 面向?qū)ο髾C制部分具有較強的理論性和抽象性,應用編程部分則更多偏向?qū)嵺`性。 由于該課程的知識點覆蓋面廣,內(nèi)容之間聯(lián)系緊密、互相滲透,我們根據(jù)教學目標重新梳理知識點之間的聯(lián)系,按照任務驅(qū)動的模式將知識體系劃分為 14 個模塊,每個模塊又包括三個小任務即啟發(fā)式模塊、知識點任務和實踐鞏固任務,14 個大的模塊如下所示: (1)Java 開發(fā)環(huán)境的搭建和使用。Java 特 點;Java 實現(xiàn)機制;Java 的體系結(jié)構(gòu);集成環(huán)境 myEclipse 。 (2)Java 基本語法。Java 應用程序結(jié)構(gòu); Java 程序編寫及運行過程。Java 語言標識符和關(guān)鍵字;Java 語言數(shù)據(jù)類型;Java 語言運算符與表 達式;分支控制結(jié)構(gòu);循環(huán)控制結(jié)構(gòu) (3)類和對象。類與對象概念與特征、屬性和方法;類與對象的關(guān)系;定義類的語法;創(chuàng) 建類的對象;使用對象的步驟;類的方法組成部 分;定義和使用類的方法。變量作用域;定義包和導入包的關(guān)鍵字;Javadoc 注釋。 (4)封裝和重載。封裝的作用;對屬性封裝;用構(gòu)造方法實現(xiàn)對象成員的初始化。方法重載;Java 中的構(gòu)造方法與實例方法區(qū)別;對構(gòu)造方法進行重載。 (5)繼承和多態(tài)。繼承的概念;繼承關(guān)鍵 字;父類與子類之間的關(guān)系,super 關(guān)鍵字。多態(tài) 的概念;靜態(tài)多態(tài),動態(tài)多態(tài);多態(tài)的實現(xiàn)。 終類和抽象類。 (6)接口。接口的概念,接口編程的實 現(xiàn); (7)數(shù)組。聲明和創(chuàng)建數(shù)組;數(shù)組的初始化;數(shù)組元素的使用。 (8)字符串。定義、初始化字符串;字符 串常見操作及方法;StringBuffer 類的定義和方 法。 (9)異常處理。異常的概念;異常處理結(jié) 構(gòu);拋出異常;聲明異常;自定義異常。 (10)GUI 編程。Java GUI 界面的基本原 理;常用的 AWT 和 Swing 組件;布局管理器;菜 單;Java 事件組成;委托事件處理機制;常用事件類; (11)數(shù)據(jù)庫編程。JDBC 的概念;JDBC 框 架結(jié)構(gòu);JDBC 驅(qū)動程序 JDBC 驅(qū)動程序編程的基本步驟。 (12)文件 I/O 編程。Java 的文件管理; Java 目錄管理;文件的創(chuàng)建;文件類的方法;順序文本文件;流的操作步驟;隨機文本文件;文件的追加。 (13)多線程編程。Thread 類;Calendar 類;SimpleDateFormat 類;線程的狀態(tài);線程的優(yōu)先級;線程的通信。 (14)網(wǎng)絡(luò)編程。TCP/IP 協(xié)議;Socket 類; ServerSocket 類;UDP 協(xié)議;發(fā)送數(shù)據(jù)包;接收數(shù)據(jù)包。 本文提出的課程體系將教學重點放在實踐 較強的應用編程部分,涵蓋了GUI 編程、數(shù)據(jù)庫編程、文件 I/O 編程、多線程編程、網(wǎng)絡(luò)編程等 技術(shù),而對理論性、抽象性較強的 Java 面向?qū)ο髾C制,不再深入分析其內(nèi)在機理,只要求學生掌握基本的概念、原理和語法,為后面的應用編程提供基礎(chǔ)。
3. 實訓內(nèi)容的優(yōu)化設(shè)計
Java 程序設(shè)計具有很強的實踐性,但其理論知識卻很抽象,學生僅理解理論知識點是遠遠不 夠的。傳統(tǒng)的“先講解理論知識點,再展示演示案例幫助學生理解,后再進行實踐練習”的做法是以教師為主導,學生被動學習的灌輸式教學法,這樣導致學生學習興趣不高、接受程度有限,導致演示案例和實踐練習的效果大打折扣。 對此我們重新設(shè)計教學流程,摒棄這種以教師為主導的做法,突出學生在學習中的中心地位。首先在每個單元中精心設(shè)計一個有趣、具有啟發(fā)性的演示案例,先讓學生看到程序運行效果,激發(fā)其學習興趣和積極性;然后從案例中引出該知識點的任務,讓學生分組討論該任務,分析該任 如何完成;接著限定任務的完成時間,讓學生在該時間內(nèi)完成任務并提交任務完成報告,在任務完成后學生們要進行小組互評;后教師再根據(jù)學生完成任 務的情況進行總結(jié)和評價,包括對學生任務完成 程度的評價,對任務背后的知識點的解釋,對學生還沒熟悉的重難點進行總結(jié)。至此,學生通過完成任務,不但對相關(guān)知識點有了一定感性認識,而且通過任務評價和總結(jié),能夠更好地理解和消化理論,提升為自己的理性認識;后根據(jù)需要再設(shè)計 1-2 個案例作為實訓練習,由淺入深、由簡單到復雜地鞏固知識點和技能。很明顯,這是一種 “從實踐到理論,再從理論到實踐”的做法,符合人類認識客觀世界的規(guī)律。由于該任務貼近學生學習的真實情境,學生感到親切、容易理解其次,由啟發(fā)式案例提出本節(jié)要完成的任務。這里任務比啟發(fā)式案例要求稍高,有利于在學生現(xiàn)有的基礎(chǔ)上挖掘自己的潛力,更深的理解知識。學生在接到任務后當堂討論并分工,這樣有利于培養(yǎng)他們的團隊合作精神,學生完成任務的過程可以放在課后進行。在任務完成后需保留源代碼,對程序運行結(jié)果保留截圖并用 ppt 演示任務完成流程和填寫任務完成情況表;回到課堂上后學生將任務結(jié)果進行展示并對其他小組評分,教師進行評價并補充講解重難點,包括程序結(jié)構(gòu)、定義變量、數(shù)據(jù)類型、運算符和表達 式、分支控制結(jié)構(gòu)、循環(huán)控制結(jié)構(gòu)等。教師對知識點和關(guān)鍵技術(shù)步驟進行總結(jié),對實踐練習中出 現(xiàn)的問題進行分析,可以幫助學生構(gòu)建一個 晰、完整的知識結(jié)構(gòu)后,進行實踐鞏固練習。,以任務為驅(qū)動,教師只是起到引導的作 用,這樣學生掌握的知識才是真正屬于自己的知識。
三、結(jié)語
如上所述,項目任務驅(qū)動式教學的關(guān)鍵是合理設(shè)計項目任務,將知識點巧妙地隱藏到任務中,讓任務本身具有趣味性并盡可能地貼近真實情境,使學生在完成任務的過程中不僅獲取相關(guān)知識,而且發(fā)展實踐能力。理論知識點不再是案例的主導, 而是作為演示案例的抽象推廣。實踐證明,對于《Java 程序設(shè)計》這門理論性和實踐性都很強的課程,通過引入項目任務驅(qū)動教學法,進行項目實訓,使理論和實踐互相滲透,確實能夠,激發(fā)學生的學習熱情,改善教學效果,提高學生的動手實踐能力,能更好地滿足高職院校培養(yǎng)實用型技能人才的要求。
參考文獻:
篇7
關(guān)鍵詞:教學模式;任務驅(qū)動;c語言程序設(shè)計;教學實踐
0 引言
《C語言程序設(shè)計》作為計算機程序設(shè)計的基礎(chǔ),是理工類本科學生的一門必修課,尤其是C語言對計算機硬件具有很好的編程能力,使其在工科教學中的生命力越來越強。我們學院在C語言的教學上基本上還是采取傳統(tǒng)的教學模式:按照C語言教材自身的內(nèi)容上課、上機,采取筆試形式考試。這樣的教學模式使得學生過分注重C的語法、語句等規(guī)則,而忽視了對編程思路的培養(yǎng),學生獨立分析問題和解決問題的能力沒有很大的提高,給學生參加全國等級考試以至后續(xù)課程的學習留下了隱患。下面就作者在C語言教學過程中的經(jīng)驗談談想法。
1 傳統(tǒng)教學模式
傳統(tǒng)教學模式是以教師作為課堂的中心,以廣大學生為講授對象,以課本作為講授的主線。雖然現(xiàn)在教學環(huán)境大都采用多媒體大屏幕,操作方便,易于控制教學內(nèi)容和節(jié)奏,能在規(guī)定課時內(nèi)呈現(xiàn)較多信息量;但是學生往往處于被動學習狀態(tài),教學內(nèi)容難以適應學生的個體差異,所有學生被迫按照老師的講授速度進行學習,不利于培養(yǎng)思維能力與創(chuàng)造能力。
上機實踐課上通常老師會事先布置幾道編程題,但是學生上機目標不是很明確,問的問題多數(shù)是屬于同一類問題。老師不停地在機房各處一一解答,既浪費時間,也沒取到很好的效果。學生在機房沒有緊迫感,甚至有些學生覺得無事可做,就會打游戲等。這種上機方式不利于培養(yǎng)學生的動手能力和自我解決問題的能力。
學生學不好C語言主要是因為C語言教學的重點不是放在如何解決問題上,而是把大部分的時間放在講解語法規(guī)則和語句格式上,其后果就是學生一拿到任務后首先琢磨如何定義變量,用什么語句,而不是對問題進行合理的分析,考慮最佳算法,這樣當然覺得很難而且也設(shè)計不出好的程序。學生參加全國等級考試的通過率很低也就不足為怪了。
2 “任務驅(qū)動式”教學模式
采用“任務驅(qū)動式”的教學方法,知識及技能的傳授以完成典型“任務”為主,有利于提高學生利用計算機進行自主學習與解決問題的能力。
2.1 教學內(nèi)容的改革
我們把通過全國計算機二級考試作為學習c語言的目標,針對等級考試大綱來確定教學計劃以及教學內(nèi)容。為此,我們從第一堂課起就強調(diào)并要求學生通過全國二級考試,既讓學生明確短期學習目標,又放眼長遠的努力方向,以激發(fā)學生進行自主學習的主動性。我們將教學內(nèi)容分離為幾個相對獨立的模塊,即結(jié)構(gòu)模塊、數(shù)組模塊、指針模塊、函數(shù)模塊和文件模塊。模塊的內(nèi)容要循序漸進,把握好由易到難,由簡單到復雜的教學過程,否則容易使學生一開始就產(chǎn)生一種畏懼情緒,失去學習興趣。然后,力求概念準確,分散難點。各模塊的教學目標要十分明確,教學量適中,讓學生很容易把握住教學要點,理解和掌握教學內(nèi)容。
2.2 設(shè)計好實驗任務
實驗任務的設(shè)計包括任務的提出與分解、最終達到的目標、解決問題的方法等。目的性要強,任務要明確,這樣才能很好地緩解計算機基礎(chǔ)課程實驗教學中學生無事可做,玩游戲、上網(wǎng)聊天等現(xiàn)象。要培養(yǎng)學生限時編程的良好習慣,要求學生在規(guī)定的時間內(nèi)編寫和調(diào)試好給定的程序。通過這些基本功的訓練,學生在具備了扎實的計算機程序設(shè)計能力后,就較容易通過全國計算機二級考試。
在程序設(shè)計語言教學中,算法是程序設(shè)計的靈魂,學生編寫不出程序的首要原因是設(shè)計不出―個合適的算法。因此,在教學中應對常用的算法結(jié)合典型實例進行詳細地講解,強調(diào)算法的步驟,讓學生對算法有比較深刻地了解,并鼓勵學生從不同角度去思考問題,對于同一個問題的解決用多種方法來實現(xiàn)。這樣有助于拓展學生的思維,增加學生對學習C語言的興趣。
例如:計算n!
我們可以采用遞歸法:
2.3 學習成績評價方式的改革
采用“筆試+上機考試”的評價方法可以提前讓學生體驗全國等級考試的過程。同時,兩種形式考試都通過才算這門課程通過,也能促使學生在學習c語言的基本知識之外加強編程實踐,讓學生學到c語言的語法規(guī)則的同時也掌握了程序設(shè)計的方法。
篇8
關(guān)鍵詞 任務驅(qū)動 任務驅(qū)動教學法 網(wǎng)絡(luò)程序設(shè)計
中圖分類號:G424 文獻標識碼:A DOI:10.16400/ki.kjdkz.2015.11.056
Task-driven Teaching Method in Network Programming Course Teaching
XIAO Zihong
(Hu'nan Police Academy, Changsha, Hu'nan 410138)
Abstract Task-driven teaching method is suitable for practical strong, comprehensive and strong curriculum, enabling students to break through the limitations of classroom teaching, students can quickly accumulate knowledge and skills in a short time, to improve students' network programming ability, good teaching effect. This paper discusses the task-driven teaching method in Network Programming course Teaching, to provide a reference for the practice and reform of the same category.
Key words task-driven; task-driven teaching method; Network Programming design
任務驅(qū)動教學法是指在課程教學的過程中,學生在教師的引導下,緊緊圍繞一個或多個特定的教學目標,在教學任務的驅(qū)動下,通過對現(xiàn)有知識技能和學科理論的主動應用,共同進行自主探索的互學習。任務驅(qū)動教學法要求教學任務具有非常強的目標性,要刻意營造教學情境,創(chuàng)設(shè)情景使整個教學工作在真實的任務驅(qū)動下進行。在整個教學過程中,教師處于中心地位,教師在安排布置學生完成教學任務時,以引導或演示的方式,啟發(fā)學生給出完成該任務的思路、方法和結(jié)果。在教師安排下,學生花大量的時間自主完成自己的學習任務,在學生自己動腦、動手完成任務,從而學習和掌握相關(guān)的知識與技能。
任務驅(qū)動教學法是知識及技能的獲取以任務為中心,著重培養(yǎng)學生分析問題、解決問題、創(chuàng)新問題的綜合能力。它以某一具體任務為出發(fā)點,通過課堂引導、操作實踐、評價反饋等方法來完成不同階段的任務,從而達到培養(yǎng)學生主動獲取知識、應用技能等綜合能力。
1 任務驅(qū)動教學法的可行性
1.1 網(wǎng)絡(luò)程序設(shè)計的課程特點
網(wǎng)絡(luò)程序設(shè)計課程是一門實踐性、綜合性都較強的課程。該課程主要是以網(wǎng)絡(luò)程序原理及設(shè)計思想為主線,學習網(wǎng)絡(luò)程序設(shè)計與編寫的方法,從而進一步學習分析問題、解決問題的方法,而不是單一學習任何一種特定語言的語法規(guī)則,因此在教學中非常注重學生解決問題的編程技能和程序研發(fā)能力的培養(yǎng)。其次,作為大學高年級專業(yè)課程,學生作為學習主體存在較大的群體差異,他們的認知水平、專業(yè)基礎(chǔ)知識、程序研發(fā)能力參差不齊。如果以統(tǒng)一的教學方法來教學,則難以取得很好的教學效果。
1.2 任務驅(qū)動教學法的可行性
網(wǎng)絡(luò)程序設(shè)計的教學知識點很多,教學內(nèi)容通常可以歸納為三類:第一類是基礎(chǔ)語法類,強調(diào)網(wǎng)絡(luò)程序語法知識與規(guī)則的學習,使學生掌握最基本的程序語法和程序設(shè)計思想; 第二類是覆蓋類,這類知識的學習能使學生的網(wǎng)絡(luò)知識體系更加全面,這部分內(nèi)容傾向于全面性的專業(yè)知識的應用;第三類是綜合項目類,此部分的教學內(nèi)容更加注重網(wǎng)絡(luò)程序設(shè)計中綜合研發(fā)能力的培養(yǎng)。通用的教學模式是按基礎(chǔ)類、覆蓋類、綜合項目類的順序?qū)嵤┙虒W,這種方法實施簡單、層次性強。
任務驅(qū)動教學法旨在培養(yǎng)學生運用及提升技術(shù)知識水平的能力,培養(yǎng)學生積極探索新知識的能力。任務驅(qū)動教學法改變了通用的教學模式,從綜合項目類入手,設(shè)計不同的任務,在任務的驅(qū)使下完成基礎(chǔ)類、覆蓋類的教學內(nèi)容的學習。這種方法促使師生共同參與到日常課程教學中,在完成課程任務實踐的過程中,部分學生會遇到暫時難以解決的問題,為了完成任務學生會自發(fā)討論交流、查詢資料,協(xié)作完成任務,這樣做的結(jié)果會使課堂教學變得氣氛活躍而且生動深入。教師把課堂教學的重點和難點都落實到了解決課程任務過程中發(fā)現(xiàn)的難題,通過交流展示等反饋機制及時了解學生的學習狀況,更好地幫助教學引導學生達到預定的教學效果。任務驅(qū)動教學法是理論教學理論和實踐教學理論的高效運用,非常適用于網(wǎng)絡(luò)程序設(shè)計類的教學中。
2 任務驅(qū)動教學法的實施
2.1 任務設(shè)計的原則
任務驅(qū)動教學法以任務為中心,任務的焦點是解決某一現(xiàn)實問題,激發(fā)學生積極參與欲望的問題。讓學生在完成教師所設(shè)計的各種任務同時,能夠不斷地增強知識應用技能。因此在設(shè)計任務的時候應遵循以下幾個原則:
(1)整體性原則。各階段的任務要能夠涵蓋教學內(nèi)容的絕大多數(shù)知識點。任務的知識點要能形成一個有層次的整體,讓學生在不斷完成任務的過程中獲得網(wǎng)絡(luò)程序設(shè)計知識和技能。
(2)實用性原則。要使學生通過完成任務將得到有價值的結(jié)果,具有較強的實用性,激發(fā)學生的創(chuàng)作潛能。
(3)開放性原則。任務設(shè)置的難易程度要適中,還要在任務中為學生留出創(chuàng)造性能力發(fā)揮的空間。
(4)可操作性原則。任務應該是可操作的,在現(xiàn)有的能力水平下能夠完成,要充分考慮到學生已具備的知識與技能。
(5)真實性。任務的設(shè)計要貼近學生的日常生活實踐和現(xiàn)實需要,這樣不僅有利于教師對任務的表達,而且有利于學生對任務的精準把握。
2.2 任務驅(qū)動教學法在教學中的實施
此教學法的實施可分成:創(chuàng)設(shè)情境,精心設(shè)計任務;引導學生進行任務分析;學生自主探究;展示交流;及時評價與總結(jié)共五個步驟。
(1)創(chuàng)設(shè)情境,精心設(shè)計任務。實施任務驅(qū)動教學法要營造真實、有現(xiàn)實意義的情境,引起學生的學習興趣。學生的求知欲望是建立在濃厚的興趣和豐富的情感基礎(chǔ)上的,所以要調(diào)動學生的學習積極性,先要喚起他們的學習興趣,引導他們進入設(shè)定的學習情境。
任務是任務驅(qū)動教學法的核心,它直接決定教學目標完成的好壞。因此,教師在實施任務驅(qū)動教學各階段目標時,要精心分析教學目標,仔細分解或組合每個教學內(nèi)容,盡量為學生設(shè)計出具有代表意義的且可操作的任務,盡可能覆蓋每個知識點。
(2)引導學生進行任務分析。如果精心設(shè)計的課程任務來自學生的興趣或現(xiàn)實生活需求,學生會非常感興趣。教師應從學生的各種需求出發(fā),設(shè)計出合適的教學任務,才有利于學生主動學習,才能突破教學重點難點。在學生躍躍欲試積極思考的時候,教師不要急于提供方法或提出解決方案,要恰當?shù)匾龑W生對任務進行分析、討論,將大的任務分解為一個個的更小級別的任務,步步為營,逐步推進,最終達到預定的教學目標。
(3)學生自主探究。這是任務驅(qū)動教學中的重點內(nèi)容。經(jīng)過教師課堂上的分析引導,學生了解了每一個任務中應解決的關(guān)鍵問題和涉及的核心技術(shù),也都能獲得各自不同的理解和技術(shù)方案。對于解決問題中的疑難點,也正是教師在教學設(shè)計時隱含在各個任務中的知識點,在下次課堂教學時教師可以將此作為典型問題引導學生解決。在學生完成任務的過程中,教師要創(chuàng)造一個良好的交流平臺,能夠?qū)崟r幫助學生進行自主學習,及時解決學生遇到的疑問、降低學習難度。
(4)展示交流。學生各自完成作教師布置的任務后,通過自評自說的方式在課堂進行交流展示,各小組相互欣賞完成后的成果,進行互評;還可以通過提問的方式進行互相交流,咨詢對方完成任務中好的實現(xiàn)方法和步驟。
(5)及時評價與總結(jié)。教師要適當?shù)貙W生的學習情況進行總結(jié)和評價,課時允許的話還可以進行自評和互評。恰當及時的評價能充分肯定他們的成果,調(diào)動他們的積極性,增強自信心。通過評價時的互相交流討論,既培養(yǎng)學生的創(chuàng)新意識和團隊精神,又培養(yǎng)了善于分析和接受他人建議的良好品質(zhì),還能體會到學以致用的快樂。
評價在任務驅(qū)動教學法的實施過程中是非常重要的環(huán)節(jié),評價能夠使從技術(shù)技能等方面給予學生啟示,又能從師生的討論和評價中多角度地看到自己的不足,把原理性知識與操作性技能固化為個人的程序研發(fā)能力,快速提升網(wǎng)絡(luò)編程綜合能力。
3 使用任務驅(qū)動法教學要注意的問題
(1)分解的任務必須有實用價值。分解的任務要與學生生活緊密聯(lián)系起來,最好是學生樂意解決的任務,這樣才能更好地激發(fā)學生的學習熱情。實施時適當引用項目教學法進行輔助教學,教師可以獨立研發(fā)本課程相關(guān)項目并分解成小項目,把其中一些小項目作為課程案例進行課堂討論,以項目經(jīng)理的角度指導學生如何完成任務,而將另外一些小項目作為課程任務布置給學生。
(2)應遵循循序漸進原則,教師要注意及時指導。任務驅(qū)動教學法能驅(qū)動學生從被動學習者變?yōu)樽灾鲗W習者,從而使學生能在學習知識技能的同時也提高自主學習的能力。任務驅(qū)動教學法的最終目的是為了知識點的掌握和技能的獲取,所以在知識點的選取方面應遵循由簡到繁、由易到難的循序漸進的原則。還要求教師創(chuàng)建一個合適的交流平臺,及時指導學生解決任務中的因難。
(3)對教師綜合素質(zhì)要求較高。任務驅(qū)動教學法對教師有很高的要求,如果教師引導缺乏技巧或者對整個課程任務的設(shè)計不夠理想,都可以會大大影響教學效果。教師先要精心地拆分教學目標,然后將教學目標巧妙地蘊涵到某個教學任務,從而得到教學內(nèi)容。這些教學任務不僅要有典型性,而且還應有挑戰(zhàn)性,所有這些都需要教師把握學生的知識能力水平,本課程知識、技能及其內(nèi)在聯(lián)系。
任務驅(qū)動教學法是一種獲取操作性、實踐性教學內(nèi)容的非常有效的方法。在使用這一方法進行教學時要充分考慮教學對象的能力與水平,對教學內(nèi)容有比較精準的把握,才能保證對這一方法運用的合理、恰當。
參考文獻
[1] 楊建勛.計算機教學中任務驅(qū)動教學法的實施[J].教育與職業(yè),2013.6:159-161.
[2] 侯建花,楊長青.“C語言程序設(shè)計”實驗教學的改革與實踐――以淮海工學院為例[J].計算機教育,2010.1:114-115.
篇9
關(guān)鍵詞:C語言程序設(shè)計;案例驅(qū)動;教學方法
中圖分類號:G642 文獻標識碼:A
1引言
“C語言程序設(shè)計”是計算機專業(yè)的基礎(chǔ)課,同時也是“數(shù)據(jù)結(jié)構(gòu)”、“操作系統(tǒng)”、“嵌入式系統(tǒng)”等計算機專業(yè)課程的前導課程,它已經(jīng)成為我院計算機專業(yè)的一門必修課,在整個課程體系中占有重要地位。“C語言程序設(shè)計”不僅是學生學習程序設(shè)計的開端,而且與學生形成程序設(shè)計過程理念、提高分析問題、解決問題的能力有著密切的關(guān)系。通過這門課程的學習,學生可獲得程序設(shè)計語言知識,培養(yǎng)軟件開發(fā)能力,還可以鍛煉邏輯思維能力,對學生綜合素質(zhì)的提高具有一定的促進作用。
客觀上,C語言教學過程中,教師的教法和學生的學法對教學效果會產(chǎn)生直接的影響。由于C語言牽涉到的概念比較復雜,規(guī)則繁多,使用靈活,容易出錯,不少初學者感到學習困難。傳統(tǒng)教學過程中,教師需要在課程規(guī)定學時內(nèi)講解C語言的語法、語義以及這門語言方方面面的規(guī)定,為了完成教學任務,教師往往在授課時先講語法規(guī)則,再舉例講解教材上或事先準備好的簡短程序代碼,一味“填鴨式”的灌輸,而對學生而言,他們不但要在較短時間內(nèi)記住大量瑣碎的知識點,還要能靈活運用知識點,融會貫通,完成教師課堂上演示的例子或課后布置的作業(yè),但因缺少真正的編程調(diào)試及實踐環(huán)節(jié),學生逐漸感覺到學習內(nèi)容的枯燥乏味,理論與實踐不能有機地結(jié)合起來,解決實際問題的能力差,學習興趣在學習過程中隨時間而減退或消失,學習效果不好。本文結(jié)合筆者的實際教學經(jīng)驗,提出并探索了采用“案例驅(qū)動”教學方法來改善課堂教學,并將其應用于實踐,與大家共勉。
2 “案例驅(qū)動”教學法的探索實踐
2.1教學中存在的問題
“C語言程序設(shè)計”是一個邏輯性很強的課程,但多數(shù)學生在學起來時感到無從下手。主要原因可歸結(jié)為以下兩點:
一方面,目前學校使用的教材中,絕大多數(shù)結(jié)構(gòu)都基本相同,即在每一章介紹完概念后,提供一些例題解釋相關(guān)概念的使用方法,并在章節(jié)結(jié)束后針對本章中出現(xiàn)的內(nèi)容提供一些練習題。考試普遍采用單選、判斷及簡答等方式測試學生對教材內(nèi)容的掌握程度。從實際效果分析,這只測試了學生對各章節(jié)中的基本概念的記憶程度而非理解程度。
另一方面,在考試的壓力下,特別是目前的應試考試中,學生更多注意的是教材中的典型例題與老師指定的重點內(nèi)容,對程序的系統(tǒng)概念沒有真正地理解,特別是沒有整體程序設(shè)計的思想。通過對考試結(jié)果的分析,可以發(fā)現(xiàn)在考試中涉及的綜合編程部分,學生的得分率很低。為了確保學生的課程通過率,教師在考試時盡可能將綜合測試部分的比例壓低或提供給學生統(tǒng)一的復習提綱,結(jié)果使學生在學習時一切圍繞任課老師的講授內(nèi)容死記硬背,偏離了理論與實踐相結(jié)合的軌道,無法將所學理論知識運用到實踐中解決具體問題,更無法形成良好的編程思想。
2.2 “案例驅(qū)動”教學思想的提出
我院屬于應用型本科院校,其教育目標著重于培養(yǎng)具有實際工作能力的技術(shù)型和應用型人才。“C語言程序設(shè)
計”在應用型教學中是必不可少的一門學科,而且往往在新生入學的第1學期開設(shè),以便培養(yǎng)學生的編程思想,為后續(xù)課程做鋪墊。因此,強調(diào)實踐性成為“C語言程序設(shè)計”教學中尤為重要的問題。為了改變傳統(tǒng)的“填鴨式”知識灌輸,能夠在規(guī)定的學時內(nèi)加強學生的理解能力,同時其培養(yǎng)編程思想,以提高學生的編程能力,結(jié)合C語言的特點,反思傳統(tǒng)教學方式的弊端,筆者提出“案例驅(qū)動”的教學思想。即將所要學習的新知識隱含在一個或幾個案例之中,引導學生對案例進行剖析、討論,明確它大體涉及哪些知識,并找出哪些是舊知識,哪些是新知識,老師指導、幫助學生找出解決問題的方法,最后通過案例的完成而實現(xiàn)學生對所學知識的理解、編程思想的建立和實踐動手能力的提高。在選擇案例的過程中,應當遵循以下的標準。
第一,所選案例往往具有真實性,一般在日常生活中能典型地反應教學內(nèi)容。
第二,所選案例難易程度要適中。案例的選擇要考慮學生的知識背景,過于復雜的案例,將導致學生學習興趣下降。難易適中的案例才有利于學生學習的深入進行,提高其學習積極性和主動性。
第三,案例要能覆蓋多個知識點,以便提高學生綜合運用知識的能力,達到整合知識的目的。
2.3 “案例驅(qū)動”教學法的課堂組織實施
2.3.1學時調(diào)整及案例引入
為了體現(xiàn)精講多練的原則并適時引入案例,我們首先對整個教學過程的學時作了重新編排:將原來的96學時調(diào)整為112學時,增加實踐學時的比例,整個教學過程分兩學期完成。
新生入學后第1學期的后8周完成前48學時內(nèi)容的講授,主要包括C語言基礎(chǔ)語法知識(變量、常量)、簡單的輸入輸出函數(shù)(scanf和printf)、三大結(jié)構(gòu)、函數(shù),并將這些知識點融匯于一個案例――計算器案例中。通過案例的分析及教師的指導,學生在實踐的過程中能快速理解C語言的基本概念并初步建立編程思想。
第2學期共16周的時間完成后64學時內(nèi)容的講授,包括數(shù)組、指針、結(jié)構(gòu)體、鏈表等,并將這些知識點整合于一個具體典型的案例――學生成績管理系統(tǒng)中。這一階段的學習實踐,讓學生分別用數(shù)組、結(jié)構(gòu)體、鏈表三種數(shù)據(jù)結(jié)構(gòu)去實現(xiàn)任務目標,學生對C語言有更深一步的認識,進一步提高了編程技能。
引入案例后,能夠打破以往按照章節(jié)順序授課的基本模式,教師可以按照不同的技能層次分學期講授課程。這樣使學生在不同的技能培養(yǎng)階段,循序漸進地、穩(wěn)步地提高實踐能力,從而達到培養(yǎng)應用型人才的目的。
2.3.2案例分析
“案例分析”旨在通過教師課堂演示案例系統(tǒng)讓學生分析案例,提出解決問題的途徑和方法。對于同一個案例,不同的學生會提出不同的分析結(jié)果和實現(xiàn)方法。案例分析體現(xiàn)了一種以“應用為目的、從實例出發(fā)”的教學思路,能充分調(diào)動學生自主獲取知識的學習愿望,它也體現(xiàn)了一種以學生為本的教學思想。
理論課部分我們主要采用了“案例分析”教學法,以教師為主體,通過教師對案例的演示講解,說明課堂內(nèi)容,使案例與課程的基本理論融為一體,構(gòu)成一個完整的課程內(nèi)容體系。以數(shù)組這一章為例,在講解數(shù)組之前,給學生演示用數(shù)組實現(xiàn)的案例――學生成績管理系統(tǒng)1.0,在正確輸入用戶口令后,首先,進入系統(tǒng)的主菜單界面,如圖1所示。通過主菜單,可以分別實現(xiàn)學生成績的輸入、輸出、查詢、排序等主要功能。演示的過程中不斷向?qū)W生提出問題,在學生思考的同時引出知識點。其次,借助于PPT詳細講解每一個新知識點的主要語法及功能,并用每一個小程序代碼具體說明講解,讓學生在小程序例子中理解消化新知識。再次,根據(jù)學生的理解程度,將案例中的每一個功能模塊單獨選出來讓學生分析,給出實現(xiàn)功能模塊的主要思路。最后,回到PPT中,將整個案例中所用到的知識點分模塊地進行匯總,例如,在進入系統(tǒng)時輸入用戶口令,需要用到字符數(shù)組及其相關(guān)函數(shù)。這樣,每一個功能模塊對應一個知識點,可使學生更好地理解其中的理論知識,也為后續(xù)的實踐部分打下良好的基礎(chǔ)。
2.3.3案例實現(xiàn)
“案例實現(xiàn)”是“案例驅(qū)動”教學中的最后一步,也是極為重要的一步。通過學生親自編程來實現(xiàn)“案例分析”中提出的案例,真正地將知識點融入到實踐中,實現(xiàn)理論與實踐的有機結(jié)合。這一步的實現(xiàn)通常放在實踐課上完成,我們在理論課的知識點講解及“案例分析”結(jié)束后,緊接著安排實踐課。根據(jù)案例涵蓋知識點的多少及難易程度,合理安排實踐課的學時,每一學時實踐課實現(xiàn)一至兩個功能模塊。
在整個案例的實現(xiàn)過程中,對于比較簡單的功能模塊,教師根據(jù)學生對知識點的掌握情況,實時地找不同的學生到教師機上進行簡短的編程,或利用他的思路,讓其他學生一起編碼或思考。這樣,教師一邊引導教師機前的學生完成編程任務,一邊在教室中監(jiān)督其他學生動手實踐并靈活答疑。對于比較難的功能模塊,教師先將函數(shù)實現(xiàn)的流程圖給學生,然后具體講解并按照實際編程步驟,舉例帶領(lǐng)學生一起做同步訓練。這樣,教師能夠在把握重點的同時控制進度,讓學生保持連貫而清晰的學習思路。為了達到更好的效果,我們往往在實踐中將學生搭配分組,每組5~6名學生,民主選取一個編程能力比較強的同學為小組長,在老師講解流程后,由小組長按照組員實際掌握的程度協(xié)調(diào)其成員完成整個案例,并向教師反映小組成員的完成情況,及時進行評分記錄。實踐課結(jié)束提交所有的案例代碼及實驗報告。教師根據(jù)小組長對組員的反映情況及每位同學代碼的完成程度給予適當?shù)姆謹?shù),與最后的期末考試成績按照一定的比例進行折算,最終得出既可以體現(xiàn)學生對理論知識的掌握情況,又可體現(xiàn)學生動手編程能力的期末綜合成績。
3“案例驅(qū)動”教學法實施效果分析
按照以上的實施步驟,“案例驅(qū)動”教學法取得了良好的教學效果,學生獲取理論知識的能力得到了提高,實踐技能也普遍增強。以采取“案例驅(qū)動”教學方式后的近兩學期的期末考核情況為例,其成績分布如圖2所示。
4結(jié)束語
當今信息社會計算機的應用非常廣泛,各行各業(yè)需要不同層次的計算機專業(yè)人才。在進行計算機教育中,應依據(jù)培養(yǎng)目標提出不同的教學要求。對于每一個學習計算機知識特別是“C語言程序設(shè)計”的學生,都有一個由淺入深、逐步提高的過程。教師在這個過程中必須激發(fā)學生的興趣,更新教學理念,充分利用、整合各種教學資源,注重教學方法的探索,真正使“C語言”這門課程成為學生學習其他計算機知識的基石。本文針對當前應用型本科院校的教學特點,從教學實踐出發(fā),闡述了“案例驅(qū)動”教學法的應用,供大家探討,實踐證明,教學效果顯著。同時,我們還會在今后的教學過程中不斷改進,以求不斷進步。
參考文獻:
[1] 張仿,盧繼勇.“啟發(fā)式”教學方法與C語言教學[J]. 重慶郵電學院學報:社會科學版,2004(S1):50-60.
[2] 高秀娥. C語言教學方法探討[J]. 中國教育學雜志:高等教育版,2006(12):146.
[3] 張建珍. C語言教學方法探究[J]. 計算機教育,2007(9):12-13.
[4] 郭芹. 對高職高專計算機專業(yè)程序設(shè)計教學的思考[J]. 中國科技信息,2008(1).
[5] 陳龍猛,王保桂,李吉忠,等. 大案例教學法在Visual Basic程序設(shè)計教學中的探究[J]. 計算機教育,2008(5):59-62.
Research and Practice on the “Case-Driven” in C Programming Language Course
Chang Mei1, Li Ying-qiu1, Li Yong2
(1.Neusoft Institute of Information, Dalian 116023, China; 2.Binzhou University,Binzhou 256600, China)
篇10
關(guān)鍵詞:C#;案例;驅(qū)動;實踐;項目
中圖分類號:F49
文獻標識碼:A
文章編號:1672-3198(2013)24-0162-01
0 引言
案例驅(qū)動教學法是通過分析案例程序引導學生學習,以任務驅(qū)動調(diào)動學生學習主動性的教學方法。“C#程序設(shè)計”是計算機信息管理專業(yè)、軟件技術(shù)、計算機應用等相關(guān)專業(yè)的一門專業(yè)必修課,具有極強的實踐性和很強的工程性。在此課程的教學改革實踐中,筆者采取了以項目為導向的教學模式,突出了對學生實踐動手能力及綜合素質(zhì)的培養(yǎng),為最終實現(xiàn)學生的零距離上崗奠定了基礎(chǔ),取得了良好的教學效果。
1 教學內(nèi)容設(shè)計
筆者根據(jù)多年的教學經(jīng)驗,本著“實用為主,深入淺出”的思想,將教學內(nèi)容進行整合,使學生在邊做邊練的過程中,輕松掌握所學知識點。教學案例的選擇既要有一定的代表性和實用性,又要有趣味性。這樣才能吸引學生。案例規(guī)模大小要適中,要盡可能多地涵蓋主要知識點,還要求必須在規(guī)定學時內(nèi)完成。現(xiàn)將教學中的案例舉例如下:
典型案例一:四則運算訓練器。在講運算符這個知識點時,筆者設(shè)計了一個四則運算訓練器,通過這個案例,學生學會了“加、減、乘、除”的使用方法,還學會了單選按鈕、復選按鈕等控件的使用。該案例效果如圖1所示。
典型案例二:交通燈。在講計時器和圖片框控件的時候,筆者設(shè)計了一個十字路通燈的案例。這個案例一經(jīng)展示出來之后,學生就非常感興趣,覺得自己學的知識真的是學有所用了。
典型案例三:購物車。在這個淘寶網(wǎng)上購物盛行的時代,設(shè)計一個購物車,再實用不過了。學生對這個案例興趣十足,教學效果非常好。
典型案例四:射擊小鳥游戲。設(shè)計一個小游戲案例,寓教于樂。讓學生也變成一個軟件開發(fā)者,增長學生信心,調(diào)動學習積極性。
以上是筆者在教學過程中的案例,在設(shè)計案例的時候,并不一定按照教材上知識點的先后順序,而是打破章節(jié),根據(jù)需要綜合相應知識點,使得知識點融合在案例中。讓學生在做的過程中,不知不覺就把相應知識點掌握了,從而起到事半功倍的效果。
2 教學方法設(shè)計
2.1 “實踐導向型”的案例教學
這種案例教學的目的是將所學知識與應用結(jié)合起來,注重學生技能培養(yǎng),培養(yǎng)學生主動探求知識的學習習慣。該種方法的實施過程如下:教師將問題進行描述,展示案例運行效果,接下來進行案例功能分解,對該案例涉及的知識點進行教學,講解功能實現(xiàn)代碼,最后分析總結(jié)。通過這種教學方法,使得學生在學習過程中注意力集中,學習積極性大大提高,獲取知識比較快。
2.2 “實踐導向型”的討論/辯論式教學
這種方法的教學目的是提高學習主動性,通過交流更快地學習技能,提高學生團隊協(xié)作精神。實施過程如下:首先是教師發(fā)掘主題,接下來分組發(fā)動,展開討論現(xiàn)場展示,最后學生總結(jié),教師進行點評。通過這種教學方法,使得學生廣泛參與學習,學生學習主動性強。
2.3 “實踐導向型”的項目教學(角色扮演)
在教學過程中模擬企業(yè)環(huán)境,培養(yǎng)學生崗位技能。該種方法的實施過程如下:首先是教師進行角色扮演,模擬客戶代表,提出項目需求,再模擬項目經(jīng)理,進行需求分析,總體設(shè)計;接下來學生根據(jù)需求分析,進行項目分組,進行模塊設(shè)計,包括代碼編寫,項目測試與調(diào)試等環(huán)節(jié),最后學生進行項目展示,教師進行項目驗收與評價。通過這種教學方法,使得學生能夠更好的熟悉崗位要求,掌握崗位技能。學生在這個學習的過程中,了解了做項目的整個流程,從而可以舉一反三,對以后的畢業(yè)設(shè)計和工作中都有很大的幫助。
3 教學效果分析
從傳統(tǒng)的教學方式來看,教師在課堂上按照書本上的順序講解知識點,理論知識都講完之后,學生上機實踐。教師在講理論知識的時候,學生根本就不知道老師在講什么,也不知道學了這些知識之后能有什么用,所以學生很茫然,這樣就很容易產(chǎn)生厭學情緒,上課就會睡覺,或者開小差。從而導致學生對理論知識的理解模糊,開發(fā)項目的技能掌握也不夠熟練。嚴重缺乏學習的主動性,大部分學生的學習是被動的,是被家長和老師逼著才會去學習。當教師講授完知識后,學生只能死板的接受老師講的知識點,并不會舉一反三,也不會把知識靈活的應用到實際生活中。導致學生對專業(yè)知識學習積極性越來越差。自從實施了案例驅(qū)動的教學方法之后,上課效果明顯好轉(zhuǎn),以前不愛學習的學生也開始認真的做練習了,很多學生還很會創(chuàng)新,在老師提出的案例實現(xiàn)要求的基礎(chǔ)上,還會將功能做得更加完善。以前是老師逼著學生學,現(xiàn)在是學生自己主動要求學,學生會希望老師快點講,多講些知識,這樣他們就可以做出更好的作品了。完全由原來的“要我學”轉(zhuǎn)變?yōu)椤拔乙獙W”的模式了。整個課堂涌現(xiàn)出一種積極向上的學習氛圍。尤其是每當學生案例做成功之后,那種難以掩飾的成就感。
4 結(jié)束語
案例驅(qū)動的教學模式自從2009年在我校計算機信息管理專業(yè)中開始探索實施,在實施過程中不斷驗證修改,如今已經(jīng)形成了一套較為完善的教學體系。近幾年的實踐證明,這種教學模式還是行之有效的,學生學習的積極性、主動性有了大幅度的提高,學生的參與熱情、課程設(shè)計質(zhì)量、競賽成績、畢業(yè)生畢業(yè)設(shè)計質(zhì)量都有很大的進步,達到了培養(yǎng)學生自學能力、實踐動手能力、創(chuàng)新意識和團隊協(xié)作的能力目標。因此,此教學方法對高職院校的計算機相關(guān)專業(yè)具有一定的參考價值。
參考文獻
[1]馬麗,趙偉艇.行動導向教學法在高職C}}程序設(shè)計中的應用[J].計算機教育,2010,(3).
[3]席平,楊洋,王春潔.機械糞課程實驗教學改革與實踐[J].實驗技術(shù)與管理,2010,27(7):14-18.