跳转至

涉硬参数调整指南


REVISION HISTORY

Revison No.
Description
Date
1.0
  • Initial release
  • 11/21/2023
    1.1
  • delete USB3.0/replace gmac by emac/SD&eMMC merge/PAD_PM_GPIO index change
  • 1/24/2024
    1.2
  • add disp driving capability adjustment and clk reverse configuration
  • 12/25/2024
    1.3
  • add SATA CTS configuration
  • 01/03/2025
    1.4
  • add hdmi driving capability adjustment configuration
  • 01/08/2025
    1.5
  • add IIC & PWM driving capability adjustment
  • 01/08/2025
    1.6
  • add MSPI & UART driving capability adjustment
  • 01/09/2025
    1.7
  • add PCIe PHY parameter tuning
  • 05/18/2026

    1. 模拟 IP 涉硬参数调试

    1.1. USB 2.0


    目前一共提供五个参数可供调整,分别是:pre-emphasis、slew rate、swing trim、disconnect detector reference voltage以及RX squelch calibration reference voltage(其中swing trim在OTP中可能已经有trim过,调整时需要注意)。

    1.1.1. pre_emphasis

    位于UTMI bank offset 0x43[9:8] ,调整值范围:0~3,值越大pre-emphasis越强。

    1) 查看当前值: cat /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/pre_emphasis

    2) 设置: echo value > /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/pre_emphasis

    1.1.2. slew_rate

    位于UTMI bank offset 0x44[2:1] ,调整值范围:0~3。

    1) 查看当前值: cat /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/slew_rate

    2) 设置: echo value > /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/slew_rate

    1.1.3. swing trim(此参数OTP有trim过,修改时需要找HWRD确认)

    位于UTMI bank offset 0x44[9:4] ,调整值范围:0~63。

    1) 查看当前值: cat /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/swing_trim

    2) 设置: echo value > /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/swing_trim

    1.1.4. disconnect detector reference voltage

    位于UTMI bank offset 0x41[4:0] ,调整值范围:0~31。

    1) 查看当前值: cat /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/disconnect_refer_voltage

    2) 设置: echo value > /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/disconnect_refer_voltage

    1.1.5. RX squelch calibration reference voltage

    位于UTMI bank offset 0x4b[4:0] ,调整值范围:0~31。

    1) 查看当前值: cat /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/squelch_refer_voltage

    2) 设置: echo value > /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/squelch_refer_voltage

    1.1.6. 眼图测试

    1)开机进入kernel,执行下列命令之后可以接示波器查看眼图

    2)眼图测试波形不符合要求时,可以调整上述5个参数,直到波形完美为止

    测试highspeed眼图,执行:echo “hs” > /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/eye_diagram_switch

    测试fullspeed眼图,执行:echo “fs” > /sys/kernel/debug/usb/phy-soc\:u2phy0@0x1f284200.0/eye_diagram_switch


    1.2. USB 3.0

    mHera USB3.0 Port 3使用PIPE PHY,Port 2使用SUPPHY,各自的驱动能力参数不同。

    1.2.1. Port 3 - PIPE PHY

    PIPE PHY驱动能力可调整的值有三项:idrv(驱动电流)、idem(去加重)和 biasi(偏置电流)。

    1.2.1.1. idrv(TX驱动电流)

    位于PHYD Offset 0x41[7:2],调整范围:0~63,档位越高驱动电流越大。

    查看当前idrv档位: cat /sys/kernel/debug/usb/phy-1f2a5200.pipe.6/tx-idrv
    
    修改idrv档位: echo level > /sys/kernel/debug/usb/phy-1f2a5200.pipe.6/tx-idrv
    
    1.2.1.2. idem(TX去加重)

    位于PHYD Offset 0x41[13:8],调整范围:0~63,档位越高去加重越强。

    查看当前idem档位: cat /sys/kernel/debug/usb/phy-1f2a5200.pipe.6/tx-idem
    
    修改idem档位: echo level > /sys/kernel/debug/usb/phy-1f2a5200.pipe.6/tx-idem
    
    1.2.1.3. biasi(TX偏置电流)

    位于PHYD Offset 0x26[3:1],调整范围:0~7,档位越高偏置电流越大。

    查看当前biasi档位: cat /sys/kernel/debug/usb/phy-1f2a5200.pipe.6/tx-biasi
    
    修改biasi档位: echo level > /sys/kernel/debug/usb/phy-1f2a5200.pipe.6/tx-biasi
    

    1.2.2. Port 2 - SUPPHY

    SUPPHY驱动能力可调整的值有三项:swing-mode(摆幅模式选择)、swing-amplitude(低摆幅幅值)和tx-deemphasis(发送去加重)。

    1.2.2.1. swing-mode(摆幅模式选择)

    位于PHYD Offset 0x02[1:0],用于切换Full-Swing和Low-Swing模式。

    模式
    2 Full-Swing(全摆幅)
    3 Low-Swing(低摆幅)
    查看当前模式: cat /sys/kernel/debug/usb/phy-1f2b2600.pipe.7/swing-mode
    
    切换为Low-Swing模式: echo 3 > /sys/kernel/debug/usb/phy-1f2b2600.pipe.7/swing-mode
    
    切换为Full-Swing模式: echo 2 > /sys/kernel/debug/usb/phy-1f2b2600.pipe.7/swing-mode
    
    1.2.2.2. swing-amplitude(低摆幅幅值)

    配置SUPPHY低摆幅模式的幅值档位,仅在 Low-Swing 模式下可配置和显示。位于PHYD Offset 0x10[7:0],通过档位值0~5控制。

    档位 寄存器值 描述
    0 0x6C -1.5dB (84%)
    1 0x60 -2.5dB (75%)
    2 0x56 -3.5dB (67%)
    3 0x4D -4.5dB (60%)
    4 0x40 -6dB (50%)
    5 0x36 -7.6dB (42%)
    查看当前档位: cat /sys/kernel/debug/usb/phy-1f2b2600.pipe.7/swing-amplitude
    
    设置档位: echo 3 > /sys/kernel/debug/usb/phy-1f2b2600.pipe.7/swing-amplitude
    
    1.2.2.3. tx-deemphasis(TX去加重幅值)

    位于PHYD Offset 0x02[7:6](幅值)和PHYD Offset 0x03[8](使能),调整范围:0~2。写入任意值时会自动使能去加重(PHYD 0x03[8]=1)。

    去加重幅度
    0 -6dB
    1 -3.5dB
    2 0dB
    查看当前tx-deemphasis值: cat /sys/kernel/debug/usb/phy-1f2b2600.pipe.7/tx-deemphasis
    
    修改tx-deemphasis值: echo value > /sys/kernel/debug/usb/phy-1f2b2600.pipe.7/tx-deemphasis
    

    1.3. SDMMC 驱动能力配置


    1.3.1. 通过sysfs配置驱动能力

    SDMMC driver有提供sysfs控pin脚driving能力,使用方法是:

    1. cd /sys/devices/soc0/soc/<reg>:sgs_sdmmc[i]
    2. # <reg> -根据dtsi实际配置信息生成reg值
    3. # [i]   -根据dtsi实际配置信息生成index值
    4. echo [slotNo] <signal> [level] > set_sdmmc_driving_control
    5. # 设置[slotNo]的<signal>信号线的驱动能力为[level]。
    6. # [slotNo] -选择操作的slot。
    7. # <signal> -可以选择设置clk、cmd、data、all或空值(等同all)。
    8. # [level]  -driving能力挡位,取值范围0~7。
    

    将sd的所有信号脚的driving能力设置为2

    1. cd /sys/devices/platform/soc/1f282600.sgs_sdmmc1
    2. echo 0 all 2 > set_sdmmc_driving_control
    

    将emmc的四根data脚的driving能力设置为1:

    1. cd /sys/devices/platform/soc/1f282000.sgs_sdmmc0
    2. echo 1 data 1 > set_sdmmc_driving_control
    

    1.3.2. 通过dts配置驱动能力

    SDMMC driver支持从dts中配置clk,cmd和data信号线的driving能力,配置方法如下:

    1. sgs_sdmmc0: sgs_sdmmc0 {
    2.     compatible = "sgs,sdmmc";
    3.     bus-width = <4>;
    4.     no-sdio;
    5.     no-sd;
    6.     7.     clk-driving = <2>,<0>,<0>;
    8.     cmd-driving = <2>,<0>,<0>;
    9.     data-driving = <2>,<0>,<0>;
    10.    11. }
    
    1. sgs_sdmmc1: sgs_sdmmc1 {
    2.     compatible = "sgs,sdmmc";
    3.     bus-width = <4>;
    4.     no-mmc;
    5.     6.     clk-driving = <2>,<0>,<0>;
    7.     cmd-driving = <2>,<0>,<0>;
    8.     data-driving = <2>,<0>,<0>;
    9.    10. }
    

    如上图,这三项属性参数分别是配置clk线,cmd线和四根data线的driving能力。可以看到每项参数都有三个值,这三个值分别代表每个slot的驱动能力,驱动档位由实际选择的PAD 决定,具体可参考相关的GPIO PAD配置文档。


    1.4. DISP


    1.4.1. 驱动能力调整

    DISP driver支持从屏参中配置panel pin脚的driving能力,配置方法如下:

    1、配置padmux

    padmux文件路径:

    #arm32
    kernel/arch/arm/boot/dts/$(boardname)-padmux.dtsi
    #arm64
    kernel/arch/arm64/boot/dts/sgs/$(boardname)-padmux.dtsi
    

    根据当前所需的interface,将pandmux #if 0 更改为 #if 1。

    2、屏参配置m_wPadDrvngLvl

    屏参路径:

    project\board\$(chip)\screen_param\config_disp.json
    
    m_wPadDrvngLvl
    0: 4mA
    1: 8mA
    2: 12mA
    3: 16mA
    

    在屏参中增加并配置m_wPadDrvngLvl,重新跑disp出图,便可统一调整Pin脚的driving档位。

    不同pin脚可配置的driving档位可能有所差异,具体可参考相关的GPIO PAD配置文档

    3、VGA驱动能力配置/查看

    配置驱动能力:

    echo vga_drv RTrim GTrim BTrim > /proc/mi_modules/mi_disp/debug_hal/turndrv
    

    查看驱动能力:

    cat /proc/mi_modules/mi_disp/debug_hal/turndrv
    

    其中 RTrim/GTrim/BTrim 取值范围为 0x00 ~ 0x7F,取值越大 driving 越大。

    1.4.2. clk正反向配置

    屏参路径:

    project\board\$(chip)\screen_param\config_disp.json
    
    m_bPanelInvDCLK
    0: default
    1: reverse
    

    在屏参中配置m_bPanelInvDCLK,重新跑disp出图,便可调整clk正反向。


    1.5. SATA


    1.5.1. HW CTS 设定

    通过 Sysfs 接口进行 SATA PHY 层信号质量调优,确认后的参数须更新到 dts 中,SATA driver 才会使用调整好的 CTS 参数。

    Sysfs 路径:/sys/devices/virtual/sgs/satasata1

    注意:必须先设定传输速率(test_gen),再设定测试模式(cts_pattern),因为 PHY 驱动在进入 CTS pattern 时需要先获知速率信息。

    a. 设定传输速率(test_gen)

    test_gen 传输速率 说明
    0 1.5 Gbps SATA GEN1
    1 3.0 Gbps SATA GEN2
    2 6.0 Gbps SATA GEN3
    echo [test_gen] > test_gen
    

    b. 设定测试模式(cts_pattern)

    cts_pattern 模式名称 说明
    0 HFTP High Frequency Test Pattern
    1 MFTP Mid Frequency Test Pattern
    2 LFTP Low Frequency Test Pattern
    3 LBP Low Bit Pattern
    4 SSOP Spread Spectrum Oscillation Pattern
    echo [cts_pattern] > cts_pattern
    

    c. 设定 TX 参数(de_emphasis)

    TX 参数包括去加重(De-emphasis)和电压摆幅(Vpp),用于优化信号质量:

    echo [enable] [db] [level] > de_emphasis
    
    参数 说明 可选值
    enable GEN3 去加重使能 0=仅使用Vpp, 1=启用去加重
    db 去加重档位(仅 enable=1 有效) 0=-1.5dB, 1=-2.5dB, 2=-3.5dB, 3=-6.0dB
    level 电压摆幅档位 0~8,详见下表

    电压摆幅(Vpp)各档位及 GEN 支持:

    level 电压摆幅 GEN1 GEN2 GEN3
    0 0.4 Vpp 支持 支持 支持
    1 0.5 Vpp 支持 支持 支持
    2 0.6 Vpp 支持 支持 支持
    3 0.7 Vpp 支持 支持 支持
    4 0.8 Vpp 支持 支持 支持
    5 0.9 Vpp - 支持 支持
    6 1.0 Vpp - - 支持
    7 1.1 Vpp - - 支持
    8 1.2 Vpp - - 支持

    GEN1/GEN2 仅支持 Vpp 调整,去加重功能仅在 GEN3 模式下可用。

    配置示例:

    # GEN3:不使用去加重,0.7Vpp
    echo 0 0 3 > de_emphasis
    
    # GEN3:-2.5dB 去加重 + 0.8Vpp(中距离传输)
    echo 1 1 4 > de_emphasis
    
    # GEN3:-6.0dB 去加重 + 1.0Vpp(长距离传输)
    echo 1 3 6 > de_emphasis
    

    1.5.2. 通过 dts 配置涉硬参数

    CTS 测试确认的最佳参数需更新到 dts 中,Sysfs 命令 echo [enable] [db] [level] > de_emphasis 与 DTS 参数 tx_gen3_de_emphasis = <enable>, <db>, <level> 一一对应。0xFF 表示使用默认值。

    sgs_sataphy: sgs-sata-phy {
        compatible = "sgs,sataphy";
        
        phy_mode = <2>;                              /* PHY速率模式:0=GEN1, 1=GEN2, 2=GEN3 */
        tx_ssc_mode = <0>;                           /* 扩频时钟:0=关闭, 1=开启 */
        tx_gen1_gen2_Vpp = <0xFF>,<0xFF>;            /* GEN1/GEN2 发送电压摆幅, 0xFF=默认 */
        tx_gen3_de_emphasis = <0xFF>,<0xFF>,<0xFF>;  /* GEN3: <enable>,<db>,<level>, 0xFF=默认 */
        rx_eq_rs1 = <0xFF>,<0xFF>,<0xFF>;            /* 接收均衡参数 RS1, 0xFF=默认 */
        rx_eq_rs2 = <0xFF>,<0xFF>,<0xFF>;            /* 接收均衡参数 RS2, 0xFF=默认 */
        rx_eq_ctle = <0xFF>;                         /* 接收均衡参数 CTLE, 0xFF=默认 */
        
    };
    

    DTS 配置示例:

    /* 示例1:GEN3 使用 -2.5dB 去加重 + 0.8Vpp */
    tx_gen3_de_emphasis = <1>, <1>, <4>;
    
    /* 示例2:GEN3 仅使用 Vpp(不启用去加重),0.7Vpp */
    tx_gen3_de_emphasis = <0>, <0xFF>, <3>;
    
    /* 示例3:GEN1/GEN2 的 Vpp,两个值分别对应 GEN1 和 GEN2 */
    tx_gen1_gen2_Vpp = <3>, <3>;   /* GEN1=0.7Vpp, GEN2=0.7Vpp */
    

    1.6. HDMITX


    1.6.1. 驱动能力调整

    HDMITX driver支持echo 命令的方式配置driving能力,配置方法如下:

    echo Tap1Ch0 Tap1Ch1 Tap1Ch2 Tap1Ch3 Tap2Ch0 Tap2Ch1 Tap2Ch2 Tap2Ch3 RetrmCh PreDrvCh MuCh > /proc/mi_modules/mi_hdmi/debug_hal/turndrv
    

    获取配置方法:

    cat /proc/mi_modules/mi_hdmi/debug_hal/turndrv
    

    1.6.2. SSC

    展频设置支持 auto/manual 调整。

    auto 调整方式如下:

    echo ssc $en auto Modulation(hz) Deviation(%) > /proc/mi_modules/mi_hdmi/debug_hal/turndrv
    

    manual 调整方式如下:

    echo ssc $en manual STEP(0x) SAPN(0x) > /proc/mi_modules/mi_hdmi/debug_hal/turndrv
    

    获取调整参数方式:

    cat /proc/mi_modules/mi_hdmi/debug_hal/turndrv
    

    1.7. IIC


    1.7.1. IIC 驱动能力配置

    IIC驱动能力同时受其使用GPIO的推动能力和IIC IP设置影响,前者配置方法可参考GPIO调试方法,后者调整方法如下;

    IIC IP 关于驱动能力有四个配置可调,如下表:

    Mode Num Mode Name description
    Mode 1 Pure Open drain 纯开漏输出无偷推,此时上升速度最慢
    Mode 2 PUSH EN 偷推1T, 上升速度较mode 1更快
    Mode 3 PUSH EN M+ 偷推16T,上升速度较mode 2更快
    Mode 4 PUSH PULL 推挽输出模式,上升速度较快

    IIC IP 驱动能力需要在dtsi文件的iic节点中配置,文件路径:

    #arm32
    kernel/arch/arm/boot/dts/$(boardname).dtsi
    #arm64
    kernel/arch/arm64/boot/dts/sgs/$(boardname).dtsi
    

    节点属性如下,修改output-mode为目标mode再编译即能改变iic ip输出模式配置:

            i2c0: i2c@1f223000 {
                    compatible = "sgs,i2c";
                    reg = <0x1F223000 0x200>;
                    #address-cells = <1>;
                    #size-cells = <0>;
                    interrupts = <GIC_SPI INT_IRQ_MIIC_0 IRQ_TYPE_LEVEL_HIGH>;
                    clocks = <&CLK_miic0>;
                    dma-enable;
                    group = <0>;
                    speed = <200000>;
                    //if u want set tSU/tHD, it should be set to a non-zero value, with units in ns
                    t-su-sta = <0>;
                    t-hd-sta = <0>;
                    t-su-sto = <0>;
                    t-hd-sto = <0>;
                    //1->open drain; 2->open drain + one push; 3->open drain + mult push; 4->push-pull
                    output-mode = <2>;
                    status = "okay";
                };
    

    1.8. PWM


    1.8.1. PWM驱动能力调整

    PWM的驱动能力受其使用的GPIO驱动能力影响,后者配置方法可参考GPIO调试方法。


    1.9. MSPI


    1.9.1. MSPI驱动能力调整

    MSPI的驱动能力受其使用的GPIO驱动能力影响,后者配置方法可参考GPIO调试方法。


    1.10. UART


    1.10.1. UART驱动能力调整

    UART的驱动能力受其使用的GPIO驱动能力影响,后者配置方法可参考GPIO调试方法。


    1.11. PCIe


    通过debugfs接口可以在运行时调整PCIe PHY的信号参数,用于信号质量调试。前提条件:内核需要开启 CONFIG_DEBUG_FS 配置。

    debugfs节点路径为 /sys/kernel/debug/pcie\<port>/,其中 \<port> 为PCIe端口号(0或1)。

    1.11.1. swing_mode(摆幅模式)

    配置PCIe发送端的摆幅模式。

    描述
    0 Full-swing(全摆幅)
    1 Low-swing(低摆幅)
    1. 查看当前值:cat /sys/kernel/debug/pcie0/swing_mode

    2. 设置:echo 1 > /sys/kernel/debug/pcie0/swing_mode

    1.11.2. swing_amplitude(摆幅幅值)

    配置PCIe发送端的摆幅幅值档位,仅在 Low-swing 模式下可配置和显示。PCIe有两个lane,配置时同时作用于两个lane。

    档位 寄存器值 描述
    0 0x6C -1.5dB (84%)
    1 0x60 -2.5dB (75%)
    2 0x56 -3.5dB (67%)
    3 0x4D -4.5dB (60%)
    4 0x40 -6dB (50%)
    5 0x36 -7.6dB (42%)
    1. 查看当前值:cat /sys/kernel/debug/pcie0/swing_amplitude

    2. 设置:echo 3 > /sys/kernel/debug/pcie0/swing_amplitude

    1.11.3. de_emphasis_us(去加重 - 上游端口)

    配置PCIe上游端口(EP模式)的去加重参数,仅在 Full-swing 模式下可配置和显示,且仅在EP模式下可见。

    描述
    0 -6dB
    1 -3.5dB
    1. 查看当前值:cat /sys/kernel/debug/pcie0/de_emphasis_us

    2. 设置:echo 1 > /sys/kernel/debug/pcie0/de_emphasis_us

    1.11.4. de_emphasis_ds(去加重 - 下游端口)

    配置PCIe下游端口(RC模式)的去加重参数,仅在 Full-swing 模式下可配置和显示,且仅在RC模式下可见。

    描述
    0 -6dB
    1 -3.5dB
    1. 查看当前值:cat /sys/kernel/debug/pcie0/de_emphasis_ds

    2. 设置:echo 1 > /sys/kernel/debug/pcie0/de_emphasis_ds

    1.11.5. status(状态总览)

    以只读方式显示当前所有PHY参数的配置。

    cat /sys/kernel/debug/pcie0/status
    

    2. 数字接口驱动能力调整

    2.1. 使用背景


    由于GPIO lib 不支持 GPIO 上下拉及驱动能力的接口,导致我司的 GPIO Hal 层驱动缺少对 GPIO 上下拉和驱动能力设置的支持。然而在日常使用中,GPIO 的上下拉及驱动能力经常需要动态调整,所以增加上下拉及驱动能力设置 API 和用户层接口变得十分必要。


    2.2. 内核接口


    2.2.1. sgs_gpio_pull_up

    • 目的

      开启指定的 GPIO 上拉功能

    • 语法

      U8 sgs_gpio_pull_up(U8 gpio_index)
      
    • 参数

      Parameter Commemt
      gpio index gpio num
    • 返回值

      Return Value Commemt
      0 设置成功
      Other 引脚不支持上下拉设置或者输入参数错误

    2.2.2. sgs_gpio_pull_down

    • 目的

      开启指定的 GPIO 下拉功能

    • 语法

      U8 sgs_gpio_pull_down(U8 gpio_index)
      
    • 参数

      Parameter Commemt
      gpio index gpio num
    • 返回值

      Return Value Commemt
      0 设置成功
      Other 引脚不支持上下拉设置或者输入参数错误

    2.2.3. sgs_gpio_pull_off

    • 目的

      关闭指定的 GPIO 上/下拉功能,该 GPIO 切换至悬空态

    • 语法

      U8 sgs_gpio_pull_off(U8 gpio_index)
      
    • 参数

      Parameter Commemt
      gpio index gpio num
    • 返回值

      Return Value Commemt
      0 设置成功
      Other 引脚不支持上下拉设置或者输入参数错误

    2.2.4. sgs_gpio_drv_set

    • 目的

      设置指定的 GPIO 的驱动能力

    • 语法

      U8 sgs_gpio_drv_set(U8 gpio_index, U8 level)
      
    • 参数

      Parameter Commemt
      gpio index gpio num
      level 所能支持的驱动能力等级:0、1、2、3...
    • 返回值

      Return Value Commemt
      0 设置成功
      Other 引脚不支持上下拉设置或者输入参数错误

    2.3. 用户层调试方法


    2.3.1. 开启功能

    要使用用户层接口需要打开 CONFIG_MSYS_GPIO,该配置位于menuconfig中:

    Device Drivers
        sgs SoC platform drivers
            msys api
                support GPIO pull and driving modify
    

    2.3.2. 使用功能

    设置上/下拉之前需要将 GPIO 设置为输入状态,输出状态下上下拉是没办法测量的:

    1. # cd /sys/class/gpio
    2. # echo gpio_index > export
    3. # echo in > gpiogpio_index/direction
    

    设置上拉、下拉或者悬空:

    1. # cd sys/class/sgs/msys
    2. # echo gpio_index/gpio_name down/up/off > gpio_pull
    

    查看当前状态:

    1. # cd sys/class/sgs/msys
    2. # cat gpio_pull
    

    以PAD_PM_GPIO0为例,设置为输入:

    1. # cd /sys/class/gpio
    2. # echo 71 > export
    3. # echo in > gpio71/direction
    

    设置为上拉:

    1. # cd sys/class/sgs/msys
    2. # echo 71 up > gpio_pull
    3. # echo PAD_PM_GPIO0 up > gpio_pull //the same to above
    

    设置为悬空:

    1. # cd sys/class/sgs/msys
    2. # echo 71 off > gpio_pull
    3. # echo PAD_PM_GPIO0 off > gpio_pull //the same to above
    

    查看当前状态:

    1. # cd sys/class/sgs/msys
    2. # cat gpio_pull
    

    设置驱动能力之前需要将 GPIO 设置为输出高电平状态方便测量:

    1. # cd /sys/class/gpio
    2. # echo gpio_index > export
    3. # echo high > gpiogpio_index/direction
    

    调节驱动能力:

    1. # cd sys/class/sgs/msys
    2. # echo gpio_index/gpio_name level_num > gpio_drive
    

    以PAD_PM_GPIO0设置为8mA为例

    1. # cd /sys/class/gpio
    2. # echo 71 > export
    3. # echo high > gpio71 /direction
    4. # cd sys/class/sgs/msys
    5. # echo 71 1 > gpio_drive
    6. # echo PAD_PM_GPIO0 1 > gpio_drive //the same to above
    

    每次执行echo指令后,可以通过cat同一个文件确定上一条echo命令的状态。