“Debugfs”的版本间的差异
来自百问网嵌入式Linux wiki
第1行: | 第1行: | ||
− | [[Category:Linux_Operating_System]] | + | =简介= |
− | [[Category:Linux_monitoring_tools]] | + | 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]] |
2019年12月7日 (六) 12:13的版本
目录
简介
Debugfs是一个简单易用的基于RAM的文件系统,专门用于调试目的。
它是内核开发人员使信息可用于用户空间的一种简单方法。
它是伪文件系统的一部分。与仅用于过程信息的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
- 第一列代表寄存器地址,第二列代表寄存器值。
- 有关寄存器的定义,请参考设备规范。