当前位置:网站首页>OKRK3399開發板預留I2C4掛載EEPROM
OKRK3399開發板預留I2C4掛載EEPROM
2022-07-23 14:21:00 【卡卡羅特GT】
小編將通過本篇文章為大家列舉和說明如何使用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設備,名字叫[email protected],其使用的驅動是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

至此一個新的I2C EEPROM設備添加成功,對I2C設備的讀寫操作也可以通過開發板中帶有的i2ctool相關命令操作。https://forlinx.com/
边栏推荐
- FPGA工程师如何进行复杂系统设计?
- Configure the firetracker process, i.e. stepping on the pit record
- Uiscrollview (uicollectionview) prohibits horizontal and vertical sliding at the same time
- Renforcement de l'apprentissage - points de compréhension du gradient stratégique
- The shell needs to know the commands when running
- Day108. Shang Yitong: interface docking of hospital simulation system - query of hospital | Department | shift scheduling, addition, deletion, modification and paging conditions
- NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library ‘*****‘
- Kafka consumption reports an error coordinator unavailable Rediscovery will be attempt redisCovery
- 接口interface
- JS数据类型判断方式总结
猜你喜欢

Day108. Shang Yitong: interface docking of hospital simulation system - query of hospital | Department | shift scheduling, addition, deletion, modification and paging conditions

STM32 output sine wave +cubemx configuration +hal Library
![Pycharm读取Excel文件时报错:raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+ ; not supported )](/img/f0/9491ccc2a86d95bb30066397fb9fb6.png)
Pycharm读取Excel文件时报错:raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+ ; not supported )

Day 8 notes

数据库连接池 & DBUtils

338. 比特位计数

Rtx3080 is equivalent to GTX. What kind of graphics card is rtx3080? What level is rtx3080

Where does pytorch work?

LabVIEW运行中改变Chart的历史长度

Changing the historical length of chart during LabVIEW operation
随机推荐
鸡与蛋,产品与策略
强化学习——策略梯度理解点
How many processors is Tianji 720 equivalent to Xiaolong? How about Tianji 720 equivalent to Xiaolong
多重背包!
Notes du jour 5
Day 5 experiment
数据库连接池 & DBUtils
Stream stream is used for classification display.
-bash: ifconfig: command not found
What is Tianji 920 equivalent to a snapdragon? How much is Tianji 920 equivalent to a snapdragon? How about Tianji 920
What level of rtx3070ti graphics card? What level of rtx3070ti graphics card? How about rtx3070ti graphics card
Which is the difference between iqoo 10 pro and vivo X80 pro? Detailed parameter configuration comparison
BGP federal experiment
Day 8 notes
几种点云(网格)孔洞填充方法(1)
js软件卸载提示表情跟随鼠标变化js特效
Medium range
Pychart reads excel file with error: raise xlrderror (file_format_descriptions[file_format]+; not supported)
第十天笔记
shell跑的時候需要的需要了解命令