匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“Debugfs”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
调试文件系统(debugfs)
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
=简介= Debugfs是一个简单易用的基于RAM的文件系统,专门用于调试目的。<br> 它是内核开发人员使信息可用于用户空间的一种简单方法。<br> 它是伪文件系统的一部分。与仅用于过程信息的procfs或具有严格的每个文件一个值规则的sysfs不同,debugfs根本没有规则。<br> 开发人员可以自由地将任何信息放入debugfs。<br> =如何配置debugfs= Debugfs默认已启用,如需配置通过在Linux ®内核配置CONFIG_DEBUG_FS,默认设置为是。 <syntaxhighlight lang="bash" highlight="1,5" start='1' > Symbol: DEBUG_FS Location: Kernel Hacking ---> Compile-time checks and compiler options --> [*] Debug Filesystem </syntaxhighlight> :请参考Menuconfig或如何配置内核一文,以获取有关在内核源码中修改配置和重新编译Linux内核映像的说明。 =入门= ==如何挂载debugfs== :Debugfs通常使用以下命令挂载在 /sys /kernel/debug中: Board $> mount -t debugfs none /sys/kernel/debug ==如何在Linux内核驱动程序中使用debugfs== :Debugfs是内核驱动程序使信息可用于用户空间的一种简单方法。 : 可以使用linux内核中C头文件 include/linux/debugfs.h 中的几个调用来操纵它,例如: <syntaxhighlight lang="bash"> 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. ... </syntaxhighlight> :有关更多详细信息,请参考Linux内核文档中的debugfs ==如何可视化debugfs信息== :在目标板上,进入debugfs安装目录: Board $> cd /sys/kernel/debug :在此目录将找到Linux内核框架创建的所有debugfs条目。 Board $> ls -l <syntaxhighlight lang="bash"> 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 </syntaxhighlight> :然后,您可以浏览以查找所需的信息。 *一些例子: :列出唤醒源: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> :获取时钟设置摘要: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> :获取电源相关设置的摘要: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> :列出引脚控制相关设置 <syntaxhighlight lang="bash"> 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 </syntaxhighlight> :获取GPIO引脚设置 <syntaxhighlight lang="bash"> 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: </syntaxhighlight> =进阶= ==Regmap(寄存器映射)缓存== Debugfs包含一个基于regmap API的驱动程序/外围设备的寄存器缓存(镜像)。<br> Regmap是Linux内核的寄存器映射抽象API。它主要用于串行总线设备驱动程序(I2C和SPI),但也可以用于内部外围设备驱动程序。<br> 这些驱动程序中有许多包含一些非常相似的代码,用于访问已连接的硬件设备寄存器。<br> regmap内核API提出了一种解决方案,该解决方案将这些代码从驱动程序中剔除,从而节省了代码并使其更易于共享基础架构。<br> :regmap寄存器高速缓存在debugfs中的路径 Board $> cd /sys/kernel/debug/regmap :基于regmap API的驱动程序的设备列表: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> :检查相应的驱动程序:2-0033 regmap条目的示例 Board $> cat 2-0033/name stpmic1 ::然后,在STM32MPU设备树文件上,可以检查设备以及相应的驱动程序 <syntaxhighlight lang="bash"> 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的驱动程序的设备列表: </syntaxhighlight> :Regmap条目,由dummy- 声明 ::当没有关联的/ dev条目(devtmpfs)时,将设置这种条目。 ::要在设备树中找到相应的节点,可以在dummy-之后查找后缀名称: :: dummy-interrupt-controller@5000d000的示例 <syntaxhighlight lang="bash"> exti: interrupt-controller@5000d000 { compatible = "st,stm32mp1-exti", "syscon"; interrupt-controller; #interrupt-cells = <2>; reg = <0x5000d000 0x400>; }; </syntaxhighlight> :寄存器列表:2-0033 regmap条目的示例 <syntaxhighlight lang="bash"> 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 </syntaxhighlight> :第一列代表寄存器地址,第二列代表寄存器值。 :有关寄存器的定义,请参考设备规范。 =参考链接= #https://github.com/STMicroelectronics/linux/blob/v4.19-stm32mp/Documentation/filesystems/debugfs.txt #https://opensourceforu.com/2010/10/debugging-linux-kernel-with-debugfs #https://elinux.org/images/a/a3/Regmap-_The_Power_of_Subsystems_and_Abstractions.pdf *扩展参考 **调试指南 https://lwn.net/Articles/334546/ **debugfs维基百科说明 https://en.wikipedia.org/wiki/Debugfs **减少Linux代码冗余 https://opensourceforu.com/2017/01/regmap-reducing-redundancy-linux-code/ [[Category:Linux_Operating_System]][[Category:Linux_monitoring_tools]]
返回至
调试文件系统(debugfs)
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志