linux debugfs使用---软件查看gpio状态

本文介绍如何通过debugfs在Android设备上查看GPIO状态、调节电压及检查时钟配置等,帮助开发者更高效地进行内核调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调试中加入debugfs有时可以起到事半功倍的效果(注意:一般我使用的时候位于目录/sys/kernel/debug):

adb shell
#mkdir /data/debug
#mount -t debugfs debugfs /data/debug
#cd /data/debug

查看gpio状态

root@android:/data/debugfs # cat gpio
GPIOs 0-15:
 gpio-0   (front_camera_rst    ) out lo

GPIOs 16-42:
 gpio-17  (tsl2771_int         ) in  hi
 gpio-26  (ctp_reset           ) out hi
 gpio-29  (front_camera_pwd    ) out hi
 gpio-31  (gpio_kp_out         ) out lo
 gpio-32  (gpio_kp_out         ) out lo
 gpio-35  (GPIO_E186_POWER     ) in  lo
 gpio-36  (gpio_kp_in          ) in  hi
 gpio-37  (gpio_kp_in          ) in  hi
 gpio-42  (hs_sw               ) in  hi

查看regulator
root@android:/data/debugfs # cd
regulator/                                    
dummy/ ldo03/ ldo06/ ldo09/ ldo12/ ldo15/ ldo18/ smps1/ smps4/
ldo01/ ldo04/ ldo07/ ldo10/ ldo13/ ldo16/ ldo19/ smps2/
ldo02/ ldo05/ ldo08/ ldo11/ ldo14/ ldo17/ ncp/   smps3/
root@android:/data/debugfs # cat
regulator/ldo10/voltage                      
3000000

查看clk
root@android:/ #
cat /data/debugfs/clk/                                       
adm_clk/                  ebi_mddi_clk/
sdc1_p_clk/          
adsp_clk/                 ebi_vfe_clk/
sdc2_clk/            
ahb_m_clk/                ecodec_clk/
sdc2_p_clk/          
ahb_s_clk/                gp_clk/
sdc3_clk/            
cam_m_clk/                grp_3d_clk/
sdc3_p_clk/          
csi0_clk/                 grp_3d_p_clk/
sdc4_clk/            
csi0_p_clk/               gsbi1_qup_clk/
sdc4_p_clk/          
csi0_vfe_clk/             gsbi1_qup_p_clk/
tsif_p_clk/          
csi1_clk/                 gsbi2_qup_clk/
tsif_ref_clk/        
csi1_p_clk/               gsbi2_qup_p_clk/
uart1_clk/           
csi1_vfe_clk/             icodec_rx_clk/
uart1dm_clk/         
debug_suspend             icodec_tx_clk/
uart2_clk/           
dsi_byte_clk/             imem_clk/
uart2dm_clk/         


root@android:/ #
cat /data/debugfs/clk/mdp_clk/rate                           
200000000

http://blog.youkuaiyun.com/linux_devices_driver/article/details/8300094
<think>嗯,用户想知道Linux系统中GPIO上电时的默认配置。首先,我需要回忆一下GPIO和pinctrl子系统的相关知识。根据引用内容,pinctrl子系统负责管脚的复用和电气属性,而GPIO子系统管理GPIO的输入输出等操作。 那上电时的默认配置可能由硬件决定,比如芯片的数据手册会有初始状态。然后,Linux启动时,pinctrl子系统可能会根据设备树中的配置来设置GPIO的状态。设备树中的定义可能包括复用功能、上下拉电阻、驱动能力等。 另外,GPIO控制器在初始化时可能有默认状态,比如设置为输入模式以避免冲突。如果设备树没有特别配置,可能保持硬件默认状态。不同芯片厂商的默认配置可能不同,需要参考具体文档。用户可能需要了解如何通过设备树或pinctrl配置来覆盖默认设置,以及如何通过sysfs或调试工具检查当前GPIO状态。 需要确认的是,默认配置是否由硬件决定,Linux启动过程中如何应用设备树的配置,以及如何验证当前GPIO的状态。还要注意不同厂商的差异,比如NXP和TI可能有不同的默认行为。最后,用户可能需要知道如何修改这些默认配置,所以生成的问题要涵盖这些方面。</think>### Linux GPIO上电默认配置分析 根据Linux内核中GPIO子系统和pinctrl子系统的协同工作机制,GPIO上电时的默认配置由以下三个层面共同决定: 1. **硬件级默认状态** 芯片物理层在电源启动时,每个GPIO引脚会根据SoC设计进入预设状态。以NXP i.MX6ULL为例: $$ V_{DD\_SNVS} = 3.0V时,GPIO5_IO00默认上拉电阻为100kΩ $$ 不同芯片厂商的默认配置需查阅具体数据手册[^3] 2. **设备树初始配置** 在系统启动阶段,pinctrl子系统通过解析设备树完成初始化: ```dts /* 典型GPIO设备树节点 */ gpio1: gpio@0209c000 { compatible = "fsl,imx6ul-gpio"; reg = <0x0209c000 0x4000>; gpio-controller; #gpio-cells = <2>; interrupt-parent = <&gpc>; interrupts = <0 66 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; }; ``` 默认配置包括: - 输入/输出模式(多数芯片默认为高阻态) - 上下拉电阻配置 - 驱动强度设置 - 复用功能选择[^1][^2] 3. **内核启动流程** 启动过程中各子系统初始化顺序: ``` start_kernel() -> setup_arch() -> pinctrl_init() -> of_platform_populate() -> gpiochip_add() ``` 该过程会应用设备树中的默认配置,未明确配置的引脚将保持硬件默认状态 ### 配置验证方法 1. **sysfs接口查询** ```bash # 查看GPIO24当前状态 echo 24 > /sys/class/gpio/export cat /sys/class/gpio/gpio24/direction # 显示"in"或"out" cat /sys/class/gpio/gpio24/value # 显示0或1 ``` 2. **内核调试接口** ```bash # 需要CONFIG_DEBUG_FS配置 mount -t debugfs none /sys/kernel/debug cat /sys/kernel/debug/gpio ``` 3. **示波器测量** 实际物理电平测量是最终验证手段,可避免软件配置与硬件状态不一致的情况 ### 典型默认配置对比 | 芯片型号 | 默认方向 | 默认电平 | 上下拉 | |------------|---------|---------|-----------| | TI AM335x | 输入 | 保持 | 无上拉 | | NXP i.MX6 | 输入 | 高电平 | 100k上拉 | | STM32MP157 | 模拟模式 | 浮空 | 无上拉 | : pinctrl子系统负责管脚复用和电气属性配置 : GPIO子系统提供基础功能API : 实际配置需结合芯片手册和软件配置 [^4]: sysfs接口提供运行时状态查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值