当前位置: 首页 > news >正文

20250607在荣品的PRO-RK3566开发板的Android13的uboot中使用gpio命令来配置GPIO的状态

20250607在荣品的PRO-RK3566开发板的Android13的uboot中使用gpio命令来配置GPIO的状态
2025/6/7 16:09


【结论:GPIO 0A6可以操作,但是应该不太完美!GPIO3A1被占用了?】


根据经验/很容易得知/艰难知道:
Z:\Android13.0\u-boot\.config
【有】
CONFIG_DM=y
CONFIG_DM_GPIO=y

【无】
CONFIG_DWAPB_GPIO=y
CONFIG_CMD_GPIO=y


Z:\Android13.0\u-boot\configs\rk3568_defconfig
# CONFIG_EFI_LOADER is not set
CONFIG_AVB_LIBAVB=y
CONFIG_AVB_LIBAVB_AB=y
CONFIG_AVB_LIBAVB_ATX=y
CONFIG_AVB_LIBAVB_USER=y
CONFIG_RK_AVB_LIBAVB_USER=y
CONFIG_OPTEE_CLIENT=y
CONFIG_OPTEE_V2=y
CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y
【简单起见:直接全部加在最后面了^_】
CONFIG_DM=y
CONFIG_DM_GPIO=y
CONFIG_DWAPB_GPIO=y
CONFIG_CMD_GPIO=y


参考资料:
https://www.cnblogs.com/xu-long/p/16805994.html
怎么在uboot下使用通用GPIO接口
一:在uboot下的defconfig 打开如下配置

CONFIG_DM=y
CONFIG_DM_GPIO=y
CONFIG_DWAPB_GPIO=y
CONFIG_CMD_GPIO=y
二:重新编译u-boot后会生成cmd:gpio

(板子上电时连续按回车键)进入到板端uboot cmdline下执行" gpio status -a " 查看板端对应的gpio numbe
三:利用 uboot gpio 命令操作GPIO 做测试

gpio c 0 ; 将第0根PIN清零(拉低)
gpio s 0 ; 将第0根PIN设为output同时拉高

四:gpio 操作demo

直接以下demo code添加到uboot/cmd路径下,再在uboot/cmd/Makefile中添加编译选项,编译完成后可以直接操作gpio
复制代码
#include <command.h>
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <asm/gpio.h>

int do_gpio_test(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[])
{
    if (argc < 2) {
        printf("usage: gpio_test [requ/out/on/off]\n");
        return 0;
    }

    if (strcmp("requ", argv[1]) == 0) {
        gpio_request(126, "ir_a");
        gpio_request(127, "ir_b");
        mdelay(10);
    } else if (strcmp("out", argv[1]) == 0) {
        gpio_direction_output(126, 1);
        gpio_direction_output(127, 1);
        mdelay(10);
    } else if (strcmp("on", argv[1]) == 0) {
        gpio_set_value(126, 0);
        gpio_set_value(127, 1);
        mdelay(100);
        gpio_set_value(126, 1);
        gpio_set_value(127, 1);
    } else if (strcmp("off", argv[1]) == 0) {
        gpio_set_value(126, 1);
        gpio_set_value(127, 0);
        mdelay(100);
        gpio_set_value(126, 1);
        gpio_set_value(127, 1);
    }

    return 0;
}

U_BOOT_CMD(
    gpio_test, 4, 1, do_gpio_test,
    "u-boot gpio cmd test",
    "gpio - just for test\n"
);
复制代码
 编译完成升级后,进入到uboot会有gpio_test命令
gpio_test requ
  初始化gpio
gpio_test out
  设置gpio direction
gpio_test on
  设置 ir_cur (的两根PIN) 状态


【完整的LOG:】
final DSI-Link bandwidth: 996 Mbps x 4
unsupport command data type: 48
failed to send on cmds: -22
disp info 0, type:11, id:0
hdmi@fe0a0000 disconnected
CLK: (sync kernel. arm: enter 816000 KHz, init 816000 KHz, kernel 0N/A)
  apll 1104000 KHz
  dpll 528000 KHz
  gpll 1188000 KHz
  cpll 1000000 KHz
  npll 1200000 KHz
  vpll 644000 KHz
  hpll 24000 KHz
  ppll 200000 KHz
  armclk 1104000 KHz
  aclk_bus 150000 KHz
  pclk_bus 100000 KHz
  aclk_top_high 500000 KHz
  aclk_top_low 400000 KHz
  hclk_top 150000 KHz
  pclk_top 100000 KHz
  aclk_perimid 300000 KHz
  hclk_perimid 150000 KHz
  pclk_pmu 100000 KHz
Net:   eth1: ethernet@fe010000
Hit key to stop autoboot('CTRL+C'):  0 
=> <INTERRUPT>
=> <INTERRUPT>
=> <INTERRUPT>
=> gp
  gpio gpt
=> gpio 
gpio - query and control gpio pins

Usage:
gpio <input|set|clear|toggle> <pin>
    - input/set/clear/toggle the specified pin
gpio status [-a] [<bank> | <pin>]  - show [all/claimed] GPIOs
=> 
=> gpio c 6
Device 'gpio@fdd60000': seq 0 is in use by 'gpio0@fdd60000'
gpio: pin 6 (gpio 6) value is 0
=> 
=> gpio s 6
gpio: pin 6 (gpio 6) value is 1
=> gpio s 6
gpio: pin 6 (gpio 6) value is 1
=> gpio c 97
Device 'gpio@fe740000': seq 1 is in use by 'gpio@fdd60000'
Device 'gpio@fe750000': seq 2 is in use by 'gpio2@fe750000'
gpio: pin 97 (gpio 97) value is 0
   Warning: value of pin is still 1
=> 


这片荣品的PRO-RK3566核心板的底板,USB3.0接口的电源是由GPIO 0A6所控制的。

拉低GPIO 0A6:gpio c 6


拉高GPIO 0A6:gpio s 6
拉高的时候,可以看见USB3.0接口上的鼠标的红灯闪烁一下就没有了。
电压有了,但是USB通讯协议在uboot模式下应该还没有加载完成。
USB通讯失败,USB鼠标就闪烁了一下而已就熄灭了。^_

相关文章:

  • VBA进度条ProgressForm1
  • 振动力学:多自由度系统
  • 现代C++特性(一):基本数据类型扩展
  • WaytoAGI东京大会开启AI全球化新对话:技术无国界,合作促创新
  • PCB设计教程【大师篇】——STM32开发板电源设计(电压基准、滤波电容)
  • PG 分区表的缺陷
  • 自制操作系统(五、重写引导部分和C语言的使用)
  • c++学习-this指针
  • 【仿生机器人】仿生机器人智能架构:从感知到个性的完整设计
  • 《Progressive Transformers for End-to-End Sign Language Production》复现报告
  • 【LangchainAgent】Agent基本构建与使用
  • 第七章 监听一致性协议 A Primer on Memory Consistency and Cache Coherence - 2nd Edition
  • 【C/C++】std::vector成员函数清单
  • 零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
  • 字符串字典序最大后缀问题详解
  • 迷宫问题(一)(C++版本)
  • 《高等数学》(同济大学·第7版)第二章第四节“隐函数及由参数方程所确定的函数的导数“
  • linux进程管理之从内存/cpu角度使用setrlimirt/rlimit
  • 【题解-洛谷】P1706 全排列问题
  • 露亦如电 · 时之沙 | 让遗憾在灰烬里随风而去
  • 服务公司取名/郑州seo使用教程
  • 网络维护简历模板/郑州厉害的seo顾问
  • 网站建设应注意什么/做竞价托管的公司
  • 免费浏览器网站/2023年8月份新冠
  • 外贸网站建设软件/百度北京总部电话
  • mindmanager网站建设流程图/百度搜索关键词查询