I2C子系统
exynos4412的IIC控制器工作流程:
裸機(jī)程序如下:
重要的數(shù)據(jù)結(jié)構(gòu):
1.描述控制器的:
2.控制器操作硬件的方法:
3.核心層的總結(jié)構(gòu)體;
4.描述從機(jī)mpu6o50的:
設(shè)備樹:
i2c@138B0000 {samsung,i2c-sda-delay = <100>;samsung,i2c-max-bus-freq = <20000>;pinctrl-0 = <&i2c5_bus>;pinctrl-names = "default";status = "okay";mpu6050-3-axis@68 {compatible = "invensense,mpu6050";reg = <0x68>;interrupt-parent = <&gpx3>;interrupts = <3 2>;};};從機(jī)設(shè)備驅(qū)動–mpu6050基于misc子系統(tǒng)
1.驅(qū)動代碼
從機(jī)設(shè)備驅(qū)動–mpu6050基于普通字符設(shè)備 1.驅(qū)動代碼
源碼跟蹤心得:
上圖中只揭示了運(yùn)用層的讀寫函數(shù)怎么調(diào)用到adapter->algrithem->masterxfer()方法,以及為什么運(yùn)用層的read調(diào)用的是核心層的i2cdev_read()。那么,問題來了,我怎么知道這個(gè)mpu6050對應(yīng)的是哪個(gè)adpter,在我的工程代碼中定義的i2c_deriver對象注冊前根本沒指明他的adapter? 還有,代碼中的哪個(gè)client,看樣子是從probe函數(shù)的參數(shù)中傳進(jìn)來的,是怎么闖進(jìn)來的?我注冊i2c_driver之前可沒有指定他哦,怎么確保這個(gè)client是正確的client呢?
答:這是一個(gè)復(fù)雜的過程,見思維導(dǎo)圖: 《i2c從設(shè)備mpu6050是怎么注冊進(jìn)內(nèi)核的》實(shí)驗(yàn)源碼:
https://git.coding.net/xxgui1992/LinuxDriver-I2c.git
轉(zhuǎn)載于:https://www.cnblogs.com/xxg1992/p/6636375.html
總結(jié)
- 上一篇: python 爬虫 爬取序列博客文章列表
- 下一篇: 用Git虚拟文件系统来解决大型存储问题