调试文件系统(debugfs)

来自百问网嵌入式Linux wiki
跳转至: 导航搜索


简介

Debugfs是一个简单易用的基于RAM的Linux内核调试的虚拟文件系统,专门用于调试目的。
它是内核开发人员使信息可用于用户空间的一种简单方法。
它是伪文件系统的一部分。与仅用于过程信息的procfs或具有严格的每个文件一个值规则的sysfs不同,debugfs根本没有规则。
开发人员可以自由地将任何信息放入debugfs。

如何配置debugfs

Debugfs默认已启用,如需配置通过在Linux ®内核配置CONFIG_DEBUG_FS,默认设置为是。

Symbol: DEBUG_FS
Location:
  Kernel Hacking --->
    Compile-time checks and compiler options -->
      [*] Debug Filesystem
请参考Menuconfig或如何配置内核一文,以获取有关在内核源码中修改配置和重新编译Linux内核映像的说明。

入门

如何挂载debugfs

Debugfs通常使用以下命令挂载在 /sys /kernel/debug中:
Board $> mount -t debugfs none /sys/kernel/debug

如何在Linux内核驱动程序中使用debugfs

Debugfs是内核驱动程序使信息可用于用户空间的一种简单方法。
可以使用linux内核中C头文件 include/linux/debugfs.h 中的几个调用来操纵它,例如:
debugfs_create_file → for creating a file in the debug filesystem.
debugfs_create_dir → for creating a directory in the debug filesystem.
debugfs_create_symlink → for creating a symbolic link in the debug filesystem.
debugfs_create_u32 → for creating a file containing a single 32-bit unsigned integer value
debugfs_remove → for removing a debugfs entry from the debug filesytem.
...
有关更多详细信息,请参考Linux内核文档中的debugfs

如何可视化debugfs信息

在目标板上,进入debugfs安装目录:
Board $> cd /sys/kernel/debug
在此目录将找到Linux内核框架创建的所有debugfs条目。
Board $> ls -l
drwxr-xr-x   2 root root 0 Jan  1  1970 49000000.usb-otg
drwxr-xr-x   4 root root 0 Jan  1  1970 asoc
drwxr-xr-x  40 root root 0 Jan  1  1970 bdi
drwxr-xr-x  10 root root 0 Jan  1  1970 block
drwxr-xr-x   2 root root 0 Jan  1  1970 bluetooth
drwxr-xr-x   3 root root 0 May 28 15:52 cec
drwxr-xr-x 225 root root 0 Jan  1  1970 clk
drwxr-xr-x   2 root root 0 Jan  1  1970 dma_buf
drwxr-xr-x   3 root root 0 Jan  1  1970 dri
drwxr-xr-x   2 root root 0 Jan  1  1970 dynamic_debug
drwxr-xr-x   2 root root 0 Jan  1  1970 extfrag
-rw-r--r--   1 root root 0 Jan  1  1970 fault_around_bytes
drwxr-xr-x   3 root root 0 May 28 15:52 gc
-r--r--r--   1 root root 0 Jan  1  1970 gpio
drwxr-xr-x   2 root root 0 Jan  1  1970 hid
drwxr-xr-x   2 root root 0 Jan  1  1970 ieee80211
drwxr-xr-x   7 root root 0 Jan  1  1970 iio
-r--r--r--   1 root root 0 Jan  1  1970 irq_domain_mapping
drwxr-xr-x   2 root root 0 Jan  1  1970 memblock
drwxr-xr-x   3 root root 0 Jan  1  1970 mmc0
drwxr-xr-x   3 root root 0 Jan  1  1970 mmc1
drwxr-xr-x  11 root root 0 Jan  1  1970 mtd
drwxr-xr-x   4 root root 0 Jan  1  1970 pinctrl
drwxr-xr-x   4 root root 0 Jan  1  1970 pm_genpd
drwxr-xr-x   2 root root 0 Jan  1  1970 pm_qos
-r--r--r--   1 root root 0 Jan  1  1970 pwm
drwxr-xr-x   2 root root 0 Jan  1  1970 ras
drwxr-xr-x  13 root root 0 Jan  1  1970 regmap
drwxr-xr-x  21 root root 0 Jan  1  1970 regulator
drwxr-xr-x   3 root root 0 Jan  1  1970 remoteproc
-r--r--r--   1 root root 0 Jan  1  1970 sleep_time
drwxr-xr-x   3 root root 0 Jan  1  1970 stmmaceth
-r--r--r--   1 root root 0 Jan  1  1970 suspend_stats
dr-xr-xr-x   3 root root 0 Jan  1  1970 tracing
drwxr-xr-x   2 root root 0 Jan  1  1970 ubi
drwxr-xr-x   2 root root 0 Jan  1  1970 ubifs
drwxr-xr-x   4 root root 0 Jan  1  1970 usb
-r--r--r--   1 root root 0 Jan  1  1970 wakeup_sources
然后,您可以浏览以查找所需的信息。
  • 一些例子:
列出唤醒源:
Board $> cat /sys/kernel/debug/wakeup_sources
name            active_count    event_count     wakeup_count    expire_count    active_since    total_time      max_time        last_change     prevent_suspend_time
5c002000.i2c:stpmu1@33:onkey    0               0               0               0               0               0               0               4075            0
0-0033          0               0               0               0               0               0               0               3949            0
alarmtimer      0               0               0               0               0               0               0               3901            0
5c004000.rtc    1               1               0               0               0               0               0               5246            0
deleted         0               0               0               0               0               0               0               0               0
获取时钟设置摘要:
Board $> cat /sys/kernel/debug/clk/clk_summary
  clock                         enable_cnt  prepare_cnt        rate   accuracy   phase
----------------------------------------------------------------------------------------
ck_usbo_48m                              1            1    48000000          0 0  
   usbo_k                                1            1    48000000          0 0  
ck_dsi_phy                               1            1           0          0 0  
   dsi_k                                 1            1           0          0 0  
i2s_ckin                                 0            0           0          0 0  
clk-csi                                  1            1     4000000          0 0  
   ck_csi                                1            1     4000000          0 0  
      rng2_k                             0            0     4000000          0 0  
      rng1_k                             0            0     4000000          0 0  
clk-lsi                                  1            1       32000          0 0  
   ck_lsi                                1            1       32000          0 0  
      dac12_k                            0            0       32000          0 0  
clk-lse                                  1            1       32768          0 0  
   ck_lse                                1            1       32768          0 0  
      ck_rtc                             2            2       32768          0 0  
         rtc_lsco                        1            1       32768          0 0  
      lptim5_k                           0            0       32768          0 0  
      lptim4_k                           0            0       32768          0 0  
      cec_k                              0            0       32768          0 0  
clk-hsi                                  1            1    64000000          0 0  
   clk-hsi-div                           1            1    64000000          0 0  
      ck_hsi                             2            2    64000000          0 0  
         ck_mco1                         0            0    64000000          0 0  
         uart8_k                         0            0    64000000          0 0  
         uart7_k                         0            0    64000000          0 0  
         uart6_k                         0            0    64000000          0 0  
         uart5_k                         0            0    64000000          0 0  
         uart4_k                         1            1    64000000          0 0  
         usart3_k                        0            0    64000000          0 0  
         usart2_k                        1            1    64000000          0 0  
         usart1_k                        0            0    64000000          0 0  
         i2c6_k                          0            0    64000000          0 0  
         i2c4_k                          0            0    64000000          0 0  
         i2c5_k                          0            0    64000000          0 0  
         i2c3_k                          0            0    64000000          0 0  
         i2c2_k                          0            0    64000000          0 0  
         i2c1_k                          0            0    64000000          0 0  
         spi6_k                          0            0    64000000          0 0  
         spi5_k                          0            0    64000000          0 0  
         spi4_k                          0            0    64000000          0 0  
clk-hse                                  1            1    24000000          0 0  
   ck_hse                                7            7    24000000          0 0  
      ck_hse_rtc                         0            0     1000000          0 0  
      stgen_k                            1            1    24000000          0 0  
      usbphy_k                           1            1    24000000          0 0  
      ck_per                             1            1    24000000          0 0  
         adc12_k                         1            1    24000000          0 0  
      ref4                               1            1    24000000          0 0  
         pll4                            1            1   594000000          0 0  
            pll4_r                       0            0    74250000          0 0  
            pll4_q                       1            1    31263158          0 0  
               ltdc_px                   1            1    31263158          0 0  
               dsi_px                    0            0    31263158          0 0  
               fdcan_k                   0            0    31263158          0 0  
            pll4_p                       0            0    74250000          0 0  
      ref3                               1            1    24000000          0 0  
         pll3                            2            3   786431640          0 0  
            pll3_r                       1            1    98303955          0 0  
               sdmmc3_k                  0            0    98303955          0 0  
               sdmmc2_k                  1            1    98303955          0 0  
               sdmmc1_k                  0            0    98303955          0 0  
            pll3_q                       0            1    49151978          0 0  
               adfsdm_k                  0            0    49151978          0 0  
               sai4_k                    0            0    49151978          0 0  
               sai3_k                    0            0    49151978          0 0  
               sai2_k                    0            2    49151978          0 0  
               sai1_k                    0            0    49151978          0 0  
               spi3_k                    0            0    49151978          0 0  
               spi2_k                    0            0    49151978          0 0  
               spi1_k                    0            0    49151978          0 0  
               spdif_k                   0            0    49151978          0 0  
            pll3_p                       1            1   196607910          0 0  
               ck_mcu                    6           16   196607910          0 0  
                  dfsdm_k                0            0   196607910          0 0  
                  gpiok                  0            0   196607910          0 0  
                  gpioj                  0            0   196607910          0 0  
                  gpioi                  0            1   196607910          0 0  
                  gpioh                  0            1   196607910          0 0  
                  gpiog                  0            1   196607910          0 0  
                  gpiof                  0            1   196607910          0 0  
                  gpioe                  0            1   196607910          0 0  
                  gpiod                  0            1   196607910          0 0  
                  gpioc                  0            1   196607910          0 0  
                  gpiob                  0            1   196607910          0 0  
                  gpioa                  0            1   196607910          0 0  
                  ipcc                   2            2   196607910          0 0  
                  hsem                   0            0   196607910          0 0  
                  crc2                   0            0   196607910          0 0  
                  rng2                   0            0   196607910          0 0  
                  hash2                  0            0   196607910          0 0  
                  cryp2                  0            0   196607910          0 0  
                  dcmi                   0            0   196607910          0 0  
                  sdmmc3                 0            0   196607910          0 0  
                  usbo                   0            0   196607910          0 0  
                  adc12                  1            1   196607910          0 0  
                  dmamux                 1            1   196607910          0 0  
                  dma2                   0            0   196607910          0 0  
                  dma1                   1            1   196607910          0 0  
                  pclk3                  1            1    98303955          0 0  
                     lptim3_k            0            0    98303955          0 0  
                     lptim2_k            0            0    98303955          0 0  
                     hdp                 0            0    98303955          0 0  
                     pmbctrl             0            0    98303955          0 0  
                     tmpsens             0            0    98303955          0 0  
                     vref                0            0    98303955          0 0  
                     syscfg              1            1    98303955          0 0  
                     sai4                0            0    98303955          0 0  
                     lptim5              0            0    98303955          0 0  
                     lptim4              0            0    98303955          0 0  
                     lptim3              0            0    98303955          0 0  
                     lptim2              0            0    98303955          0 0  
                  pclk2                  0            0    98303955          0 0  
                     fdcan               0            0    98303955          0 0  
                     dfsdm               0            0    98303955          0 0  
                     sai3                0            0    98303955          0 0  
                     sai2                0            0    98303955          0 0  
                     sai1                0            0    98303955          0 0  
                     usart6              0            0    98303955          0 0  
                     spi5                0            0    98303955          0 0  
                     spi4                0            0    98303955          0 0  
                     spi1                0            0    98303955          0 0  
                     tim17               0            0    98303955          0 0  
                     tim16               0            0    98303955          0 0  
                     tim15               0            0    98303955          0 0  
                     tim8                0            0    98303955          0 0  
                     tim1                0            0    98303955          0 0  
                     ck2_tim             0            0   196607910          0 0  
                        tim17_k           0            0   196607910          0 0  
                        tim16_k           0            0   196607910          0 0  
                        tim15_k           0            0   196607910          0 0  
                        tim8_k           0            0   196607910          0 0  
                        tim1_k           0            0   196607910          0 0  
                  pclk1                  0            2    98303955          0 0  
                     lptim1_k            0            0    98303955          0 0  
                     mdio                0            0    98303955          0 0  
                     dac12               0            0    98303955          0 0  
                     cec                 0            0    98303955          0 0  
                     spdif               0            0    98303955          0 0  
                     i2c5                0            0    98303955          0 0  
                     i2c3                0            0    98303955          0 0  
                     i2c2                0            0    98303955          0 0  
                     i2c1                0            0    98303955          0 0  
                     uart8               0            0    98303955          0 0  
                     uart7               0            0    98303955          0 0  
                     uart5               0            0    98303955          0 0  
                     uart4               0            0    98303955          0 0  
                     usart3              0            0    98303955          0 0  
                     usart2              0            0    98303955          0 0  
                     spi3                0            0    98303955          0 0  
                     spi2                0            1    98303955          0 0  
                     lptim1              0            0    98303955          0 0  
                     tim14               0            0    98303955          0 0  
                     tim13               0            0    98303955          0 0  
                     tim12               0            0    98303955          0 0  
                     tim7                0            0    98303955          0 0  
                     tim6                0            0    98303955          0 0  
                     tim5                0            0    98303955          0 0  
                     tim4                0            0    98303955          0 0  
                     tim3                0            0    98303955          0 0  
                     tim2                0            0    98303955          0 0  
                     ck1_tim             0            1   196607910          0 0  
                        tim14_k           0            0   196607910          0 0  
                        tim13_k           0            0   196607910          0 0  
                        tim12_k           0            0   196607910          0 0  
                        tim7_k           0            0   196607910          0 0  
                        tim6_k           0            1   196607910          0 0  
                        tim5_k           0            0   196607910          0 0  
                        tim4_k           0            0   196607910          0 0  
                        tim3_k           0            0   196607910          0 0  
                        tim2_k           0            0   196607910          0 0  
      ref1                               2            2    24000000          0 0  
         pll2                            2            2   533000000          0 0  
            pll2_r                       1            1   533000000          0 0  
            pll2_q                       0            0   533000000          0 0  
               gpu_k                     0            0   533000000          0 0  
            pll2_p                       1            1   266500000          0 0  
               ck_axi                    8            9   266500000          0 0  
                  ck_trace               0            0   133250000          0 0  
                  ck_sys_dbg             0            0   266500000          0 0  
                  qspi_k                 0            0   266500000          0 0  
                  fmc_k                  0            0   266500000          0 0  
                  ethstp                 0            0   266500000          0 0  
                  usbh                   1            1   266500000          0 0  
                  crc1                   0            0   266500000          0 0  
                  sdmmc2                 0            0   266500000          0 0  
                  sdmmc1                 0            0   266500000          0 0  
                  qspi                   0            0   266500000          0 0  
                  fmc                    0            0   266500000          0 0  
                  ethmac                 1            1   266500000          0 0  
                  ethrx                  1            1   266500000          0 0  
                  ethtx                  1            1   266500000          0 0  
                  gpu                    0            0   266500000          0 0  
                  mdma                   1            1   266500000          0 0  
                  bkpsram                0            0   266500000          0 0  
                  rng1                   0            0   266500000          0 0  
                  hash1                  0            0   266500000          0 0  
                  cryp1                  0            0   266500000          0 0  
                  gpioz                  0            1   266500000          0 0  
                  tzc2                   0            0   266500000          0 0  
                  tzc1                   0            0   266500000          0 0  
                  pclk5                  1            1    66625000          0 0  
                     stgen               0            0    66625000          0 0  
                     bsec                0            0    66625000          0 0  
                     iwdg1               0            0    66625000          0 0  
                     tzpc                0            0    66625000          0 0  
                     rtcapb              2            2    66625000          0 0  
                     usart1              0            0    66625000          0 0  
                     i2c6                0            0    66625000          0 0  
                     i2c4                0            0    66625000          0 0  
                     spi6                0            0    66625000          0 0  
                  pclk4                  1            1   133250000          0 0  
                     stgenro             0            0   133250000          0 0  
                     usbphy              0            0   133250000          0 0  
                     iwdg2               1            1   133250000          0 0  
                     dsi                 0            0   133250000          0 0  
                     ltdc                0            0   133250000          0 0  
         pll1                            1            1   650000000          0 0  
            pll1_p                       1            1   650000000          0 0  
               ck_mpu                    1            1   650000000          0 0  
                  ck_mco2                0            0   650000000          0 0  
      clk-hse-div2                       0            0    12000000          0 0  
ethptp_k                                 0            0           0          0 0  
ethck_k                                  0            0           0          0 0
获取电源相关设置的摘要:
Board $> cat /sys/kernel/debug/regulator/regulator_summary
regulator                      use open bypass voltage current     min     max
-------------------------------------------------------------------------------
regulator-dummy                  0   11      0     0mV     0mA     0mV     0mV 
   49000000.usb-otg                                                0mV     0mV
   49000000.usb-otg                                                0mV     0mV
   5a000000.dsi.0                                                  0mV     0mV
   vddcore                       0    0      0  1200mV     0mA   800mV  1350mV 
   vdd_ddr                       0    1      0  1350mV     0mA  1350mV  1350mV 
      vtt_ddr                    0    0      0   675mV     0mA   675mV   675mV 
   vdd                           0    1      0  3300mV     0mA  3300mV  3300mV 
      vref                       1    1      0  2500mV     0mA  2500mV  2500mV 
         48003000.adc                                              0mV     0mV
   v3v3                          0    5      0  3300mV     0mA  3300mV  3300mV 
      0-004a                                                       0mV     0mV
      58007000.sdmmc                                            3300mV  3300mV
      58005000.sdmmc                                            3300mV  3300mV
      v1v8_audio                 0    3      0  1800mV     0mA  1800mV  1800mV 
         0-004a                                                    0mV     0mV
         0-004a                                                    0mV     0mV
         0-004a                                                    0mV     0mV
      v1v2_hdmi                  0    1      0  1200mV     0mA  1200mV  1200mV 
         0-0039                                                    0mV     0mV
   v3v3_hdmi                     0    1      0  3300mV     0mA  3300mV  3300mV 
      0-0039                                                       0mV     0mV
   vdd_usb                       2    2      0  3300mV     0mA  3300mV  3300mV 
      phy-5a006000.usbphyc.1                                       0mV     0mV
      phy-5a006000.usbphyc.0                                       0mV     0mV
   vdda                          0    0      0  2900mV     0mA  2900mV  2900mV 
   bst_out                       0    2      0  5000mV     0mA     0mV     0mV 
      vbus_otg                   0    0      0  5000mV     0mA     0mV     0mV 
      vbus_sw                    0    0      0  5000mV     0mA     0mV     0mV 
reg11                            1    1      0  1100mV     0mA  1100mV  1100mV 
   5a006000.usbphyc                                                0mV     0mV
reg18                            2    2      0  1800mV     0mA  1800mV  1800mV 
   5a006000.usbphyc                                                0mV     0mV
   5a000000.dsi                                                    0mV     0mV
usb33                            1    1      0  3300mV     0mA  3300mV  3300mV 
   49000000.usb-otg                                                0mV     0mV
vref_ddr                         0    0      0   675mV     0mA     0mV     0mV
列出引脚控制相关设置
Board $> cat /sys/kernel/debug/pinctrl/soc\:pin-controller@50002000/pinconf-pins
Pin config settings per pin
Format: pin (name): configs
pin 0 (PA0): analog 
pin 1 (PA1): alternate 11 (ETH1_GMII_RX_CLK ETH1_MII_RX_CLK ETH1_RGMII_RX_CLK ETH1_RMII_REF_CLK) - push pull - floating - low speed
pin 2 (PA2): alternate 11 (ETH1_MDIO) - push pull - floating - very high speed
pin 3 (PA3): alternate 14 (LCD_B5) - push pull - floating - high speed
pin 4 (PA4): analog 
pin 5 (PA5): analog 
pin 6 (PA6): analog 
pin 7 (PA7): alternate 11 (ETH1_GMII_RX_DV ETH1_MII_RX_DV ETH1_RGMII_RX_CTL ETH1_RMII_CRS_DV) - push pull - floating - low speed
pin 8 (PA8): analog 
pin 9 (PA9): analog 
pin 10 (PA10): output - high - push pull - floating - low speed
pin 11 (PA11): analog 
pin 12 (PA12): analog 
pin 13 (PA13): output - low - open drain - floating - very high speed
pin 14 (PA14): input - high - floating
pin 15 (PA15): analog 
pin 16 (PB0): alternate 11 (ETH1_GMII_RXD2 ETH1_MII_RXD2 ETH1_RGMII_RXD2) - push pull - floating - low speed
pin 17 (PB1): alternate 11 (ETH1_GMII_RXD3 ETH1_MII_RXD3 ETH1_RGMII_RXD3) - push pull - floating - low speed
pin 18 (PB2): alternate 8 (UART4_RX) - push pull - floating - low speed
pin 19 (PB3): alternate 9 (SDMMC2_D2) - push pull - pull up - very high speed
pin 20 (PB4): alternate 9 (SDMMC2_D3) - push pull - pull up - very high speed
pin 21 (PB5): analog 
pin 22 (PB6): alternate 5 (CEC) - open drain - floating - low speed
pin 23 (PB7): analog 
pin 24 (PB8): alternate 14 (LCD_B6) - push pull - floating - high speed
pin 25 (PB9): analog 
pin 26 (PB10): analog 
pin 27 (PB11): alternate 11 (ETH1_GMII_TX_EN ETH1_MII_TX_EN ETH1_RGMII_TX_CTL ETH1_RMII_TX_EN) - push pull - floating - very high speed
pin 28 (PB12): analog 
pin 29 (PB13): analog 
pin 30 (PB14): alternate 9 (SDMMC2_D0) - push pull - pull up - very high speed
pin 31 (PB15): alternate 9 (SDMMC2_D1) - push pull - pull up - very high speed
pin 32 (PC0): alternate 14 (LCD_R5) - push pull - floating - high speed
pin 33 (PC1): alternate 11 (ETH1_MDC) - push pull - floating - very high speed
pin 34 (PC2): alternate 11 (ETH1_GMII_TXD2 ETH1_MII_TXD2 ETH1_RGMII_TXD2) - push pull - floating - very high speed
pin 35 (PC3): analog 
pin 36 (PC4): alternate 11 (ETH1_GMII_RXD0 ETH1_MII_RXD0 ETH1_RGMII_RXD0 ETH1_RMII_RXD0) - push pull - floating - low speed
pin 37 (PC5): alternate 11 (ETH1_GMII_RXD1 ETH1_MII_RXD1 ETH1_RGMII_RXD1 ETH1_RMII_RXD1) - push pull - floating - low speed
pin 38 (PC6): analog 
pin 39 (PC7): analog 
pin 40 (PC8): analog 
pin 41 (PC9): analog 
pin 42 (PC10): analog 
pin 43 (PC11): analog 
pin 44 (PC12): analog 
pin 45 (PC13): analog 
pin 46 (PC14): analog 
pin 47 (PC15): analog 
pin 48 (PD0): analog 
pin 49 (PD1): analog 
pin 50 (PD2): analog 
pin 51 (PD3): alternate 7 (USART2_CTS USART2_NSS) - push pull - floating - low speed
pin 52 (PD4): alternate 7 (USART2_RTS USART2_DE) - push pull - floating - very high speed
pin 53 (PD5): alternate 7 (USART2_TX) - push pull - floating - very high speed
pin 54 (PD6): alternate 7 (USART2_RX) - push pull - floating - low speed
pin 55 (PD7): analog 
pin 56 (PD8): alternate 14 (LCD_B7) - push pull - floating - high speed
pin 57 (PD9): alternate 14 (LCD_B0) - push pull - floating - high speed
pin 58 (PD10): alternate 14 (LCD_B3) - push pull - floating - high speed
pin 59 (PD11): output - low - push pull - floating - low speed
pin 60 (PD12): alternate 5 (I2C1_SCL) - open drain - floating - low speed
pin 61 (PD13): analog 
pin 62 (PD14): analog 
pin 63 (PD15): analog 
pin 64 (PE0): alternate 10 (SAI2_MCLK_A) - push pull - floating - high speed
pin 65 (PE1): analog 
pin 66 (PE2): alternate 11 (ETH1_GMII_TXD3 ETH1_MII_TXD3 ETH1_RGMII_TXD3) - push pull - floating - very high speed
pin 67 (PE3): alternate 9 (SDMMC2_CK) - push pull - pull up - very high speed
pin 68 (PE4): output - high - push pull - floating - low speed
pin 69 (PE5): alternate 14 (LCD_G0) - push pull - floating - high speed
pin 70 (PE6): alternate 14 (LCD_G1) - push pull - floating - high speed
pin 71 (PE7): analog 
pin 72 (PE8): analog 
pin 73 (PE9): analog 
pin 74 (PE10): analog 
pin 75 (PE11): analog 
pin 76 (PE12): analog 
pin 77 (PE13): analog 
pin 78 (PE14): analog 
pin 79 (PE15): alternate 14 (LCD_R7) - push pull - floating - high speed
pin 80 (PF0): analog 
pin 81 (PF1): analog 
pin 82 (PF2): input - high - floating
pin 83 (PF3): analog 
pin 84 (PF4): analog 
pin 85 (PF5): analog 
pin 86 (PF6): analog 
pin 87 (PF7): analog 
pin 88 (PF8): analog 
pin 89 (PF9): analog 
pin 90 (PF10): alternate 14 (LCD_DE) - push pull - floating - high speed
pin 91 (PF11): alternate 10 (SAI2_SD_B) - push pull - floating - low speed
pin 92 (PF12): analog 
pin 93 (PF13): analog 
pin 94 (PF14): analog 
pin 95 (PF15): alternate 5 (I2C1_SDA) - open drain - floating - low speed
pin 96 (PG0): analog 
pin 97 (PG1): input - high - floating
pin 98 (PG2): analog 
pin 99 (PG3): analog 
pin 100 (PG4): alternate 11 (ETH1_GMII_GTX_CLK ETH1_RGMII_GTX_CLK) - push pull - floating - very high speed
pin 101 (PG5): alternate 11 (ETH1_GMII_CLK125 ETH1_RGMII_CLK125) - push pull - floating - very high speed
pin 102 (PG6): alternate 10 (SDMMC2_CMD) - push pull - pull up - very high speed
pin 103 (PG7): alternate 14 (LCD_CLK) - push pull - floating - high speed
pin 104 (PG8): analog 
pin 105 (PG9): output - high - push pull - floating - low speed
pin 106 (PG10): alternate 14 (LCD_B2) - push pull - floating - high speed
pin 107 (PG11): alternate 6 (UART4_TX) - push pull - floating - low speed
pin 108 (PG12): alternate 14 (LCD_B1) - push pull - floating - high speed
pin 109 (PG13): alternate 11 (ETH1_GMII_TXD0 ETH1_MII_TXD0 ETH1_RGMII_TXD0 ETH1_RMII_TXD0) - push pull - floating - very high speed
pin 110 (PG14): alternate 11 (ETH1_GMII_TXD1 ETH1_MII_TXD1 ETH1_RGMII_TXD1 ETH1_RMII_TXD1) - push pull - floating - very high speed
pin 111 (PG15): analog 
pin 112 (PH0): analog 
pin 113 (PH1): analog 
pin 114 (PH2): alternate 14 (LCD_R0) - push pull - floating - high speed
pin 115 (PH3): alternate 14 (LCD_R1) - push pull - floating - high speed
pin 116 (PH4): output - high - push pull - floating - low speed
pin 117 (PH5): analog 
pin 118 (PH6): analog 
pin 119 (PH7): analog 
pin 120 (PH8): alternate 14 (LCD_R2) - push pull - floating - high speed
pin 121 (PH9): alternate 14 (LCD_R3) - push pull - floating - high speed
pin 122 (PH10): alternate 14 (LCD_R4) - push pull - floating - high speed
pin 123 (PH11): analog 
pin 124 (PH12): alternate 14 (LCD_R6) - push pull - floating - high speed
pin 125 (PH13): alternate 14 (LCD_G2) - push pull - floating - high speed
pin 126 (PH14): alternate 14 (LCD_G3) - push pull - floating - high speed
pin 127 (PH15): alternate 14 (LCD_G4) - push pull - floating - high speed
pin 128 (PI0): alternate 14 (LCD_G5) - push pull - floating - high speed
pin 129 (PI1): alternate 14 (LCD_G6) - push pull - floating - high speed
pin 130 (PI2): alternate 14 (LCD_G7) - push pull - floating - high speed
pin 131 (PI3): analog 
pin 132 (PI4): alternate 14 (LCD_B4) - push pull - floating - high speed
pin 133 (PI5): alternate 10 (SAI2_SCK_A) - push pull - floating - medium speed
pin 134 (PI6): alternate 10 (SAI2_SD_A) - push pull - floating - medium speed
pin 135 (PI7): alternate 10 (SAI2_FS_A) - push pull - floating - medium speed
pin 136 (PI8): analog 
pin 137 (PI9): alternate 14 (LCD_VSYNC) - push pull - floating - high speed
pin 138 (PI10): alternate 14 (LCD_HSYNC) - push pull - floating - high speed
pin 139 (PI11): analog
获取GPIO引脚设置
Board $> cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-15, parent: platform/soc:pin-controller@50002000, GPIOA:
 gpio-10  (                    |reset               ) out lo

gpiochip1: GPIOs 16-31, parent: platform/soc:pin-controller@50002000, GPIOB:

gpiochip2: GPIOs 32-47, parent: platform/soc:pin-controller@50002000, GPIOC:

gpiochip3: GPIOs 48-63, parent: platform/soc:pin-controller@50002000, GPIOD:
 gpio-59  (                    |heartbeat           ) out lo

gpiochip4: GPIOs 64-79, parent: platform/soc:pin-controller@50002000, GPIOE:
 gpio-68  (                    |reset               ) out hi

gpiochip5: GPIOs 80-95, parent: platform/soc:pin-controller@50002000, GPIOF:

gpiochip6: GPIOs 96-111, parent: platform/soc:pin-controller@50002000, GPIOG:
 gpio-105 (                    |reset               ) out hi    

gpiochip7: GPIOs 112-127, parent: platform/soc:pin-controller@50002000, GPIOH:
 gpio-116 (                    |reset               ) out hi    

gpiochip8: GPIOs 128-143, parent: platform/soc:pin-controller@50002000, GPIOI:

gpiochip9: GPIOs 400-415, parent: platform/soc:pin-controller-z@54004000, GPIOZ:

进阶

Regmap(寄存器映射)缓存

Debugfs包含一个基于regmap API的驱动程序/外围设备的寄存器缓存(镜像)。
Regmap是Linux内核的寄存器映射抽象API。它主要用于串行总线设备驱动程序(I2C和SPI),但也可以用于内部外围设备驱动程序。
这些驱动程序中有许多包含一些非常相似的代码,用于访问已连接的硬件设备寄存器。
regmap内核API提出了一种解决方案,该解决方案将这些代码从驱动程序中剔除,从而节省了代码并使其更易于共享基础架构。

regmap寄存器高速缓存在debugfs中的路径
Board $> cd /sys/kernel/debug/regmap
基于regmap API的驱动程序的设备列表:
Board $> ls -la .
total 0
drwxr-xr-x 18 root root 0 Jan  1  1970 .
drwx------ 32 root root 0 Jan  1  1970 ..
drwxr-xr-x  2 root root 0 Jan  1  1970 0-001b
drwxr-xr-x  2 root root 0 Jan  1  1970 0-0042
drwxr-xr-x  2 root root 0 Jan  1  1970 2-0033
drwxr-xr-x  2 root root 0 Jan  1  1970 40004000.timer
drwxr-xr-x  2 root root 0 Jan  1  1970 4000d000.audio-controller
drwxr-xr-x  2 root root 0 Nov 30 12:19 40016000.cec
drwxr-xr-x  2 root root 0 Jan  1  1970 40017000.dac
drwxr-xr-x  2 root root 0 Jan  1  1970 4400b004.audio-controller
drwxr-xr-x  2 root root 0 Jan  1  1970 4400b024.audio-controller
drwxr-xr-x  2 root root 0 Jan  1  1970 4400d000.dfsdm
drwxr-xr-x  2 root root 0 Jan  1  1970 50027004.audio-controller
drwxr-xr-x  2 root root 0 Jan  1  1970 dummy-interrupt-controller@5000d000
drwxr-xr-x  2 root root 0 Jan  1  1970 dummy-pwr@50001000
drwxr-xr-x  2 root root 0 Jan  1  1970 dummy-rcc@50000000
drwxr-xr-x  2 root root 0 Jan  1  1970 dummy-syscon@50020000
drwxr-xr-x  2 root root 0 Jan  1  1970 dummy-tamp@5c00a000
检查相应的驱动程序:2-0033 regmap条目的示例
Board $> cat 2-0033/name
stpmic1
然后,在STM32MPU设备树文件上,可以检查设备以及相应的驱动程序
pmic: stpmic@33 {
	compatible = "st,stpmic1";
	reg = <0x33>;
	interrupts-extended = <&exti_pwr 55 IRQ_TYPE_EDGE_FALLING>;
	interrupt-controller;
	#interrupt-cells = <2>;
	status = "okay";
:基于regmap API的驱动程序的设备列表:
Regmap条目,由dummy- 声明
当没有关联的/ dev条目(devtmpfs)时,将设置这种条目。
要在设备树中找到相应的节点,可以在dummy-之后查找后缀名称:
dummy-interrupt-controller@5000d000的示例
exti: interrupt-controller@5000d000 {
	compatible = "st,stm32mp1-exti", "syscon";
	interrupt-controller;
	#interrupt-cells = <2>;
	reg = <0x5000d000 0x400>;
};
寄存器列表:2-0033 regmap条目的示例
Board $> cat 2-0033/registers
01: 10
02: 00
03: 00
04: 00
05: 60
06: 10
10: 04
11: 00
12: 00
13: 00
14: 00
15: c0
16: 00
17: 00
18: 04
19: 00
1a: 00
1b: 00
1c: 00
1d: 0f
1e: 04
20: 61
21: 79
22: d9
23: d9
24: 01
25: 51
26: 4c
27: 7d
28: 01
29: 51
2a: 25
30: 61
31: 50
32: d9
33: d9
34: 00
35: 24
36: 24
37: 24
38: 01
39: 51
3a: 04
40: 35
50: 00
51: 00
52: 00
53: 80
60: 00
61: 00
62: 00
63: 00
70: 00
71: 00
72: 00
73: 00
80: fc
81: 8f
82: c4
83: cf
90: fc
91: 8f
92: c4
93: cf
a0: 03
a1: 70
a2: 3b
a3: 00
b0: 00
b1: 00
b2: 00
b3: 80
第一列代表寄存器地址,第二列代表寄存器值。
有关寄存器的定义,请参考设备规范。

参考链接

  1. https://github.com/STMicroelectronics/linux/blob/v4.19-stm32mp/Documentation/filesystems/debugfs.txt
  2. https://opensourceforu.com/2010/10/debugging-linux-kernel-with-debugfs
  3. https://elinux.org/images/a/a3/Regmap-_The_Power_of_Subsystems_and_Abstractions.pdf