抓 i2c trace
adb root
echo nop > /sys/kernel/debug/tracing/current_tracer //清空以前的跟蹤信息
echo 1 > /sys/kernel/debug/tracing/events/i2c/enable
echo 1 > /sys/kernel/debug/tracing/trasing_on //打開跟蹤器
操作設(shè)備,復(fù)現(xiàn)問題。
echo 0 > /sys/kernel/debug/tracing/tracing_on//關(guān)閉跟蹤器
adb pull /sys/kernel/debug/tracing/trace
如下目錄也可以操作:
/sys/kernel/tracing/
adb pull 出來的 trace 文件如下:
# tracer: nop
#
# entries-in-buffer/entries-written: 1203/1087390 #P:6
#
# _-----= > irqs-off
# / _----= > need-resched
# | / _---= > hardirq/softirq
# || / _--= > preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
kworker/u12:0-6 [003] ...1 253.195437: i2c_reply: i2c-1 #1 a=038 f=0001 l=63 [00-00-01-81-68-03-72-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00]
kworker/u12:0-6 [003] ...1 253.195440: i2c_result: i2c-1 n=2 ret=2
kworker/u12:0-6 [003] ...1 253.257546: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:0-6 [003] ...1 253.257550: i2c_read: i2c-1 #1 a=038 f=0001 l=63
kworker/u12:0-6 [003] ...1 253.263708: i2c_reply: i2c-1 #1 a=038 f=0001 l=63 [00-00-01-81-68-02-d0-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00]
kworker/u12:0-6 [003] ...1 253.263711: i2c_result: i2c-1 n=2 ret=2
kworker/u12:5-223 [003] ...1 254.632061: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:5-223 [003] ...1 254.632064: i2c_read: i2c-1 #1 a=038 f=0001 l=63
kworker/u12:5-223 [003] ...1 255.728473: i2c_result: i2c-1 n=1 ret=1
kworker/u12:5-223 [003] ...1 255.728499: i2c_write: i2c-1 #0 a=01a f=0000 l=3 [63-a8-10]
kworker/u12:4-222 [003] ...1 266.944488: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:4-222 [003] .n.1 266.944492: i2c_read: i2c-1 #1 a=038 f=0001 l=63
kworker/u12:1-53 [003] ...1 268.822588: i2c_reply: i2c-1 #1 a=038 f=0001 l=63 [00-00-00-40-00-01-c4-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00]
kworker/u12:1-53 [003] ...1 268.822591: i2c_result: i2c-1 n=2 ret=2
kworker/u12:1-53 [003] ...1 268.822650: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:1-53 [003] ...1 268.822651: i2c_read: i2c-1 #1 a=038 f=0001 l=63
kworker/u12:0-6 [003] ...1 271.457514: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:0-6 [003] ...1 271.457518: i2c_read: i2c-1 #1 a=038 f=0001 l=63
這里看出,是哪個(gè) task,PID 是多少,用的 I2C-1 進(jìn)行通信,傳輸過程是跑在 CPU3 上面,并且有 kernel 時(shí)間戳。
i2c_write、i2c_read、i2c_reply、i2c_result 是一個(gè)循環(huán),i2c_reply 是 i2c 傳輸完成,并且重新被 CPU 調(diào)度,返回到調(diào)用線程的時(shí)間點(diǎn),i2c_result 則是兩次 i2c 傳輸?shù)臅r(shí)間間隔。
每一筆 i2c 傳輸?shù)拈L度,內(nèi)容,也都會(huì)打印出來。
因?yàn)椴┲饕婚_始只在 events 里面 enable 了 i2c,因此只抓除了 i2c 部分,我們可以同時(shí) enable 其他事件:
如果我們同時(shí) enable i2c 和 irq ,我們將在 trace 中看到更詳細(xì)的內(nèi)容,足夠分析 i2c 傳輸慢的問題。
-
Linux
+關(guān)注
關(guān)注
87文章
11352瀏覽量
210539 -
I2C
+關(guān)注
關(guān)注
28文章
1495瀏覽量
124729
發(fā)布評論請先 登錄
相關(guān)推薦
I2C Guid I2C指南
I2C總線在Linux系統(tǒng)中的驅(qū)動(dòng)設(shè)計(jì)
linux自帶i2c工具使用
Linux的I2C驅(qū)動(dòng)架構(gòu)
Linux驅(qū)動(dòng)中的I2C驅(qū)動(dòng)架構(gòu)詳細(xì)分析
![<b class='flag-5'>Linux</b>驅(qū)動(dòng)中的<b class='flag-5'>I2C</b>驅(qū)動(dòng)架構(gòu)詳細(xì)分析](https://file.elecfans.com/web1/M00/9F/31/o4YBAF1CiaaASEZdAADVM7aWzfQ790.png)
嵌入式linux應(yīng)用讀寫i2c示例
![嵌入式<b class='flag-5'>linux</b>應(yīng)用讀寫<b class='flag-5'>i2c</b>示例](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
linux I2C子系統(tǒng)(及相關(guān)程序設(shè)計(jì)MPU6050)
![<b class='flag-5'>linux</b> <b class='flag-5'>I2C</b>子系統(tǒng)(及相關(guān)程序設(shè)計(jì)MPU6050)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
linux移植MPU6050的I2C驅(qū)動(dòng)
![<b class='flag-5'>linux</b>移植MPU6050的<b class='flag-5'>I2C</b>驅(qū)動(dòng)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Linux應(yīng)用開發(fā)【第十二章】I2C編程應(yīng)用開發(fā)
![<b class='flag-5'>Linux</b>應(yīng)用開發(fā)【第十二章】<b class='flag-5'>I2C</b>編程應(yīng)用開發(fā)](https://file.elecfans.com//web2/M00/24/E8/poYBAGGzOeGADtqaAACdT-MAjaM701.png)
硬件I2C與模擬I2C
![硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Linux I2C驅(qū)動(dòng)入門知識(shí)科普
Linux ftrace簡介與分析
Linux ftrace工具宏定義
I2C子系統(tǒng)SW Architecture
![<b class='flag-5'>I2C</b>子系統(tǒng)SW Architecture](https://file1.elecfans.com/web2/M00/8D/81/wKgaomS7jI6AcVIDAAFQF5uK5G8249.jpg)
評論