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