驅動程序設計范文
時間:2023-04-08 16:29:44
導語:如何才能寫好一篇驅動程序設計,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。
篇1
關鍵詞:wince 驅動程序;開發;設計
1 引言
WINCE和Windows 98或Windows 2000不同,它可以工作在12種不同的處理器體系結構、180余種CPU上;同時,WINCE是一個實時操作系統(實時系統的意義就是輸入的指令不必進入隊列就可以馬上處理,過去我們使用的DDS就是實時系統),可以滿足應用程序所需要的實時性要求。
Windows CE的模塊化設計使得它能夠在大量的平臺上定制使用,從客戶電子設備到專用的工業控制器。由于它是模塊化的,因而我們可以使用滿足平臺系統需求的最小軟件模塊和組件集合來設計嵌入式系統平臺,從而使內存用量最小,但最大可能地提高操作系統的性能。因此外圍擴展設備就必須要有硬件驅動才能正常工作。
和其它的操作系統一樣,Windows CE也提供設備驅動軟件,這些軟件的目的是驅動內部和外圍的硬件設備,或為它們提供接口。設備驅動程序將操作系統和設備鏈接起來,使得操作系統能夠識別設備或者為應用程序提供設備服務。
Windows CE支持廣泛的基于各種CE平臺的設備驅動程序。也提供一些用于驅動程序開發的模型(model) ,其中包括來自其它操作系統的驅動程序模型(model),因為這些豐富多變的驅動程序模型, Windows CE適應大部分的內部和外圍設備口Microsoft Windows CE設備驅動程序工具包配備了文檔資料,這些文檔資料使得你能夠為Windows CE創建設備驅動程序。目前,Windows CE提供了四種設備模型,其中兩種是專用于Windows CE的模型,另外兩種外部模型來自其它操作系統。
2 驅動程序開發簡介
2.1 開發工具
Windows CE驅動可以使用Platform Builder或者Visual Studio開發,但是開發人員一般都使用Platform Builder開發設備驅動程序,對于部分驅動也會使用Visual Studio開發,應用程序開發人員更多的使用Visual Studio開發驅驅動程序。作為BSP(Board Support Package)的一部分進行整體編譯開發。
2.2 驅動分類
2.2.1 按加載方式和接口類型分類
1) 本機驅動程序(Built-In Drivers)
通常由GWES加載,驅動接口一般都是定制的(Custom Purpose)。
2) 流驅動程序(Stream Drivers)
通常由Device Manager加載,驅動接口是標準的流式接口。
3) 混和型驅動程序
同時有定制式和流驅動兩套驅動接口,但是和系統交互只使用流式驅動接口,比如PC卡槽驅動。
2.2.2 按驅動層次分類
1) 層次型驅動程序(Layered Driver)
> MDD(Model Device Driver),與硬件無關,面向上層應用程序,一般由微軟建立統一框架;
> PDD(Platform Dependent Driver),針對具體硬件平臺的操作代碼,一般由驅動開發商實現MDD和PDD之間通過標準的設備驅動服務供應商接口DDSI連接。
2) 獨立型驅動程序(Monolithic Driver)
> 獨立驅動程序包含了MDD面向上層應用和PDD面向硬件平臺兩方面的代碼;
> 適用于操作不復雜的驅動;
> 減少了MDD和PDD傳遞之間傳遞信息的開銷,實時性更強;
3 流驅動程序的實現
流驅動程序必須實現一套標準接口,流驅動程序適用于IO操作,這也是嵌入式系統中最常見的設備驅動,操作接口和文件系統操作相似,通過CreateFile,ReadFile,WriteFile,IOControl函數等來操作應用程序和流驅動交互,可以把設備當作文件操作。
3.1 文件前綴名確定
根據文件前綴名在系統中必須唯一這一特點,在定義文件前綴名必須是三個字母,若有多個同類設備,由后綴一個阿拉伯數字區分,例如COM1,LPT3等等。文件前綴名將會在驅動的標準接口函數中體現,比如XXX_Init,XXX_Close等。
3.2 通用函數
根據設備的不同,所需函數不同,通用函數如下所示:
1) XXX_Init:通知設備管理器為設備初始化分配資源;
2) XXX_Deinit:通知設備管理器回收設備初始化時分配的資源;
3) XXX_Open:打開設備。應用程序調用CreateFile時,通過文件系統映射為XXX_Open;
4) XXX_Close:關閉設備。應用程序調用CloseFile時,通過文件系統映射為XXX_Close;
5) XXX_PowerUp:設備上電時,操作系統調用該函數完成必要的上電操作;
6) XXX_PowerDown:設備掉電時,操作系統調用該函數完成必要的關機操作
7) XXX_Read:從打開的設備文件中讀取數據,可以通過ReadFile映射;
8) XXX_Write:向打開的設備文件寫數據,可以通過WriteFile映射;
9) XXX_Seek:文件定位,根據設備情況決定是否支持;
10) XXX_IOControl:IO操作擴展,可以根據設備情況來決定支持何種特殊的操作模式。
3.3 DEF文件建立
流驅動一般以DLL形式存在,DEF文件定義了DLL需要導出的接口集,因此DEF文件的名稱與設備驅動名稱相同。
3.4 寫注冊表
在wince中任何設備的識別都是通過注冊表來實現的,因此必須在注冊表中添加具體的設備驅動項,以便系統識別。具體方法如下:
在注冊表中增加驅動程序入口點,找到注冊表項,注冊項位于注冊表的Root Key下,一般為[HKEY_LOCAL_MACHINEDriversBuiltInSampleDrv],建立必要的子鍵和鍵值,“Prefix”和“DLL”是兩個重要,而且是必須的鍵,分別描述了設備前綴名和驅動程序的動態連接庫名,然后根據具體設備的需要建立驅動程序需要的其子他鍵。
4 調試驅動程序
驅動程序編寫完畢后,就應該進行硬件的調試。具體方法如下:
4.1 調試區信息(Debug Zone)
調試區一般和WinCE的控制臺調試工具Cesh.exe配合調試,在不打斷OS運行情況下,進行驅動的實時調試,利用宏開關,可以選擇需要輸出的調試區信息,可以得到進程,線程和調試狀態信息。并且可以利用IDE環境,動態選擇開關調試區信息,但是打印驅動程序輸出調試信。必須借助于至少一種外設顯示調試信息,比如串口或者網卡或者其他通過調用RETAILMSG或者DEBUGMSG完成,不影響OS的運行,保證驅動程序運行的真實性,動態輸出設備的狀態信息,調試相對簡單,也是最廣泛使用的一種調試方法。
4.2 核心調試工具(Kernel Debugger)
核心調試工具將會禁止所有硬件中斷,掛起操作系統,因此可以單步調試OS或者核心代碼,可以訪問堆棧信息,但是必須在Platform的環境下,利用至少一種外設進行通信。
4.3 硬件輔助調試方法
利用硬件調試工具可以觀察物理設備的真實狀態,一般常用的方法可以利用JTAG工具實時查看CPU內部寄存器,利用邏輯分析儀或者示波器實時查看物理外設的輸入輸出狀態。利用指示LED來顯示驅動程序實時狀態信息。
4.4 Visual Studio調試
可以利用VS內置的調試工具進行單步跟蹤,狀態調試等。
5 測試驅動程序
驅動程序經過調試以后就需要對驅動的功能進行測試。其常用的方法如下:
1) 寫一個應用程序來測試驅動程序的正確性
2) 模擬各種可能發生的硬件輸入狀態來測試驅動程序的正確性
3) 利用Windows CE自帶的測試工具CETK來測試驅動程序的性能和完備性
6 驅動程序的集合和
6.1 驅動程序集成
驅動程序經過調試和測試確定其正確性后,就可以對驅動程序進行集成了。具體過程如下:
1) 在BSP的Driver目錄下建立新的驅動文件夾MyDrv
2) 實現MyDrv驅動以及相關的DEF文件
3) 如果需要用到硬件中斷資源,修改原BSP中的相關中斷處理函數OEMInterruptEnable,OEMInterruptDisable,OEMInterruptDone,OEMInterruptHandler
4) 在Platform.reg中,增加驅動程序相關項
5) 在Platform.bib中,增加驅動程序的相關注冊表項MyDrv.Dll$(_FLATRELEASEDIR)MyDrv.dll NK SH
6.2 驅動程序
驅動程序進過集成以后就可以使用了,具體的過程如下所示:
1) 利用CAB Wizard生成.cab驅動包
2) 直接提供驅動程序文件夾以及相關注冊表項和修改說明
7 總結
本為詳細的介紹了,wince下驅動開發的流程,介紹了驅動程序開發到的詳細過程,并詳細說明了各個部分的實現和操作方法,使是初學者對wince下驅動程序的開發流程和一般的開發工具有了初步的了解。
篇2
關鍵詞:嵌入式操作系統;Win CE;SPI;驅動程序
中圖分類號: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 引 言
嵌入式是“以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適合應用系統對功能、可靠性、成本、體積、功耗嚴格要求的計算機系統”。Windows 是Microsoft推出的功能強大的緊湊、高效、可伸縮的32位嵌入式操作系統,主要面對各種各樣嵌入式系統的產品[1,2]。
該系統具有多線程、多任務、完全搶占式的特點,是為各種具有嚴格資源限制的硬件系統所設計的。為了將操作系統和硬件設備連接起來,硬件和軟件的驅動聯系就顯得很重要。SPI是一種高速、全雙工、同步的通信總線,在芯片的管腳上只占用4根線,節約了芯片的管腳,同時為PCB的布局節省了空間,提供了方便,正是出于這種簡單易用的特性,現在越來越多的芯片都集成了這種通信協議。SPI的工作模式有兩種:主模式和從模式,SPI總線可以配置成單主單從、單主多從、互為主從。為了充分利用芯片的SPI接口進行相應的驅動程序設計以及應用程序設計,通用方法的研究就顯得十分重要。
1 Win CE提供的驅動模型
Win CE操作系統支持兩種類型的驅動程序,一種為本地驅動程序,是把設備驅動程序作為獨立的任務實現的,直接在頂層任務中實現硬件操作,因此有明確和專一的目的。本地驅動程序適合于那些集成到Win CE平臺的設備,諸如鍵盤、觸摸屏等設備。另一種是具有定制接口的流接口驅動程序,它是一般類型的設備驅動程序,為用戶一級的動態鏈接庫(DLL)文件,用來實現一組固定的函數稱為“流接口函數”,這些流接口函數使得應用程序可以通過文件系統訪問這些驅動程序。這里論述的SPI驅動就屬于流接口驅動。
2 SPI驅動程序的設計
2.1 EP9315芯片及SPI接口簡介
EP9315是一款基于ARM920T,由Cirrus Logic公司生產的工業級芯片[3,4] ,內帶MMU,16 KB的指令Cache,16 KB的數據Cache和數學協處理器,主頻為200 MHz,系統總線為100 MHz。該芯片擁有一組SPI接口,利用它可方便實現與SPI器件進行通信,可大大簡化工程應用的硬件設計軟件。
SPI驅動程序采用Win CE流驅動的標準形式。下面從驅動程序具體設計步驟以及驅動代碼的編寫兩個方面做較為詳細的闡述。
2.2 SPI驅動程序設計步驟
在Platform Builder 4.2下設計Win CE流接口驅動程序可按照以下步驟進行[5-7]:
(1) 在C:\\Win CE420\\PLATFORM\\ep931x\\drivers目錄下新建一個目錄SPI;
(2) 從其他驅動目錄下復制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內核映射時自動將SPI.dll加入到內核映像中,添加內容如下:
SPI.dll MYM(_FLATRELEASEDIR)\ SPI.dll NK SH
(6)具體的流接口驅動程序跟注冊表密不可分,在Platform Builder 4.2中打開platform.reg文件,在該文件最后加入如下所示注冊表信息,以使在生成操作系統映像時,Platform Builder將注冊表信息加入到注冊表中。在Platform.reg中添加內容如下:
[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\SPI]
"Prefix"=" SPI "
"Dll"=" SPI.dll"
"FriendlyName"=" SPI Driver"
"Index"=dword:1
"Order"=dword:0
篇3
關鍵詞:VxWorks操作系統;串口驅動程序;共享中斷
中圖分類號: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操作系統是美國Wind River公司開發的一種嵌入式實時操作系統,由于其高可靠性、強實時性以及可裁減性,廣泛應用于航空航天、軍事、民用通信和工業控制等領域。
在某大型控制系統中,我們需要開發一個具有4路串口通訊、1路CAN通訊以及2路以太網通訊的多種通訊方式并存的通訊設備。考慮到通訊能力以及通訊的實時性要求,CPU選用盛博公司PC104+總線的Pentium III處理器,串口選用具有PC104總線接口的4路串口擴展板,采用VxWorks操作系統來實現以上需求。由于每種通訊方式都采用中斷方式觸發,而系統硬件提供的中斷源是有限的,針對這種情況,為了節省系統的中斷資源,本文設計了一個基于VxWorks的多串口共享中斷的驅動程序,并對該驅動程序的功能進行了長時間測試驗證。
1 串行設備驅動的結構
在VxWorks操作系統中,串行設備作為一種特殊的字符型設備,操作系統為其提供一個簡單、統一、獨立于設備的接口,在應用層對于串行設備的任何操作都可以視為對一個文件的操作,而具體的實現是通過串行設備的驅動程序來完成。
在VxWorks中串行設備驅動采用3層抽象的軟件結構,即I/O系統、虛擬設備ttyLib或tyLib以及硬件驅動,其結構示意圖如圖1所示。在VxWorks中,I/O系統并不直接與具體的硬件驅動進行交互,而是將驅動程序中與硬件無關的部分放在虛擬設備ttyLib中實現,再利用虛擬設備ttyLib與I/O系統進行通訊,使得I/O系統獨立于具體的硬件驅動,而驅動程序的開發者只需要實現系統所提供的接口并且將其掛載到虛擬設備ttyLib就能完成具體串行設備驅動的設計,從而保證驅動代碼的可復用性和接口的統一性。
2 串行設備驅動的實現
VxWorks在啟動過程中對串行設備驅動的實現主要包括兩部分:串口的初始化和串行設備的創建。串口的初始化主要包括初始化串口設備,分配串口所需的資源以及完成串口中斷程序的系統掛接;串行設備的創建包括tty驅動的初始化和對tty設備的創建,即建立起I/O系統與硬件驅動層的聯系。
2.1 串口的初始化
sysInit()作為VxWorks操作系統啟動的入口程序會調用第一個C程序函數usrInit(),完成用戶定義系統的初始化工作,而串口的硬件初始化是在usrInit()函數的子函數sysHwInit()中完成。對于VxWorks現有的Intel8250驅動(Tornado目錄/target/src/drv/sio/i8250Sio.c),sysHwInit()還會調用sysSerial.c文件下的sysSerialHwInit(),sysSerialHwInit()函數主要對串行設備的設備描述符進行初始化,在初始化過程中還會調用底層的i8250HrdInit()對串行設備的端口進行初始化。在完成系統硬件和VxWorks內核的初始化以后,系統會啟動一個函數名為usrRoot()的任務,usrRoot()作為VxWorks操作系統的根任務調用sysClkConnect()對系統時鐘中斷進行配置,而具體的工作是由sysClkConnect()的子函數sysHwInit2()完成,其中sysHwInit2()會調用sysSerialHwInit2()來完成串行設備的中斷掛接。
2.2 串行設備的創建
在usrRoot()中通過調用ttyDrv()完成tty驅動的初始化,而ttyDrv()則調用iosDrvInstall()將tty驅動添加到系統的驅動程序列表中,并且完成與I/O系統層的各系統操作函數的連接。tty虛擬設備層與底層硬件驅動的連接則是通過ttyDevCreate()來完成,并實現各個串行設備的創建。
3 多串口共享中斷的驅動程序開發
串口擴展板選用的是盛博的A3-CSD板卡,采用PC104總線接口,集成了4路16C554兼容的光電隔離異步串行口,每個串行口能獨立控制發送與接受,且具有16字節FIFO以減少中斷請求次數,此外該擴展板還具有一個串口中斷狀態指示寄存器,可以指示產生中斷的串口。根據上述硬件配置,可以在現有Intel8250驅動的基礎上進行改進來完成多串口共享中斷的驅動程序設計。
3.1 串口設備的初始化
每個串口設備都需要有一個的描述自身屬性的結構體I8250_CHAN_EX,即設備描述符,且結構體的第一個成員必須為指向SIO_DRV_FUNCS結構的指針,該結構體還包含描述16C554芯片各個端口的信息以及提供給高層協議的回調函數。在系統啟動過程中通過調用sysSerialHwInitEx()完成對該結構體的初始化并且將自定義的全局指針數組pi8250ChanEx[4]中各元素分別指向4個串口的I8250_CHAN_EX結構體,初始化過程中會調用i8250HrdInitEx()將串口驅動程序的設備操作入口函數安裝到SIO_DRV_FUNCS結構中,然后調用sysSerialHwInitEx2()完成串口中斷的系統連接。其中sysSerialHwInitEx2()的實現代碼為:
void sysSerialHwInitEx2 (void)
{
int i;
for (i = 0; i < N_UART_CHANNELS_EX; i++)
if (i8250ChanEx[i].int_vec)
{/*將四個串口設備的中斷服務程序i8250ShareIntEx ()連接到同一中斷*/
(void) intConnect (INUM_TO_IVEC (i8250ChanEx[i].int_vec),
i8250ShareIntEx, (int)&i8250ChanEx[i] );
if (sysBp)
sysIntEnablePIC (devParasEx[i].intLevel);/*中斷使能*/
}}
其中,宏N_UART_CHANNELS_EX表示串口設備的個數,i8250ChanEx結構的成員變量int_vec表示該串口的系統中斷號,這里每個i8250ChanEx結構的int_vec項值都是相同的。
3.2 串口驅動程序的入口點函數編寫
編寫串口設備驅動程序需要完成串口設備的入口點函數,這些函數包括控制命令函數i8250IoctlEx(),啟動發送循環函數i8250StartupEx(),輪詢方式輸入函數i8250PRxCharEx(),輪詢方式輸出函數i8250PTxCharEx(),回調安裝函數i8250CallbackInstallEx(),單串口中斷服務函數i8250IntEx(),多串口共享中斷服務函數i8250ShareIntEx()等函數。這里只列出多串口共享中斷服務函數i8250ShareIntEx(),其余函數可以參考i8250Sio.c文件的各相應函數。
void i8250ShareIntEx (I8250_CHAN_EX*pChan)
{
FASTintoldlevel;
oldlevel = intLock(); /*關閉系統中斷*/
IntStatus = sysInByte(UART_INT_STATUS); /*讀串口中斷狀態指示寄存器* /
while(( IntStatus & 0x0F) != 0x00 )/*判斷是否有串口中斷產生*/
{
if (IntStatus & COM0_ INT _FLAG)
i8250IntEx(pi8250ChanEx[0]);/*串口1產生了中斷*/
……………
if (IntStatus & COM3_ INT _FLAG)
i8250IntEx(pi8250ChanEx[3]);/*串口4產生了中斷*/
}
intUnlock(oldlevel); /*開啟系統中斷*/
}
其中,全局變量pi8250ChanEx為I8250_CHAN_EX結構的指針數組,分別指向4個串口設備所對應的I8250_CHAN_EX結構,宏UART_INT_STATUS表示串口中斷狀態指示寄存器地址。
在進入i8250ShareIntEx()后首先關閉系統中斷,通過查詢串口中斷狀態指示寄存器來判斷產生中斷的串口設備,然后將產生此中斷的串口描述符結構體,即pi8250ChanEx[4]中對應的元素,作為參數傳遞給單串口中斷服務函數i8250IntEx(),最后重新開啟系統中斷。
3.3 以模塊加載串口驅動程序
在config.h中加入#undef INCLUDE_TTY_DEV,執行下面的代碼后生成一個o格式的串口驅動的庫文件8250SioEx.o,然后在應用程序中利用loadModule()將8250SioEx.o動態加載到內存中運行。
sysSerialHwInitEx();/*初始化串口設備*/
sysSerialHwInitEx2(); /*串口中斷的系統掛接*/
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); /*創建tty設備*/
}
}
其中sysSerialChanExGet()返回一個描述串口設備的I8250_CHAN_EX結構體。
4 結束語
本文詳細分析了串行設備驅動程序的結構以及在VxWorks啟動過程中串行設備驅動程序的加載過程,設計了一個多串口共享中斷的驅動程序,利用該驅動程序對4個串口同時進行了連續10小時的數據收發測試,4個串口都能穩定地發送和接收數據。此外,在測試過程中發現在進入多串口共享中斷服務函數后需要將系統中斷關閉,待執行完中斷處理后再開啟系統中斷,否則會引起串口工作的不穩定。
參考文獻:
[1] 周啟平.VxWorks下設備驅動程序及BSP開發指南[M].北京:中國電力出版社,2004.
[2] 陳智育,溫彥軍,陳琪.VxWorks程序開發實踐[M].北京:人民郵電出版社,2004.
[3] VxWorks programmer’s guide version 2.0[Z].Wind River System Inc,1999.
[4] TL16C550 asynchronous communications element[Z].1998.
篇4
[關鍵詞]USB ECP Driver Studio 設備驅動程序
[中圖分類號]TP[文獻標識碼]A[文章編號]1007-9416(2010)02-0029-02
1 引言
由于現在大多數計算機沒有并行口而具有多個USB接口,因此很多并行口設備無法和計算機直接連接使用。利用基于單片機STC11F32XE的USB 轉 ECP 模式并行口可以連接其他ECP模式并口設備,以達到讓具有ECP接口的設備可以和沒有并口的PC進行數據通信的目的。并口采用的是IEEE 1284-A接口, USB 接口驅動芯片采用Philips 半導體公司的PDIUSBD12,該芯片的數據端口D0-D7接單片機的P0 口,引腳WR_N、RD_N、及A0 分別接單片機的P3.6、P3.7、P3.5 引腳。整個硬件電路圖如圖 1 所示。當 USB 設備硬件設計完成之后,接著就必須根據硬件特點和需要完成的功能,設計出合乎產品的USB驅動程序,否則,設備將無法被PC機識別,不能正常使用。
2 WDM型的USB驅動程序結構
USB設備的驅動程序是一種典型的WDM驅動程序。WDM驅動程序是分層的。對于USB設備驅動程序來說,其驅動程序包括兩個層次:設備(功能)驅動程序層和總線(底層)驅動程序層。USB底層驅動程序由操作系統提供,不要開發者自己編寫,它位于USB功能驅動程序的下面,負責與實際的USB硬件打交道,實現復雜而繁瑣的底層通信;USB功能驅動程序必須要由開發者編寫,它不與實際的USB硬件打交道,是把包含URB(USB Request Block,USB 請求塊)的IRP發送到USB底層驅動程序,來實現對USB設備信息的發送和接收。(圖2) 給出了USB 驅動程序的結構模型。
3 USB驅動開發編程環境的建立
開發一個WMD 驅動程序,必須要搭建合適的開發環境以此來減小開發難度。對于WDM 驅動的開發,一般必須使用的軟件是VC++6.0和DDk (Driver Development Kit,驅動程序開發工具包)。但為了進一步降低開發難度,選擇使用了第三方驅動開發工具--Driver Studio。它以類的方式對DDK 進行封裝,可以十分容易地利用它提供的向導來產生一個必需的驅動程序框架。
一般首先安裝VC++6.0,接著安裝DDK,如果需要的話,還可以安裝Windows SDK 來輔助開發,最后安裝Driver Studio 3.2。因為Driver Studio的類庫要使用DDK庫函數,所以在安裝好Driver Studio 之后必須首先要編譯出一個庫文件,否則會提示找不到庫文件vdw_wdm.lib 等錯誤。編譯該庫文件的步驟如下:啟動VC++6.0,找到并打開Driver Studio3.2 安裝目錄下的vdwLibs.dsw工程文件,然后選擇DriverStudio->DDK Build Settings,在彈出的對話框中設置DDK的安裝路徑和運行的操作系統。然后選擇菜單Build->Batch Build,要根據驅動運行的平臺來選擇對應的工程文件,這里選擇了x86對應的工程,正確選擇之后,單擊Rebuild All 按鈕,開始編譯庫文件。這個類庫只需編譯一次,以后開發其他的驅動就不必再次編譯了。
4 USB驅動創建方法及步驟
該驅動程序的主要功能包括:端點0采用控制傳輸,可以保證傳輸過程中的數據的完整性和正確性,主要負責USB枚舉過程中的數據的讀寫。另外,又增加了端點1和端點2。端點1采用中斷傳輸,這種傳輸主要用在數據量不大,但對時間要求較嚴格的設備中。因此,模塊滿足了實時性的特點;端點2采用批量傳輸,該種傳輸通常用在數據量大、對數據的實時性要求不高的場合中,利用該方式可以完成大量數據的快速傳輸,可以與高速的ECP并行口相匹配,因此,模塊滿足了高速數據傳輸的要求。
單擊VC菜單欄下的DriverStudio菜單項,選擇Driver Wizard菜單,會出現一個驅動向導對話框。單擊Start a new Driver Project 將創建一個新的驅動工程。然后按照向導生成該驅動程序的框架。具體步驟如下:①設置工程名和路徑。在彈出的對話框中,設置工程名為UsbToECP、路徑為D:\。②選擇驅動工程的類型。在對話框中選擇 WDM Driver,驅動框架選擇DriverWorks C++ Framework。③選擇WDM驅動類型。在彈出的對話框中選擇 WDM Function Driver。④選擇驅動總線的類型。在對話框中選擇為 USB 總線,然后在分別設定USB Vendor ID 和USB Product ID。 ⑤設置USB 的端點資源。單擊Add增加端點。這里增加 4 個端點,Pipe Name 分別是Ep1_In、Ep1_Out、Ep2_In和Ep2_Out。其中Ep1_In和Ep1_Out選擇中斷傳輸,端點地址均為1,傳輸方向分別為輸入和輸出,最大包長為8字節,最大傳輸大小為 4096字節。Ep2_In和Ep2_Out選擇批量傳輸,端點地址均為2,傳輸方向分別為輸入和輸出,最大包長為64字節,最大傳輸大小為 40960字節。⑥選擇需要處理請求類型。這里選擇IRP_MJ_DEVICE_CONTROL、IRP_MJ_READ和IRP_MJ_WRITE。它們分別與API函數 DeviceIoControl、ReadFile和WriteFile一一對應。⑦設備I/O操作方式。配置IRP_MJ_READ和IRP_MJ_WRITE的緩沖方式分別為Buffered。另外還需要增加4個IO Control 的控制代碼:EP1_READ、EP1_WRITE、EP2_READ、EP2_WRITE。打開方式選擇Interface。⑧添加注冊表項。可以根據自己需要增加,這里增加了一個設備名稱。⑨設置電源管理。選擇Device requires an inrush of power at startup,說明該設備啟動時需要大電流,這樣做的目的是防止相同的設備同時上電,減少對電源的沖擊。步驟10-13按默認配置即可。
5 驅動的編程
USB驅動程序的編程最主要的就是編寫端點1和端點2的數據處理函數,其中主要編寫的是UsbToECPDevice類成員函數Read()、Write()、及DeviceControl()中調用的4 個IoControl()函數。
Read()函數對應著WIN32 API的ReadFile函數,其參數通過KIrp I傳遞過來。因為端點1指定的緩沖方式為Buffered 方式,所以調用KIrp類的成員函數I.BufferedReadDest()來獲取保存數據的緩沖區地址,調用I.ReadSize()來獲取讀到的數據長度。如果獲取到的緩沖區地址為NULL,則說明參數無效,則以USB_STATUS_INVALID_PARAMETER來完成該IRP,然后返回USB_STATUS_INVALID_PARAMETER。若讀取的字節數是0,就直接完成該IRP,不需要進行數據處理。接著創建一個URB來完成數據的處理。因為端點1采用的是中斷傳輸,所以必須創建一個中斷傳輸的 URB并提交它,端點管道KUsbPipe類提供一個創建中斷傳輸URB的函數BuildInterruptTransfer。這樣底層的USB 總線驅動程序就會負責從端點 1 讀取數據,當完成數據的讀取后,提交相應URB的函數就會返回。當URB創建成功后,利用KUsbPipe類的成員函數SubmitUrb()來提交這個URB,否則返回資源不足的錯誤信息。SubmitUrb()函數返回后,可以用URB的成員變量TransferBufferLength來獲取實際讀到的字節數,最后刪除創建的URB。
本文為全文原貌 未安裝PDF瀏覽器用戶請先下載安裝 原版全文
Write()函數的處理方法與Read()函數的方法非常相似,不同之處在于利用KIrp類I的成員函數 BufferedWriteSource()和WriteSize()來分別獲取緩沖區的地址和傳輸的字節數。另外,函數EP1_READ_Handler()和EP1_WRITE_Handler()的實現與Read()和Write()函數基本是一樣的,略有不同。
端點2 的EP2_READ_Handler(KIrp I)和EP2_WRITE_Handler(KIrp I)與端點 1的EP1_READ_Handler(KIrp I)和EP1_WRITE_Handler(KIrp I)處理方式幾乎是一樣的,主要的不同是在創建URB時要用到創建批量傳輸URB 的函數BuildBulkTransfer(),其參數及意義與BuildInterruptTransfer()相同。
6 驅動的安裝
在對端點1和端點2編程完成之后,然后對其進行編譯,如果沒有錯誤,可以看到編譯報告中有一行“MODULE=.\objfre\i386\UsbToECP.sys”,這個就是所要的驅動文件,另外,在目錄下還產生一個inf文件,其也是安裝驅動時需要的一個重要的文件,它里面有一些重要的安裝信息,可以根據需要進行修改。一般主要是對inf的Stings 進行修改,表1給出了該驅動的Strings 段的幾個重要屬性的修改。
將該設備與PC機連接,系統會提示安裝驅動,首先指定驅動安裝所要使用的inf文件所在的位置,該inf文件可以在驅動工程目錄的driver目錄下找到,是由向導自動生成的。然后選擇安裝驅動所需要的UsbToECP.sys文件,該文件在D:\ UsbToECP\driver\objfre\i386下。正確安裝驅動之后,打開計算機的設備管理器,將會看到該USB設備。如下圖3所示。打開圖3中的Class for BinBinUsb devices下的BinBinUsb Device屬性,選擇相應標簽,將會看到如下圖4的驅動信息。
7 結語
USB設備驅動的開發是設備開發過程中必不可少的一項任務。通過研究利用VC++、DDK和Driver Studio對USB驅動程序的設計方法,成功地設計了基于單片機的USB轉并口設備的驅動程序。通過測試,使用該驅動的USB轉并口設備運行穩定,達到了預期的效果。這種USB驅動的設計方法簡化了開發難度,開發的驅動穩定可靠,必將受到USB設備開發者的廣泛關注,同時也給其他的基于WDM驅動的開發提供一個新途徑。
[參考文獻]
[1] 榮佳波,常明志,井科偉,楊少勇.USB 設備的WDM驅動程序設計[J].應用科技,2004,31(3);39-41.
篇5
[關鍵詞]數字電視機頂盒,驅動程序開發,軟件架構,Pipeline
中圖分類號:TN948 文獻標識碼:A 文章編號:1009-914X(2014)24-0098-01
1 背景和意義
在國際社會綜合環境的影響下和從中國自身發展的實際情況出發,中國正在逐步改變和調整經濟結構和產業結構,擴大內需,大力發展文化產業和電子信息產業。2010年1月13日,總理主持國務院常務會議決定加快推進電信網、廣播網、互聯網三網融合[1],并審議通過了推進三網融合總體方案。2010年至2012年為試點階段,以推進廣電和電信業務雙向階段性進入重點,2013年至2015年為推廣階段,國家將全面推進三網融合。
目前機頂盒軟件開發中遇到的普遍問題是軟件開發周期長。分析其原因,一部分是由于項目管理問題所致,本文對此因素不作討論;另外一個因素就是隨著機頂盒芯片所提供功能不斷向傳統PC靠攏,帶來的是平臺驅動軟件和上層應用軟件復雜
2 機頂盒軟件開發傳統架構
機頂盒軟件開發的傳統架構主要分為基本型,改進型和中間件。基本型主要是以芯片的功能模塊為單元,對上層軟件提供標準接口。而改進型則在基本型的基礎之上,在驅動層中集成部分復雜應用(如PVR),降低了上層軟件開發這些應用的難度。中間件則是為滿足機頂盒應用程序的高度可移植,其對應用程序而言徹底屏蔽不同平臺的差異。
2.1 基本型
在最初的標清機頂盒軟件開發中,由于其所提供的功能簡單,部分客戶會選擇在應用程序中直接調用芯片驅動程序的開發模式。
2.2 中間件
數字電視機頂盒中間件(middleware)[2]是指位于數字電視機頂盒芯片驅動程序與應用程序之間的軟件部分。中間件標準的應用極大地推動數字電視機頂盒市場的發展。目前,中間件廠商主要有茁壯、NDS、愛迪德、天柏、同洲等廠商。
2.3 存在問題分析
基于中間件架構來進行數字電視機頂盒軟件開發,是目前市場上比較通用的做法。由于應用程序基于中間件之上,因此其可移植。系統集成的主要工作轉變為如何移植中間件到芯片廠商的平臺驅動之上。在大量的項目實踐中發現在目前的軟件架構下仍然存在如下問題:
(1)系統集成方式:每個客戶都在做著重復類似的工作。以節目直播為例,每個客戶都要建立一套自己的播放流程,并建立如下設備的之間的相互關聯:Tuner,Tsrouter, Demux, ES buffer, Video Decoder, Video Img,Video Output。
(2)中間件可移植性:無法徹底屏蔽驅動API函數的改變。由于在客戶的中間件中直接調用芯片的驅動API函數,而這些API函數常常直接與硬件模塊緊密相關。雖然芯片廠商努力保持底層API函數不要改變,但是當芯片更新換代或升級的時候,這些驅動API函數常常不可避免的也隨之改變。于是,導致客戶的中間件也需要做出相應的變動,并進行重新驗證。
(3)驅動調用時序:無法引導客戶遵循芯片廠商期望的驅動API函數調用時序。中間件的基本操作通常難以一一對應的映射到芯片的驅動程序上,在大多數情況下,中間件定義的一個基本操作需要調用底層驅動的若干api函數才能完成。最重要的是,在這些底層api函數執行的時候,常常是有時序的要求。對于芯片廠商提供的驅動程序而言,原則上不應該對驅動API函數調用時序做任何的假設。
3 pipeline技術分析
隨著畫中畫,時移等新應用的不斷出現,通過直接調用芯片驅動程序的方式來移植機頂盒中間件的方式,正變得越來越復雜。迫切需要在芯片驅動程序之上,能存在一個高度抽象層,徹底屏蔽不同平臺的底層差異,簡化機頂盒資源的管理,降低設備廠商中間件集成的難度,減少在系統集成中遇到的問題,縮短機頂盒軟件開發周期。
關于pipeline技術,本文將分硬件設計中的Pipeline技術[3][4]和軟件設計中的Pipeline模式[5]進行描述。
3.1 硬件設計中的Pipeline技術
流水線(Pipeline)技術是目前廣泛應用于微處理芯片(CPU)中的一項關鍵技術。流水線設計就是將組合邏輯系統地分割,并在各個部分(分級)之間插入寄存器,并暫存中間數據的方法。目的是將一個大操作分解成若干的小操作,每一步小操作的時間較小,所以能提高頻率,各小操作能并行執行,所以能提高數據吞吐率(提高處理速度)。
3.2 軟件設計中的Pipeline模式
Pipeline設計模式的理念是使多個對象處理同一個請求,這些對象形成一條鏈。每個對象擁有下一個對象的引用,該對象可以進行預處理,交給下一個對象處理,然后把處理結果返回給下一對象。Pipeline像是流水線,每個對象負責一個動作,一起協作完成一件事情。
3.2.1 序列模式(sequence)
Pipeline設計的序列模式如圖4所示。在序列模式中,首先由Pipeline控制中心創建整個序列中的所有模塊并建立數據的流向關系, 然后把數據輸入傳遞給第一個模塊,啟動Pipeline開始工作。當第一個模塊完成指定功能后,根據模塊序列找到下一個模塊號, 并把處理過的數據傳遞給下一個模塊, 以此類推,直到最后一個模塊為止。
3.2.2 中心模式(center)
在中心模式中,每個模塊都從Pipeline控制中心接收數據輸入,然后把處理結果返回給Pipeline控制中心。由Pipeline控制中心決定調用下一個模塊,并把上一個模塊的輸出作為下一個模塊的輸入。 以此類推,直到最后一個模塊為止。
4 總結
機頂盒驅動軟件架構設計,是一項涉及正確性,健壯性,可重用性,靈活性和高效性的系統設計工作。本文采用了pipeline架構來完成機頂盒驅動設計,并將機頂盒驅動設計分為流水線管理(Pipeline Manager)設計,視頻輸出管理(Video Presentation Manager)設計和音頻輸出管理(Audio Presentation Manager)設計三大部分。研究了通過流水線來統一管理數字電視機頂盒系統資源,其簡化了機頂盒設備廠商系統集成的難度,減少了系統集成中所遇到的問題,縮短了數字電視機頂盒產品的軟件開發周期。
參考文獻
[1] 王大鵬,雒春雨,三網融合背景下機頂盒技術發展方向,2007國際有線電視技術研討會,2007.
篇6
摘要:模塊化就是把人才培養方案,專業,課程,課堂都看成模塊,世界萬物都是模塊,學生也是模塊,大模塊分成小模塊,小模塊做好了,大模塊也就做好了,《Java 程序設計》是職業學院軟件技術專業必修課,學習目前世界上優秀的編程語言, 對提高學生就業能力有重要意義。然而,由于 Java 語言具有較高的抽象性、復雜性和嚴謹性,學生普遍感到學習難度較大;加之受傳統教學模式的制約,學生往往感覺抽象、枯燥,學習興趣不高,接受程度有限。為改變這一現狀,我們將項目任務驅動法引入教學,對課程體系進行優化,對實訓內容進行重新設計,以此激發學生學習熱情、改善教學效果、提高教學效率,從而更好地滿足職業院校培養實用型技能人才的要求。
關鍵詞:Java程序設計;項目任務驅動;項目實訓 。
Java 語言作為一種純面向對象的程序設計語言, 是目前世界上優秀的編程語言之一, Java平臺以其移動性、安全性和開放性受到g迎,在企業中得到廣泛應用,尤其是近年來基于 Android 系統的Java 手機軟件發展十分迅速,在形成一個新興產業。Java 程序員的就業前景廣闊,可以從事 Java 桌面軟件開發、Java手機軟件開發、Jsp網站開發以及其他與 Java 語言編程相關的工作。 《Java 程序設計》作為我院軟件技術專業的專業必修課,力求使學生掌握 Java 面向對象程序設計能力,具備從事 Java 編程工作的基礎,提高軟件技術專業學生的就業能力。 對《Java 程序設計》教學進行深入改革、提高教學質量,有利于抓住當前 Java 技術廣泛應用,社會對 Java 程序設計人才需求量大的有利時機,提高軟件技術專業學生的就業率,提升軟件技術專業的影響力。
一、《Java 程序設計》課程的教學現狀
(一)課程地位和特點 計算機軟件技術專業的培養目標是:培養德、智、體全面發展的學生,能掌握計算機系統基礎知識和基本原理,熟悉計算機系統常用(軟硬件)工具,具有一定的硬件操作和較強的軟件開發能力。學生畢業后,既有大專層次的理論知識,又具有本專業較熟悉的實際操作技能適應在企事業單位計算機應用一線上直接參與管理或工作;適應在計算機軟件企業從事專業的軟件開發工作。 安排在第二學期,為培養學生“從 事軟件開發工作”而開設。教學目標是讓學生掌握 Java 面向對象程序設計能力,具備從事 Java 編程工作的基礎。前導課程是《C語言程序設計》,掌握基本的編程能力基礎;后續課程是《Java Web 開發技術》,學習實用的編程技術。 《Java 程序設計》是一門典型的程序設計類課程,由于程序設計本身具有的抽象性、 Java語言的復雜性和嚴謹性及傳統教學模式的影響,學生普遍感到學習難度大,學習興趣不高, 接受程度有限。
(二)難點和不足 由于程序設計工作本身具有的抽象性,對學生的邏輯思維能力要求較高;而 Java 語言的復雜性和嚴謹性,又使學生普遍感到 Java 語言學習難度大;加之傳統教學采用的“先講解后演示再練習”的方法,往往讓學生感覺到過于枯燥和抽象;而當前《Java 程序設計》的課程體系更使之難以適應高職院校培養高技能人才的要求,其主要問題有: 1. 課程體系設計不合理。當前《Java 程序設計》的授課模式以理論講授和演示為主,理論內容占主導地位,而實訓環節處于從屬地位。 由于當前的《Java 程序設計》高職課程體系很大程度上仍然是本科課程體系的簡化版,是從本科課程體系中刪除較難理論內容并增加實踐內容而形成的,并沒有完全擺脫本科模式的影響。然而,高職教育的培養目標是不同的。 高職教育更強調培養熟練的動手實踐能力。因此,高職課程和本科課程在課程體系的設計應該是完全不同的,不僅僅是理論與實踐的比例問題,而應該重新設計課程體系,使理論內容為實踐內容服務,才能真正實現以培養動手實踐能力為主導。 2. 實訓內容設計不合理。當前《Java 程序設計》的實訓內容大多屬于驗證性實訓,與真實開發項目存在很大差距,學生難以適應實戰項目實踐,對培養崗位職業能力的作用非常有限。課程現有實訓內容是根據理論內容設計的,是為了驗證理論內容而實踐,從而導致實訓內容強調緊扣理論內容,而忽略了真實的崗位情境,造成實訓情境過分理想化。這樣即使學生能掌握一些實踐技能,但是這些技能在真實的崗位情境中卻難以應用。因此,必須設計好實訓內容,突出 Java 語言的實用性、針對性,才能引導學生“在做中學”。 針對上述問題,我們引入項目任務驅動式教學法,對《Java 程序設計》課程教學進行改革。
二、《Java 程序設計》課程的項目任務驅動式教學改革
(一) 項目驅動是一種教學理論基礎上的教學法
在教學過程中,把具體的、學生感興趣的、有意義的具體任務作為線索,將知識點巧妙地隱含在每個任務之中;學生在預定情境下,經過思考并借助教師的引導解決問題,通過自主建構的方式獲得知識、 培養職業能力。 與傳統教學 “教師講、學生聽”,教師處于主動傳輸知識的地位,學生處于被動接受知識的 地位的模式相比,項目驅動法強調的是 “以學生為主體、以教師為主導、以任務為主線”。在 任務驅動法教學過程中,學生能充分發揮主觀能動性,圍繞任務要求開展實踐探索,教師不再是課堂的中心,單方面地向學生灌輸知識,而是在學生完成任務的過程中起到組織、引導、督促、 協助、評價的作用。采用這種教學方法,可以解決傳統教學存在的無法充分調動學生的積極性和創造性,項目驅動式教學改革符合高職教育發展方向,符合國家教育部《關于全面提高高等職業教育教學質量的若干意見》 提出的高職教育的教學過程要突出實踐性和職業性的要求。
(二)《Java 程序設計》課程的項目驅動式教學
1. 概述
為了更好地實施教學,切合高職教育人才培養的要求,培養適應行業需求的程序設計人才, 我們在《Java 程序設計》課程中引入任務驅動教學法,以行業流行的my Eclipse 作為開發平臺,對 《Java 程序設計》課程教學進行改革。我們緊扣 教學大綱,重新梳理《Java 程序設計》課程的知識體系,設計一系列具有實用性和趣味性的任務案例,并將所有知識點融入到各項目案例中。建立一套任務驅動式課程體系。我們以培養崗位職業能力為主線,用典型任務序化知識,并將知識融入任務情景之中。按“教師提出任務->學生分析任務->學生解決任務->學生提交任務完成報告->學生相互評價->教師總結與評價”的結構組 織每一個任務。任務驅動的整個流程按照實際需要進行安排,如果不能在一個教學時間單元中完成整個流程,則可以分段進行,比如把學生解決任務這個模塊放到課余時間進行,讓學生自主學習與挖掘新知識,加深對知識的理解。
2. 課程體系的優化設計
《Java 程序設計》課程的內容由三大部分構 成:Java 基本語法、Java 面向對象機制、應用編程。其中 Java 面向對象機制部分具有較強的理論性和抽象性,應用編程部分則更多偏向實踐性。 由于該課程的知識點覆蓋面廣,內容之間聯系緊密、互相滲透,我們根據教學目標重新梳理知識點之間的聯系,按照任務驅動的模式將知識體系劃分為 14 個模塊,每個模塊又包括三個小任務即啟發式模塊、知識點任務和實踐鞏固任務,14 個大的模塊如下所示: (1)Java 開發環境的搭建和使用。Java 特 點;Java 實現機制;Java 的體系結構;集成環境 myEclipse 。 (2)Java 基本語法。Java 應用程序結構; Java 程序編寫及運行過程。Java 語言標識符和關鍵字;Java 語言數據類型;Java 語言運算符與表 達式;分支控制結構;循環控制結構 (3)類和對象。類與對象概念與特征、屬性和方法;類與對象的關系;定義類的語法;創 建類的對象;使用對象的步驟;類的方法組成部 分;定義和使用類的方法。變量作用域;定義包和導入包的關鍵字;Javadoc 注釋。 (4)封裝和重載。封裝的作用;對屬性封裝;用構造方法實現對象成員的初始化。方法重載;Java 中的構造方法與實例方法區別;對構造方法進行重載。 (5)繼承和多態。繼承的概念;繼承關鍵 字;父類與子類之間的關系,super 關鍵字。多態 的概念;靜態多態,動態多態;多態的實現。 終類和抽象類。 (6)接口。接口的概念,接口編程的實 現; (7)數組。聲明和創建數組;數組的初始化;數組元素的使用。 (8)字符串。定義、初始化字符串;字符 串常見操作及方法;StringBuffer 類的定義和方 法。 (9)異常處理。異常的概念;異常處理結 構;拋出異常;聲明異常;自定義異常。 (10)GUI 編程。Java GUI 界面的基本原 理;常用的 AWT 和 Swing 組件;布局管理器;菜 單;Java 事件組成;委托事件處理機制;常用事件類; (11)數據庫編程。JDBC 的概念;JDBC 框 架結構;JDBC 驅動程序 JDBC 驅動程序編程的基本步驟。 (12)文件 I/O 編程。Java 的文件管理; Java 目錄管理;文件的創建;文件類的方法;順序文本文件;流的操作步驟;隨機文本文件;文件的追加。 (13)多線程編程。Thread 類;Calendar 類;SimpleDateFormat 類;線程的狀態;線程的優先級;線程的通信。 (14)網絡編程。TCP/IP 協議;Socket 類; ServerSocket 類;UDP 協議;發送數據包;接收數據包。 本文提出的課程體系將教學重點放在實踐 較強的應用編程部分,涵蓋了GUI 編程、數據庫編程、文件 I/O 編程、多線程編程、網絡編程等 技術,而對理論性、抽象性較強的 Java 面向對象機制,不再深入分析其內在機理,只要求學生掌握基本的概念、原理和語法,為后面的應用編程提供基礎。
3. 實訓內容的優化設計
Java 程序設計具有很強的實踐性,但其理論知識卻很抽象,學生僅理解理論知識點是遠遠不 夠的。傳統的“先講解理論知識點,再展示演示案例幫助學生理解,后再進行實踐練習”的做法是以教師為主導,學生被動學習的灌輸式教學法,這樣導致學生學習興趣不高、接受程度有限,導致演示案例和實踐練習的效果大打折扣。 對此我們重新設計教學流程,摒棄這種以教師為主導的做法,突出學生在學習中的中心地位。首先在每個單元中精心設計一個有趣、具有啟發性的演示案例,先讓學生看到程序運行效果,激發其學習興趣和積極性;然后從案例中引出該知識點的任務,讓學生分組討論該任務,分析該任 如何完成;接著限定任務的完成時間,讓學生在該時間內完成任務并提交任務完成報告,在任務完成后學生們要進行小組互評;后教師再根據學生完成任 務的情況進行總結和評價,包括對學生任務完成 程度的評價,對任務背后的知識點的解釋,對學生還沒熟悉的重難點進行總結。至此,學生通過完成任務,不但對相關知識點有了一定感性認識,而且通過任務評價和總結,能夠更好地理解和消化理論,提升為自己的理性認識;后根據需要再設計 1-2 個案例作為實訓練習,由淺入深、由簡單到復雜地鞏固知識點和技能。很明顯,這是一種 “從實踐到理論,再從理論到實踐”的做法,符合人類認識客觀世界的規律。由于該任務貼近學生學習的真實情境,學生感到親切、容易理解其次,由啟發式案例提出本節要完成的任務。這里任務比啟發式案例要求稍高,有利于在學生現有的基礎上挖掘自己的潛力,更深的理解知識。學生在接到任務后當堂討論并分工,這樣有利于培養他們的團隊合作精神,學生完成任務的過程可以放在課后進行。在任務完成后需保留源代碼,對程序運行結果保留截圖并用 ppt 演示任務完成流程和填寫任務完成情況表;回到課堂上后學生將任務結果進行展示并對其他小組評分,教師進行評價并補充講解重難點,包括程序結構、定義變量、數據類型、運算符和表達 式、分支控制結構、循環控制結構等。教師對知識點和關鍵技術步驟進行總結,對實踐練習中出 現的問題進行分析,可以幫助學生構建一個 晰、完整的知識結構后,進行實踐鞏固練習。,以任務為驅動,教師只是起到引導的作 用,這樣學生掌握的知識才是真正屬于自己的知識。
三、結語
如上所述,項目任務驅動式教學的關鍵是合理設計項目任務,將知識點巧妙地隱藏到任務中,讓任務本身具有趣味性并盡可能地貼近真實情境,使學生在完成任務的過程中不僅獲取相關知識,而且發展實踐能力。理論知識點不再是案例的主導, 而是作為演示案例的抽象推廣。實踐證明,對于《Java 程序設計》這門理論性和實踐性都很強的課程,通過引入項目任務驅動教學法,進行項目實訓,使理論和實踐互相滲透,確實能夠,激發學生的學習熱情,改善教學效果,提高學生的動手實踐能力,能更好地滿足高職院校培養實用型技能人才的要求。
參考文獻:
篇7
一、兩種任務驅動教學方式定義
1、正向任務驅動
(1)對應學生學習階段:初級階段---認知程序。
(2)任務驅動方式:根據任務編寫程序,運行程序,得出結果。
(3)任務驅動目標:已知程序清單,完成程序運行結果,并對結果進行分析。
2、逆向任務驅動
(1)τρ生學習階段:中級階段---剖析程序
(2)任務驅動方式:根據結果完成程序填空,運行程序,得出結果。
(3)任務驅動目標:已知程序結果,完成程序填空,并對運行結果進行驗證。
二、正向任務驅動式
正向任務驅動式是在任務和程序已知的情況下,只需運行程序,得出結果,再對結果進行分析來完成任務。其任務形式是”任務->程序->?”,需要完成結果,故稱為正向任務驅動。
教學一例:
1、提出任務:(1)求5!的值。(2)問s設定為什么類型的數據變量可以容納積值?
要求:通過程序運行和結果分析,實現對程序的理解和對知識點的掌握。
2、給出條件:給出二組程序。給出條件。
方法一:
#include
main( )
{ int s;
s=5*4*3*2*1;
printf(“s=%d”,s); }
方法二:
#include
main( )
{ float s;
s=5*4*3*2;
printf(“s=%f”,s); }
要求:通過運行程序,記錄結果,達到看懂程序。
3、收集學生對求5!任務解決的方法及結果分析。
方法一:輸出結果:s=120
方法二:輸出結果:s=120.000000
兩種方法運行結果一致。
同學們得出:s變量設定為int和float類型時都可以容納正確積值。
要求:在對結果分析后,學生應該掌握數據變量與容納數據大小之間的關系。
4、任務驅動反思:”任務->程序->?”的任務驅動形式難度系數小,多用于知識入門階段。任務通過結果對比完成。在新知識入門階段學習中,有利于同學們熟悉程序,掌握知識點。同時可以提高學生學習興趣,樹立學習自信心。
要求:教師應歸納知識要點。
三、逆向任務驅動式
逆向任務驅動式是在任務和結果已知的情況下,需要補寫程序,運行程序,再對結果進行驗證來完成任務。其任務形式是”任務->?->結果”,需要完成填空,故稱為逆向任務驅動。
教學一例:
1、提出任務:求1+2+ … +99+100的值。(1)對程序填空(共2空);(2)運行程序,記錄結果,并驗證結果。
要求:通過程序補寫和結果驗證,實現掌握循環控制語句的使用方法。
2、給出條件:部分程序和輸出結果已給出。
#include
main( )
{ int i=1,sum=__⑴__;
while(i
{ sum=sum+i; __⑵__ ; }
printf("sum=%d\n",sum); }
給出結果:sum=5050
要求:重點掌握循環控制變量i的初值、終值和步長值設定,以及用于累加和變量的初值清零工作。
3、收集學生對任務解決的方法及結果分析。
方法一填空:(1)0 (2)i=i+1
程序運行結果:sum=5050(程序運行結果和給出結果一致)
結論:這部份同學認識到,變量sum用于存放累加值,初值應清零。
因此:⑴空填0;而數列每項值是加1遞增,因此:⑵空填i=i+1。
方法二填空:(1)1 (2)i=i+1
程序運行結果:sum=5051(程序運行結果和給出結果不一致,計算結果錯誤。)
結論:少數同學忽視了變量sum初值應該清零。
因此:⑴空填1 ;而數列每項值是加1遞增,因此:⑵空填i=i+1。
要求:在完成程序填空后,學生應該掌握循環控制變量初值、終值、步長值的設定方法。
4、任務驅動反思:”任務->?->結果”的任務驅動形式難度系數中,多用于知識鞏固階段。任務通過程序填空和結果驗證實現。
要求:教師應歸納知識要點。循環控制變量三要素(初值、終值、步長值)的設定是完成任務的重要前提。
篇8
關鍵詞 任務驅動 任務驅動教學法 網絡程序設計
中圖分類號: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
任務驅動教學法是指在課程教學的過程中,學生在教師的引導下,緊緊圍繞一個或多個特定的教學目標,在教學任務的驅動下,通過對現有知識技能和學科理論的主動應用,共同進行自主探索的互學習。任務驅動教學法要求教學任務具有非常強的目標性,要刻意營造教學情境,創設情景使整個教學工作在真實的任務驅動下進行。在整個教學過程中,教師處于中心地位,教師在安排布置學生完成教學任務時,以引導或演示的方式,啟發學生給出完成該任務的思路、方法和結果。在教師安排下,學生花大量的時間自主完成自己的學習任務,在學生自己動腦、動手完成任務,從而學習和掌握相關的知識與技能。
任務驅動教學法是知識及技能的獲取以任務為中心,著重培養學生分析問題、解決問題、創新問題的綜合能力。它以某一具體任務為出發點,通過課堂引導、操作實踐、評價反饋等方法來完成不同階段的任務,從而達到培養學生主動獲取知識、應用技能等綜合能力。
1 任務驅動教學法的可行性
1.1 網絡程序設計的課程特點
網絡程序設計課程是一門實踐性、綜合性都較強的課程。該課程主要是以網絡程序原理及設計思想為主線,學習網絡程序設計與編寫的方法,從而進一步學習分析問題、解決問題的方法,而不是單一學習任何一種特定語言的語法規則,因此在教學中非常注重學生解決問題的編程技能和程序研發能力的培養。其次,作為大學高年級專業課程,學生作為學習主體存在較大的群體差異,他們的認知水平、專業基礎知識、程序研發能力參差不齊。如果以統一的教學方法來教學,則難以取得很好的教學效果。
1.2 任務驅動教學法的可行性
網絡程序設計的教學知識點很多,教學內容通常可以歸納為三類:第一類是基礎語法類,強調網絡程序語法知識與規則的學習,使學生掌握最基本的程序語法和程序設計思想; 第二類是覆蓋類,這類知識的學習能使學生的網絡知識體系更加全面,這部分內容傾向于全面性的專業知識的應用;第三類是綜合項目類,此部分的教學內容更加注重網絡程序設計中綜合研發能力的培養。通用的教學模式是按基礎類、覆蓋類、綜合項目類的順序實施教學,這種方法實施簡單、層次性強。
任務驅動教學法旨在培養學生運用及提升技術知識水平的能力,培養學生積極探索新知識的能力。任務驅動教學法改變了通用的教學模式,從綜合項目類入手,設計不同的任務,在任務的驅使下完成基礎類、覆蓋類的教學內容的學習。這種方法促使師生共同參與到日常課程教學中,在完成課程任務實踐的過程中,部分學生會遇到暫時難以解決的問題,為了完成任務學生會自發討論交流、查詢資料,協作完成任務,這樣做的結果會使課堂教學變得氣氛活躍而且生動深入。教師把課堂教學的重點和難點都落實到了解決課程任務過程中發現的難題,通過交流展示等反饋機制及時了解學生的學習狀況,更好地幫助教學引導學生達到預定的教學效果。任務驅動教學法是理論教學理論和實踐教學理論的高效運用,非常適用于網絡程序設計類的教學中。
2 任務驅動教學法的實施
2.1 任務設計的原則
任務驅動教學法以任務為中心,任務的焦點是解決某一現實問題,激發學生積極參與欲望的問題。讓學生在完成教師所設計的各種任務同時,能夠不斷地增強知識應用技能。因此在設計任務的時候應遵循以下幾個原則:
(1)整體性原則。各階段的任務要能夠涵蓋教學內容的絕大多數知識點。任務的知識點要能形成一個有層次的整體,讓學生在不斷完成任務的過程中獲得網絡程序設計知識和技能。
(2)實用性原則。要使學生通過完成任務將得到有價值的結果,具有較強的實用性,激發學生的創作潛能。
(3)開放性原則。任務設置的難易程度要適中,還要在任務中為學生留出創造性能力發揮的空間。
(4)可操作性原則。任務應該是可操作的,在現有的能力水平下能夠完成,要充分考慮到學生已具備的知識與技能。
(5)真實性。任務的設計要貼近學生的日常生活實踐和現實需要,這樣不僅有利于教師對任務的表達,而且有利于學生對任務的精準把握。
2.2 任務驅動教學法在教學中的實施
此教學法的實施可分成:創設情境,精心設計任務;引導學生進行任務分析;學生自主探究;展示交流;及時評價與總結共五個步驟。
(1)創設情境,精心設計任務。實施任務驅動教學法要營造真實、有現實意義的情境,引起學生的學習興趣。學生的求知欲望是建立在濃厚的興趣和豐富的情感基礎上的,所以要調動學生的學習積極性,先要喚起他們的學習興趣,引導他們進入設定的學習情境。
任務是任務驅動教學法的核心,它直接決定教學目標完成的好壞。因此,教師在實施任務驅動教學各階段目標時,要精心分析教學目標,仔細分解或組合每個教學內容,盡量為學生設計出具有代表意義的且可操作的任務,盡可能覆蓋每個知識點。
(2)引導學生進行任務分析。如果精心設計的課程任務來自學生的興趣或現實生活需求,學生會非常感興趣。教師應從學生的各種需求出發,設計出合適的教學任務,才有利于學生主動學習,才能突破教學重點難點。在學生躍躍欲試積極思考的時候,教師不要急于提供方法或提出解決方案,要恰當地引導學生對任務進行分析、討論,將大的任務分解為一個個的更小級別的任務,步步為營,逐步推進,最終達到預定的教學目標。
(3)學生自主探究。這是任務驅動教學中的重點內容。經過教師課堂上的分析引導,學生了解了每一個任務中應解決的關鍵問題和涉及的核心技術,也都能獲得各自不同的理解和技術方案。對于解決問題中的疑難點,也正是教師在教學設計時隱含在各個任務中的知識點,在下次課堂教學時教師可以將此作為典型問題引導學生解決。在學生完成任務的過程中,教師要創造一個良好的交流平臺,能夠實時幫助學生進行自主學習,及時解決學生遇到的疑問、降低學習難度。
(4)展示交流。學生各自完成作教師布置的任務后,通過自評自說的方式在課堂進行交流展示,各小組相互欣賞完成后的成果,進行互評;還可以通過提問的方式進行互相交流,咨詢對方完成任務中好的實現方法和步驟。
(5)及時評價與總結。教師要適當地對學生的學習情況進行總結和評價,課時允許的話還可以進行自評和互評。恰當及時的評價能充分肯定他們的成果,調動他們的積極性,增強自信心。通過評價時的互相交流討論,既培養學生的創新意識和團隊精神,又培養了善于分析和接受他人建議的良好品質,還能體會到學以致用的快樂。
評價在任務驅動教學法的實施過程中是非常重要的環節,評價能夠使從技術技能等方面給予學生啟示,又能從師生的討論和評價中多角度地看到自己的不足,把原理性知識與操作性技能固化為個人的程序研發能力,快速提升網絡編程綜合能力。
3 使用任務驅動法教學要注意的問題
(1)分解的任務必須有實用價值。分解的任務要與學生生活緊密聯系起來,最好是學生樂意解決的任務,這樣才能更好地激發學生的學習熱情。實施時適當引用項目教學法進行輔助教學,教師可以獨立研發本課程相關項目并分解成小項目,把其中一些小項目作為課程案例進行課堂討論,以項目經理的角度指導學生如何完成任務,而將另外一些小項目作為課程任務布置給學生。
(2)應遵循循序漸進原則,教師要注意及時指導。任務驅動教學法能驅動學生從被動學習者變為自主學習者,從而使學生能在學習知識技能的同時也提高自主學習的能力。任務驅動教學法的最終目的是為了知識點的掌握和技能的獲取,所以在知識點的選取方面應遵循由簡到繁、由易到難的循序漸進的原則。還要求教師創建一個合適的交流平臺,及時指導學生解決任務中的因難。
(3)對教師綜合素質要求較高。任務驅動教學法對教師有很高的要求,如果教師引導缺乏技巧或者對整個課程任務的設計不夠理想,都可以會大大影響教學效果。教師先要精心地拆分教學目標,然后將教學目標巧妙地蘊涵到某個教學任務,從而得到教學內容。這些教學任務不僅要有典型性,而且還應有挑戰性,所有這些都需要教師把握學生的知識能力水平,本課程知識、技能及其內在聯系。
任務驅動教學法是一種獲取操作性、實踐性教學內容的非常有效的方法。在使用這一方法進行教學時要充分考慮教學對象的能力與水平,對教學內容有比較精準的把握,才能保證對這一方法運用的合理、恰當。
參考文獻
[1] 楊建勛.計算機教學中任務驅動教學法的實施[J].教育與職業,2013.6:159-161.
[2] 侯建花,楊長青.“C語言程序設計”實驗教學的改革與實踐――以淮海工學院為例[J].計算機教育,2010.1:114-115.
篇9
關鍵詞:任務驅動法 案例
中圖分類號:TP312 文獻標識碼:A 文章編號:1007-9416(2013)02-0206-01
任務驅動教學法通過選擇合適的案例幫助人們學習知識,提高能力。由于該方法具有生動、形象和教學效果好的特點,符合人們認知事物的規律,在教學中被廣泛采用。
在講授C++程序設計的過程中,傳統的講授方法么不僅教師備課復雜,而且學生負擔重,對達到良好教學效果收效甚微。可借鑒任務驅動教學法,在每個課時中穿插相應的任務案例于課堂,讓學生在完成任務中學到知識,以此改善教學效果。
1 選擇任務案例的方法
1.1 難度適中
要注意控制任務的難度。任務太簡單會引不起學生興趣,任務太困難又可能導致學生失去信心,這些都會造成傳授知識的失敗。考慮到學生群體是大一第二學期的學生,剛接觸編程,沒有實際的編程實踐,選擇相對不太困難和相關專業知識聯系緊密的任務會比較效果好。
1.2 大小適中
應該注意選擇合適大小的案例,在課時允許的范圍內要盡量選擇不大并且涉及知識內容比較集中的案例,如此更能夠突出教學目的,從而不會偏離大綱,更容易達到理想的教學效果。
1.3 選題合理
在案例的選擇方面應著眼于貼近生活和容易引起學生興趣的選題,他們對這樣的案例更容易理解,因而上課時的精力就會更加集中,更能發揮學習的主觀能動性,達到良好的教學效果。
1.4 選擇具有通用性的數據結構算法
任務中所需要的算法和數據結構應該具有通用性。算法的通用性是指算法本身的規律性和其它算法的共性,由此可以使學生以后再次面臨相似的問題時,可以根據以前的方法解決問題,對促進學生學習有更好的效果。教師應該盡量向學生引入一些典型的算法,如冒泡法、貪心算法、分治算法等。這些經典算法對培養學生編程素養、形成編程思維有很大幫助。
1.5 選擇一個大型任務貫穿整個課程
教師應該在時間允許的情況下指導學生建立一下比較復雜的大任務,這樣不但可以鞏固和貫通所學知識,而且對學生建立系統工程的思維有幫助。
2 通過任務驅動整個理論知識學習過程
在教學過程中,需要緊密結合授課內容和任務案例,從而達到預期的教學效果。
教學開始時,應該通過提出問題的方法引導學生發現問題的關鍵點,然后結合要講解專業知識啟發學生進行思考。例如,既然問題的關鍵是選擇什么樣的數據結構,那么可以提示學生設計解決問題所需要的數據結構。對任務案例做具體分析,說明解決問題的思路,尤其是需要涉及當前正在講授的C++相關的語法內容,然后和學生一起書寫對應的源程序,同時講解源程序中體現C++語法的部分。
3 學生管理系統實例分析
下面介紹一個有關學生管理系統的一個案例。在上課之前,先演示做好的學生管理系統,使學生從用戶的角度分析需要什么樣的功能。接下來參考傳統教學方法中講述C++語法知識的手段,根據課本的理論脈絡強調其使用的方法,將任務驅動教學和傳統教學手段結合在一起達到了理想的教學效果。
(1)描述學生基本信息的數據結構
typedef struct{
unsigned int stuno;//引入整型變量
char stuname[16];//介紹字符數組
int gender;//借助整型描述布爾型數據
unsigned int room;//宿舍號
}Student;//介紹結構體定義
(2)描述學生學習成績的數據結構
typedef struct{
unsigned int stuno;//學號,整型變量
char courNo[8];//課程號,字符數組
char courName[28];//課程名,字符數組
int credit;//學分
float score1;//平時成績
float score2;//卷面成績
float score;//綜合成績
}ScoreInfo;//介紹結構體定義
(3)按照案例介紹循環設計,如for(;;),模塊定義實現,子函數設計,開關語句switch。
for (;;)
{
int opt;
ShowMenu();//顯示程序運行主菜單
cin>>opt;//用戶選擇要執行的功能
switch(opt)
{
case 1: IntputData();break;//輸入數據
case 2:QueryData();break;//查詢數據
case 3:DeleteData();break;//刪除數據
case 4:SortData();break;//數據排序
case 5:exit(0);//退出系統
}
}
最后根據學生管理系統的各個子函數模塊,對C++程序設計中的三種控制結構、函數定義和文件讀寫等知識點進行比較。幫助學生在編程實踐中體會設計軟件的完整過程,逐漸過渡到自行編程和調試C++程序學習中。
篇10
關鍵詞:C#;案例;驅動;實踐;項目
中圖分類號:F49
文獻標識碼:A
文章編號:1672-3198(2013)24-0162-01
0 引言
案例驅動教學法是通過分析案例程序引導學生學習,以任務驅動調動學生學習主動性的教學方法。“C#程序設計”是計算機信息管理專業、軟件技術、計算機應用等相關專業的一門專業必修課,具有極強的實踐性和很強的工程性。在此課程的教學改革實踐中,筆者采取了以項目為導向的教學模式,突出了對學生實踐動手能力及綜合素質的培養,為最終實現學生的零距離上崗奠定了基礎,取得了良好的教學效果。
1 教學內容設計
筆者根據多年的教學經驗,本著“實用為主,深入淺出”的思想,將教學內容進行整合,使學生在邊做邊練的過程中,輕松掌握所學知識點。教學案例的選擇既要有一定的代表性和實用性,又要有趣味性。這樣才能吸引學生。案例規模大小要適中,要盡可能多地涵蓋主要知識點,還要求必須在規定學時內完成。現將教學中的案例舉例如下:
典型案例一:四則運算訓練器。在講運算符這個知識點時,筆者設計了一個四則運算訓練器,通過這個案例,學生學會了“加、減、乘、除”的使用方法,還學會了單選按鈕、復選按鈕等控件的使用。該案例效果如圖1所示。
典型案例二:交通燈。在講計時器和圖片框控件的時候,筆者設計了一個十字路通燈的案例。這個案例一經展示出來之后,學生就非常感興趣,覺得自己學的知識真的是學有所用了。
典型案例三:購物車。在這個淘寶網上購物盛行的時代,設計一個購物車,再實用不過了。學生對這個案例興趣十足,教學效果非常好。
典型案例四:射擊小鳥游戲。設計一個小游戲案例,寓教于樂。讓學生也變成一個軟件開發者,增長學生信心,調動學習積極性。
以上是筆者在教學過程中的案例,在設計案例的時候,并不一定按照教材上知識點的先后順序,而是打破章節,根據需要綜合相應知識點,使得知識點融合在案例中。讓學生在做的過程中,不知不覺就把相應知識點掌握了,從而起到事半功倍的效果。
2 教學方法設計
2.1 “實踐導向型”的案例教學
這種案例教學的目的是將所學知識與應用結合起來,注重學生技能培養,培養學生主動探求知識的學習習慣。該種方法的實施過程如下:教師將問題進行描述,展示案例運行效果,接下來進行案例功能分解,對該案例涉及的知識點進行教學,講解功能實現代碼,最后分析總結。通過這種教學方法,使得學生在學習過程中注意力集中,學習積極性大大提高,獲取知識比較快。
2.2 “實踐導向型”的討論/辯論式教學
這種方法的教學目的是提高學習主動性,通過交流更快地學習技能,提高學生團隊協作精神。實施過程如下:首先是教師發掘主題,接下來分組發動,展開討論現場展示,最后學生總結,教師進行點評。通過這種教學方法,使得學生廣泛參與學習,學生學習主動性強。
2.3 “實踐導向型”的項目教學(角色扮演)
在教學過程中模擬企業環境,培養學生崗位技能。該種方法的實施過程如下:首先是教師進行角色扮演,模擬客戶代表,提出項目需求,再模擬項目經理,進行需求分析,總體設計;接下來學生根據需求分析,進行項目分組,進行模塊設計,包括代碼編寫,項目測試與調試等環節,最后學生進行項目展示,教師進行項目驗收與評價。通過這種教學方法,使得學生能夠更好的熟悉崗位要求,掌握崗位技能。學生在這個學習的過程中,了解了做項目的整個流程,從而可以舉一反三,對以后的畢業設計和工作中都有很大的幫助。
3 教學效果分析
從傳統的教學方式來看,教師在課堂上按照書本上的順序講解知識點,理論知識都講完之后,學生上機實踐。教師在講理論知識的時候,學生根本就不知道老師在講什么,也不知道學了這些知識之后能有什么用,所以學生很茫然,這樣就很容易產生厭學情緒,上課就會睡覺,或者開小差。從而導致學生對理論知識的理解模糊,開發項目的技能掌握也不夠熟練。嚴重缺乏學習的主動性,大部分學生的學習是被動的,是被家長和老師逼著才會去學習。當教師講授完知識后,學生只能死板的接受老師講的知識點,并不會舉一反三,也不會把知識靈活的應用到實際生活中。導致學生對專業知識學習積極性越來越差。自從實施了案例驅動的教學方法之后,上課效果明顯好轉,以前不愛學習的學生也開始認真的做練習了,很多學生還很會創新,在老師提出的案例實現要求的基礎上,還會將功能做得更加完善。以前是老師逼著學生學,現在是學生自己主動要求學,學生會希望老師快點講,多講些知識,這樣他們就可以做出更好的作品了。完全由原來的“要我學”轉變為“我要學”的模式了。整個課堂涌現出一種積極向上的學習氛圍。尤其是每當學生案例做成功之后,那種難以掩飾的成就感。
4 結束語
案例驅動的教學模式自從2009年在我校計算機信息管理專業中開始探索實施,在實施過程中不斷驗證修改,如今已經形成了一套較為完善的教學體系。近幾年的實踐證明,這種教學模式還是行之有效的,學生學習的積極性、主動性有了大幅度的提高,學生的參與熱情、課程設計質量、競賽成績、畢業生畢業設計質量都有很大的進步,達到了培養學生自學能力、實踐動手能力、創新意識和團隊協作的能力目標。因此,此教學方法對高職院校的計算機相關專業具有一定的參考價值。
參考文獻
[1]馬麗,趙偉艇.行動導向教學法在高職C}}程序設計中的應用[J].計算機教育,2010,(3).
[3]席平,楊洋,王春潔.機械糞課程實驗教學改革與實踐[J].實驗技術與管理,2010,27(7):14-18.