熱度 10|
1. Linux 系統已經將I2C驅動的功能基本完成,我們只需要將相關的結構體補充,完成注冊就可以正常使用,具體 I2C驅動的知識不在做說明。
2. 測試環境 Linux-3.4 內核,硬件環境 JZ2440開發板
3. 開發過程:由于I2C采用類似于Platform驅動實現形式,所以此處采用設備和驅動分開,以lkt4306為例
(1) 編寫 lkt4306_dev.c 文件
① 定義芯片名稱 和 地址,使用如下結構體實現
② 在adapter 適配器上創建設備信息,在static int lkt4306_dev_init() 函數中實現。由于JZ2440只有一個I2C接口,所以i2c_get_adapter(0),可以根據實際的掛載的總線確定adapter。具體實現如下
以上完成lkt4306_dev.c基本功能實現。
(2) .編寫lkt4306_drv.c文件完成設備驅動具體實現
① 編寫讀寫lkt4306函數功能,通過i2c_transfer 函數實現如下圖所示
寫函數功能類似。
② 完成file_operations 結構體,便于調用read 和write函數調用
③ 通過編寫 probe 和remove 函數完成 字符設備號的注冊 和刪除
以上操作后基本完成了。Linux下 I2C驅動的開發,完整的驅動程序可以通過網上查找I2C驅動相關的介紹或者咨詢凌科芯安了解詳細的開發源碼