• rk3288 升级后用gpio输出提示升级完成


    Platform: ROCKCHIP
    OS: Android 6.0
    Kernel: 3.10.92
    由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示.
    Recovery中升级完成后控制GPIO输出高电平点亮LED.
    系统自带GPIO控制驱动:
    内核已经自带了通用GPIO驱动,可以直接在用户空间操作.
    路径: /sys/class/gpio
    root@rk3288:/sys/class/gpio # ls
    export
    gpiochip0
    gpiochip120
    gpiochip152
    gpiochip184
    gpiochip216
    gpiochip24
    gpiochip248
    gpiochip280
    gpiochip56
    gpiochip88
    unexport
    比如我要操作GPIO8_A6作为高电平输出有效, 那么有以下问题:
    1. 对应的gpio number是多少呢?
    2. 如何设置成输出
    3. 如何输出高电平
    问题1:
    可以通过/sys/kernel/debug/gpio查询信息:
    root@rk3288:/sys/kernel/debug # cat gpio                                      
    //snip
    GPIOs 184-215, platform/ff770000.pinctrl, gpio6:
    gpio-193 (?                   ) in  hi
    gpio-194 (?                   ) in  hi
    GPIOs 216-247, platform/ff770000.pinctrl, gpio7:
    gpio-218 (enable              ) out hi
    gpio-219 (lcd_en              ) in  hi
    gpio-220 (lcd_cs              ) in  hi
    gpio-221 (gslX680 wake pin    ) out hi
    gpio-222 (gslX680 irq pin     ) out lo
    gpio-223 (headset_gpio        ) in  hi
    gpio-233 (?                   ) in  hi
    gpio-234 (?                   ) in  hi
    GPIOs 248-279, platform/ff770000.pinctrl, gpio8:
    GPIOs 280-311, platform/ff770000.pinctrl, gpio15:
    可以看到gpio8是以nubmer为248开始, 那么GPIO8_A6就是 248 + 6 = 254   。如果是GPIO8_B6 那么就是是 248 + +14
    接下来就可以导出gpio了
    root@rk3288:/sys/class/gpio # echo 254 > export                         
    root@rk3288:/sys/class/gpio # ls
    export
    gpio254
    ......
    问题2
    root@rk3288:/sys/class/gpio/gpio254 # echo out > direction                    
    root@rk3288:/sys/class/gpio/gpio254 # cat direction                           
    out
    问题3:
    root@rk3288:/sys/class/gpio/gpio254 # echo 1 > value                          
    root@rk3288:/sys/class/gpio/gpio254 # cat value                               
    1
    解决方法:
    init.rc
    [kris@:~/rk3288/device/rockchip/common/recovery/etc]$ g df
    diff --git a/recovery/etc/init.rc b/recovery/etc/init.rc
    index efe2a5d..75d7554 100755
    --- a/recovery/etc/init.rc
    +++ b/recovery/etc/init.rc
    @@ -85,6 +85,12 @@ on late-init
    on property:sys.powerctl=*
        powerctl ${sys.powerctl}
    +#Kris, 170407, GPIO8_A6 -> gpio254, used to inform sd upgrade complete.
    +on property:sdupgrade.complete=true
    +       write /sys/class/gpio/export 254
    +       write /sys/class/gpio/gpio254/direction out
    +       write /sys/class/gpio/gpio254/value 1
    +
    service ueventd /sbin/ueventd
         critical
         seclabel u:r:ueventd:s0
    recovery.cpp
    [kris@:~/rk3288/bootable/recovery]$ g df
    diff --git a/recovery.cpp b/recovery.cpp
    index 8299672..a0edc15 100755
    --- a/recovery.cpp
    +++ b/recovery.cpp
    @@ -2285,6 +2285,10 @@ HANDLE_STATUS :
             strcat(kernellogPath, "/kernel.txt");
             save_kernel_log(kernellogPath);
             #endif
    +
    +       //Kris, 170407, light led on after sd upgrade complete.
    +       property_set("sdupgrade.complete", "true");
    +
                    if (bSDMounted)
                 checkSDRemoved();


    参考:

    https://blog.csdn.net/kris_fei/article/details/69553422

  • 相关阅读:
    【Python】使用hashlib进行MD5和sha1摘要计算
    【Python】torrentParser1.04 增加获得磁力链URI功能
    day30_Hibernate复习_02
    day30_Hibernate学习笔记_02
    day29_Hibernate复习_01
    day29_Hibernate学习笔记_01
    【重要】Spring在web.xml中的配置原理说明
    HTTP常见错误编号
    一级缓存和二级缓存的理解
    电商网站前台与后台系统架构
  • 原文地址:https://www.cnblogs.com/cute/p/14217408.html
Copyright © 2020-2023  润新知