/sys/ kernel/debug/tracing/current_tracer //清空以前的跟蹤信息 echo 1 > /sys/ kernel/debug/tracing/events/i2c/enableecho 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/soft" />

一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux ftrace工具抓 i2c trace

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-20 11:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

這里看出,是哪個 task,PID 是多少,用的 I2C-1 進行通信,傳輸過程是跑在 CPU3 上面,并且有 kernel 時間戳。

i2c_write、i2c_read、i2c_reply、i2c_result 是一個循環(huán),i2c_reply 是 i2c 傳輸完成,并且重新被 CPU 調(diào)度,返回到調(diào)用線程的時間點,i2c_result 則是兩次 i2c 傳輸?shù)臅r間間隔。

每一筆 i2c 傳輸?shù)拈L度,內(nèi)容,也都會打印出來。

因為博主一開始只在 events 里面 enable 了 i2c,因此只抓除了 i2c 部分,我們可以同時 enable 其他事件:

圖片

如果我們同時 enable i2c 和 irq ,我們將在 trace 中看到更詳細的內(nèi)容,足夠分析 i2c 傳輸慢的問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213837
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1541

    瀏覽量

    127878
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    I2C Guid I2C指南

    I2C Guid  I2C指南 The I2C bus is used in a wide rangeof applications because it is simpleand
    發(fā)表于 04-23 13:55 ?36次下載

    I2C總線及EEPROM的Linux驅(qū)動程序的設(shè)計

    筆者在開發(fā)基于MPC8250的嵌入式Linux系統(tǒng)的過程中發(fā)現(xiàn)I2C總線在嵌入式系統(tǒng)中應(yīng)用廣泛,I2C總線控制器的類型比較多,對系統(tǒng)提供的操作接口差別也很大
    發(fā)表于 01-06 16:35 ?3686次閱讀
    <b class='flag-5'>I2C</b>總線及EEPROM的<b class='flag-5'>Linux</b>驅(qū)動程序的設(shè)計

    i2c

    單片機i2c總線操作;單片機i2c總線操作;單片機i2c總線操作;
    發(fā)表于 05-17 11:09 ?35次下載

    linux自帶i2c工具使用

    平臺管理總線),DDC(顯示數(shù)據(jù)通道)以及ATCA(高級電信架構(gòu)).如果沒記錯的話,linux中的I2C框架是完全支持SMBus的.
    發(fā)表于 05-13 09:23 ?4155次閱讀

    LinuxI2C驅(qū)動架構(gòu)

    1.???? LinuxI2C驅(qū)動架構(gòu)LinuxI2C總線的驅(qū)動分為兩個部分,總線驅(qū)動(BUS)和設(shè)備驅(qū)動(DEVICE)。其中總線驅(qū)動的職責,是為系統(tǒng)中每個
    發(fā)表于 04-02 14:38 ?786次閱讀

    Linux驅(qū)動中的I2C驅(qū)動架構(gòu)詳細分析

    其實I2C接口非常的簡單,即使用51單片機的gpio來模擬I2C,編寫一個e2prom或者其他I2C接口的驅(qū)動程序,也不是什么難事,幾百行代碼就能搞定。但是
    發(fā)表于 08-01 17:35 ?3次下載
    <b class='flag-5'>Linux</b>驅(qū)動中的<b class='flag-5'>I2C</b>驅(qū)動架構(gòu)詳細分析

    嵌入式linux應(yīng)用讀寫i2c示例

    這里分享一個嵌入式linux讀寫24c02的i2c程序ioctl函數(shù)的使用:原型:struct ioctl(struct file *file,unsigned int cmd,unsigned
    發(fā)表于 11-01 16:57 ?12次下載
    嵌入式<b class='flag-5'>linux</b>應(yīng)用讀寫<b class='flag-5'>i2c</b>示例

    linux I2C子系統(tǒng)(及相關(guān)程序設(shè)計MPU6050)

    文章目錄linux I2C子系統(tǒng)框架在設(shè)備樹中添加從設(shè)備信息,mpu5060I2C driver 程序的編寫mpu6050 I2C程序具體實現(xiàn)lin
    發(fā)表于 12-06 13:36 ?9次下載
    <b class='flag-5'>linux</b> <b class='flag-5'>I2C</b>子系統(tǒng)(及相關(guān)程序設(shè)計MPU6050)

    linux移植MPU6050的I2C驅(qū)動

    上次移植了0.96寸的oled到linux上,用到的是SPI協(xié)議,這次買了一個I2C協(xié)議的模塊,MPU-6050。到手焊好,先在我先前買的pico上面測試了一下,因為pico的I2C例子里面剛好
    發(fā)表于 12-06 14:21 ?10次下載
    <b class='flag-5'>linux</b>移植MPU6050的<b class='flag-5'>I2C</b>驅(qū)動

    Linux應(yīng)用開發(fā)【第十二章】I2C編程應(yīng)用開發(fā)

    4:傳輸速率 5) 特性5:負載和距離 12.2.3 協(xié)議層 1) 數(shù)據(jù)有效性 2) 起始和結(jié)束條件 3) 應(yīng)答 4) 數(shù)據(jù)幀格式 12.2 在linux系統(tǒng)下操作I2C總線的外設(shè) 12.2.1 概述
    的頭像 發(fā)表于 12-10 19:28 ?1269次閱讀
    <b class='flag-5'>Linux</b>應(yīng)用開發(fā)【第十二章】<b class='flag-5'>I2C</b>編程應(yīng)用開發(fā)

    硬件I2C與模擬I2C

    硬件I2C對應(yīng)芯片上的I2C外設(shè),有相應(yīng)I2C驅(qū)動電路,其所使用的I2C管腳也是專用的,因而效率要遠高于軟件模擬的I2C;一般也較為穩(wěn)定,但
    發(fā)表于 12-28 19:14 ?81次下載
    硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    Linux I2C驅(qū)動入門知識科普

    I2C 總線驅(qū)動, I2C總線驅(qū)動就是SOC的 I2C控制器驅(qū)動,也叫做 I2C適配器驅(qū)動。
    的頭像 發(fā)表于 12-29 13:59 ?2096次閱讀

    Linux ftrace簡介與分析

    最近遇到 i2c 傳輸慢的問題,正常一筆 i2c 傳輸 52 bytes 應(yīng)該在 1ms 內(nèi)返回,但是偶爾出現(xiàn) 6 ~ 7ms 才返回,不滿足要求,因此研究一下 ftrace 工具,分
    的頭像 發(fā)表于 07-20 11:17 ?1079次閱讀

    Linux ftrace工具宏定義

    宏定義 在使用 ftrace 之前,需要確保內(nèi)核配置編譯了其配置選項。 CONFIG_FTRACE=y CONFIG_HAVE_FUNCTION_TRACER=y
    的頭像 發(fā)表于 07-20 11:18 ?921次閱讀

    I2C子系統(tǒng)SW Architecture

    I2C SW Architecture 【driver 驅(qū)動層】由普通驅(qū)動工程師負責,【i2c 核心層】由 Linux 提供,【i2c 核心層】以下由芯片原廠負責。
    的頭像 發(fā)表于 07-22 16:01 ?1236次閱讀
    <b class='flag-5'>I2C</b>子系統(tǒng)SW Architecture