瑞芯微RK3399-I2C4掛載EEPROM的修改案例
小編將透過本篇文章為大家列舉和說明如何使用I2C4掛載at24c08(EEPROM)晶片。
修改結果
1、修改kernel/arch/arm64/boot/dts/rockchip/OK3399.dts,新增修改如下:
2、摘除at24c08模組上的上拉電阻,飛線使用1.8V給模組供電,接入I2C4_SCL和I2C4_SDA。
修改思路
我們要新增一個I2C裝置的思路為:
在裝置樹中新增描述->在裝置樹描述中新增對應裝置驅動->裝置驅動新增到核心。
按照思路,首先要在裝置樹I2C4節點下新增at24c08的裝置資訊。在
kernel/arch/arm64/boot/dts/rockchip/OK3399-C.dts檔案,找到I2C4節點如下:
目前是disabled的狀態,並且沒有任何裝置資訊。新增裝置資訊如下:
如上圖,透過裝置樹告訴核心,I2C4開始使用,並且掛載了一個EEPROM裝置,名字叫
at24c08@50,其使用的驅動是compatible=“”;
那麼我們現在缺少這個驅動,一般的I2C裝置所使用的驅動檔案對應的I2C廠家會提供,如果廠家說不需要驅動等,其實不是指的真的“不需要”驅動,而是他們的裝置是可以使用通用驅動的。
本文中的裝置就是這樣,與廠家溝通後表示沒有驅動檔案。那麼直接在核心目錄下查詢eeprom、at24這樣的字眼,找找看有沒有對應的通用驅動檔案。
可見有
kernel/drivers/misc/eeprom/at24.c檔案。
檢視其內容是如何匹配使用這個驅動的,正常來說驅動檔案中應該預留了.compatible= *** 作為裝置樹呼叫該驅動的介面,只要在裝置樹描述裡的compatible與 驅動檔案中的.compatible中描述的一致,就會匹配成功了。
但是這個at24.c中並沒有.compatible,只有一個at24_ids如下其中有”24c08”:
對比同目錄的at25.c檔案就有.compatible沒有ids。
ids中描述的也是和.compatible一樣,是裝置樹用來識別匹配使用的,其中的三種識別匹配條件感興趣的可以深追一下。因與本文無關,不再贅述。所以找到了對應的驅動檔案,返回裝置樹新增描述。
現在這樣是告訴了核心我要使用I2C4,我的I2C4下有個EEPROM裝置,使用的是“24c08”驅動,但是還沒有將”24c08”這個檔案給到核心,那麼接下來的目的就是把驅動編進核心。
在kernel目錄下執行makemenuconfig,搜尋at24,如下:
按下數字1,自動跳轉到對應選項,按下y選中,儲存退出。
因為makemenuconfig修改的是.config檔案,而編譯指令碼中每次都會重新生成.config檔案,所以為了讓修改生效,修改編譯指令碼,使其不重新生成.config檔案,如下:
將生成.config檔案的命令註釋掉,編譯核心,這樣就將”24c08”給到核心,也透過裝置樹告訴核心,I2C4下有個EEPROM裝置要用“24c08”。
到此,我們的常規新增裝置思路就已經完成了:在裝置樹中新增描述->裝置樹描述對應裝置驅動->裝置驅動新增到核心。
接下來就是編譯核心,燒寫boot映象到開發板,使用i2ctool的命令進行檢視,這裡也不贅述i2ctool命令的具體使用方法。使用命令:i2cdetect-l 、i2cdetect-y 4。
對應的地址已經被驅動註冊,但是沒有生成devices下的I2C4裝置,說明模組可能沒有正常工作,檢視模組相關資訊。
模組自帶I2C4上拉電阻,因為OK3399-C底板上也帶有上拉電阻如下圖,並且是1.8V上拉,為了電平匹配,不修改底板的狀態下,使用1.8V為基準,將模組帶有的上拉電阻摘除,使用1.8V配置。
再次修改裝置樹,新增上時鐘描述和裝置地址描述。
編譯後,燒寫核心,燒寫完畢啟動開發板。
識別到I2C4下的裝置,然後進行讀寫測試即可,如下命令:
echo"hello my world" > /sys/bus/i2c/devices/1-0050/eeprom cat/sys/bus/i2c/devices/4-0050/eeprom
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69989353/viewspace-2907181/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 瑞芯微RK3188晶片datasheet、原理圖下載晶片
- 瑞芯微RK3288硬體方案設計資料下載
- 測評 | 國產“芯” · 瑞芯微 RK3568 效能解析
- 案例原始碼公開!分享瑞芯微RK3568J與FPGA的PCIe通訊案例,嵌入式必讀!原始碼FPGA
- DHCP移植到瑞芯微RK356x平臺
- 關於瑞芯微RK3568開發板的燒寫方式
- 瑞芯微RK3568四核核心板晶片簡介晶片
- 瑞芯微RK2728高畫質多媒體晶片晶片
- 瑞芯微RK3328_Demo,RK3328 box原理圖
- 瑞芯微3568開發板實時作業系統作業系統
- 瑞芯微RK3308完整規格書,RK3308晶片手冊資料下載晶片
- 瑞芯微最新開發資料下載--rk3399 ubuntu16.04開發說明Ubuntu
- 瑞芯微 RK3399 android7.1 wifi驅動build in 方式AndroidWiFiUI
- 瑞芯微rtl8211F(D)(L)系統設計指南
- 瑞芯微RK3288_Android9.0 SDK版本說明手冊Android
- 瑞芯微RK3328晶片處理器引數介紹晶片
- 瑞芯微RK3399處理器的GPU和CPU效能方法參考GPU
- 瑞芯微平臺RK3399主機板PCBA開發設計
- 瑞芯微平臺PX30處理器和晶片引數說明晶片
- 瑞芯微RK3288平臺人臉識別方案應用設計
- 瑞芯微RK3128 GPIO1_C4/C5無法控制
- 瑞芯微RK3128晶片手冊,RK3128 datasheet技術資料晶片
- 瑞芯微RK3399和RK3399Pro處理器效能比較
- 聯瑞電子:真的不變芯嗎
- 瑞芯微RK3399開發板Android7.1修改網路優先順序方法,觸覺智慧SBC3968開發板演示Android
- 瑞芯微RK3288處理器規格,RK3288硬體晶片資料晶片
- 瑞芯微RK3399開發板,RK3399主機板引數介紹
- 瑞芯微RK3576核心板釋出,全新AIoT晶片加持,革新物聯體驗AI晶片
- “芯向行業,開放賦能” OPEN AI LAB攜手國產晶片領航者瑞芯微,共同推動AI晶片加速行業AI晶片
- 邊緣AI處理器瑞芯微RK3399 Pro,嵌入式應用廣泛AI
- Camera EEPROM bringup
- EVASH Ultra EEPROM
- 瑞芯微RK3288 Datasheet,RK3288方案資料,RK3288晶片手冊晶片
- Rockchip RK292X TRM V2.0,瑞芯微RK292X晶片完整規格書晶片
- (11.1)iic串列埠讀寫EEPROM實驗:EEPROM介紹串列埠
- 檔案系統的掛載 與 非掛載
- Linux檢視觸控座標點的方法,觸覺智慧RK3562開發板,瑞芯微、全志等通用Linux
- RK3568開發筆記(三):瑞芯微RK3588晶片介紹,入手開發板的核心板介紹筆記晶片