摘 要:本文研究基于Linux操作系統的嵌入式文件I/O編程的實踐教學,首先介紹了嵌入式Linux文件I/O編程的兩種方式區別及其教學特點,之后詳細介紹了嵌入式Linux文件I/O編程教學難點與對策。此實踐教學的研究成果已經在教學環境應用,并得到良好的授課效果,能夠達到預期的實踐教學目的。
關鍵詞:Linux;I/O編程;實踐教學
中圖分類號:TP316.81-4 文獻標識碼:A 文章編號:1674-7712 (2013) 24-0000-01
在Linux系統中大部分機制都會抽象成一個文件,因此Linux文件I/O編程就非常重要。而在嵌入式應用開發中,文件I/O編程是最常用也是最基本的內容,在涉及嵌入式設備驅動程序編寫時一定會用到此部分的知識。而嵌入式Linux文件I/O編程又分為兩種方式:系統調用方式和C庫函數方式,本文就主要針對這兩種方式的在實際應用中的區別,來研究在教學中應采用的教學方法及手段。
一、嵌入式Linux文件I/O編程的兩種方式區別及其教學特點
(一)系統調用方式
為了很好地保護內核,Linux操作系統將程序的運行空間劃分為內核態和用戶態。系統調用方式則是Linux操作系統內核提供給用戶程序調用的一系列特殊的接口。用戶程序就可以通過調用這組特殊的接口獲得內核提供給我們的相應服務。進行系統調用時,程序需要從用戶態切換到內核態,處理完成后再返回到用戶態進行其他操作。系統調用方式訪問Linux文件主要用到5個函數:open()、read()、write()、ioctl()和close()。
但由于系統調用方式訪問文件時需要經歷用戶態切換到內核態,之后再返回到用戶態的過程,所以相比于C庫函數方式要耗費時間。因此,應當讓每次的系統調用完成盡可能多的工作。
(二)C庫函數方式
C庫函數方式是C語言所特有的,因此在任何支持C語言的開發環境下,我們都可以調用其來訪問文件,當然就具有很好的可移植性。又由于其程序運行及調用函數都是在用戶態進行的,因此就要比系統調用方式節省訪問處理時間。
C庫函數方式訪問Linux文件主要用到fopen()、fread()、fwrite()、fclose()等函數。
二、嵌入式Linux文件I/O編程教學難點與對策
實踐教學中應當做到重點突出、難點化解,而每一個教學任務都有其重點和難點,我們的教學就要圍繞著重點和難點逐步展開,逐一解決。
在教學設計中本部分的教學內容被分為4個教學任務:嵌入式Linux文件打開及關閉、系統調用方式讀寫文件、C庫函數方式讀寫文件、字符設備CT1025的讀寫。首先使學生能夠區分特點之后掌握Linux文件打開及關閉的方式,接下來學習如何從文件讀數據和向文件寫數據,最后通過外部設備實驗使學生掌握嵌入式文件讀寫底層驅動的技能。下面以任務1為例展示教學方法。
(一)明確任務
教師通過演示講解等手段使學生明確本次任務。目的是利用直觀的方式刺激學生的頭腦,使對知識產生學習興趣,提高學習能力。
(二)基礎知識
基礎語法的學習對于Linux編程的初學者來說是困難的,因此需要化繁為簡,化難為易。在實際教學中,采用以下思路來進行授課的:兩種Linux訪問文件的方式可以歸結為兩類函數的使用區別,為了讓學生更好地理解和掌握,在實際的教學中避開了繁雜難懂的函數語法格式,取而代之的是簡單易懂的文字描述語言,通過這樣的描述使學生先掌握基本的用法,之后再深究具體的參數語法知識,具體分析如下:
1.系統調用方式
期間可以通過分組教學的方式,首先讓學生以小組為單位分析任務,畫出流程圖,接下來每人各自實現任務代碼,之后小組內部相互評定,選出優秀的參加組間互評,通過競爭的方式調用學生的學習熱情和積極動腦思考的能力。
三、結束語
Linux操作系統由于其優良的性能,被廣泛應用與嵌入式應用開發領域,而嵌入式Linux中又把一切(包括各種文件和外部設備等等)都看作是文件來處理。因此,只有熟練地掌握Linux中訪問文件的兩種方式,才能更好地進行嵌入式Linux的領域的學習和研發工作。
參考文獻:
[1]荊學磊.國內外教學目標的對比研究[J].教育與職業,2012(24):176-177.
[作者簡介]王瑩(1982-),吉林長春人,碩士,助教,研究方向:電子/計算機。