古詩詞大全網 - 成語用法 - DS1337的驅動程序設計

DS1337的驅動程序設計

對DS1337時鐘信息的設置和讀取,以及對鬧鐘的設置都需要編寫軟件來實現。本系統運行在Linux操作系統下,DS1337作為系統的壹個硬件設備,系統對它的操作都是通過Linux操作系統內的驅動程序來完成的。

在Linux系統中,設備分為字符設備和塊設備兩種。DS1337屬於字符設備,用戶模式的程序對這類設備可以像對普通文件壹樣對它進行操作,因而字符設備類的驅動程序至少要實現Open(),Close(),Read()和Write()四個系統調用函數。這四個系統調用函數是內核數據結構file_operations內部各項的其中四項。另外,壹個設備驅動程序還和兩個數據結構有關,它們是inode結構和file結構。但直接相關的數據結構是file_operations。編寫壹個Linux系統驅動程序並對它進行測試主要有以下步驟:

(1)編寫各個文件操作函數,即Open(),Close(),Read(),Write()等系統調用函數;

(2)聲明file_operations結構,給結構成員賦值;

(3)編寫初始化函數和清除函數,並用兩個宏module_init和module_exit定義這兩個函數;

(4)創建壹個字符設備入口點,即使用mknod/dev/ds1337cxxx0命令來建立設備文件節點其中,c代表字符設備,如果是塊設備,這個位置應該是b;參數xxx代表該設備的主設備號,0代表該設備的次設備號;

(5)編寫測試應用程序;

(6)使用insmodds1337.o命令加載驅動程序;

(7)運行測試程序對驅動程序進行測試;

(8)使用rmmodds1337.o命令卸載驅動程序;

實際上,在測試過程中,如果發現有問題,還要再修改各個文件操作函數,然後再從第1步重新開始上面的過程,直到最後形成最終的完善的驅動程序。

DS1337的IC總線上的數據傳輸速率在標準模式下是100Kbit,在高速模式下為400Kbit。對於IC總線上的START條件和STOP條件以及數據位的傳輸時序,由於在EP9315中沒有更多的硬件控制電路,因此需要編程實現。需要註意的是,在IC總線上,數據的變化發生在SCL信號線為低電平的時刻;在SCL信號為高電平時,數據線SDA上的數據信號應該保持穩定。START條件是在SCL信號為高電平時,SDA產生壹個由高變低的電平變化,此後開始壹個數據傳輸過程。

STOP條件是在SCL信號為高電平時,SDA產生壹個由低變高的電平變化,並在之後的幾個時鐘周期總線被釋放,變成“閑”狀態。在Linux系統中,可以利用短延時函數udelay(unsignedlongusecs)來實現IC總線上的延時功能。具體的驅動程序在此不再給出。