Yocto U-Boot补丁未生效:GPIO无法启动置低及日志无输出求助
U-Boot补丁设置GPIO启动置低未生效问题
我尝试通过给Yocto的U-Boot配方打补丁,实现GPIO在U-Boot启动时置低。使用devtool基于Toradex仓库源码的U-Boot配方添加补丁,修改board_init文件,但未达到预期效果。
补丁配置文件(u-boot-toradex_2024.04.bbappend)
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" SRC_URI += "file://0001-Updated-colibri-board_init.patch \ file://0002-Updated-colibri-pins-to-1.patch \ file://0003-Added-new-log-message.patch \ file://0004-fixed-semicolon-issue.patch \ "
修改的board_init函数代码
为不破坏devtool工作流,我持续更新补丁文件,对board_init函数的修改如下:
int board_init(void) { board_gpio_init(); //See machine Pin_config.json for pinouts //GPIO -> 32*chip + line puts("\ngpio: Custom Patch Running!\n"); log_debug("\nGPIO: Custom Patch Running\n"); gpio_request(117, "SODIMM_PIN_98"); gpio_direction_output(117, 0); gpio_request(168, "SODIMM_PIN_135"); gpio_direction_output(168, 0); gpio_request(132, "SODIMM_PIN_133"); gpio_direction_output(132, 0); gpio_request(33, "SODIMM_PIN_92"); gpio_direction_output(33, 0); gpio_request(25, "SODIMM_PIN_103"); gpio_direction_output(25, 0); gpio_request(50, "SODIMM_PIN_55"); gpio_direction_output(50, 0); gpio_request(49, "SODIMM_PIN_63"); gpio_direction_output(49, 0); gpio_request(22, "SODIMM_PIN_28"); if (IS_ENABLED(CONFIG_IMX_SNVS_SEC_SC_AUTO)) { int ret = snvs_security_sc_init(); if (ret) return ret; } return 0; }
当前现象
- 启动时未看到
puts和log_debug输出的日志信息 - 目标GPIO启动后仍为高电平
- 可在U-Boot命令行手动控制这些GPIO(之前无法操作),手动置低后电压为0V:
Colibri iMX8X # gpio status GPIO0_25 Bank GPIO0_: GPIO0_25: input: 1 [ ] Colibri iMX8X # gpio clear GPIO0_25 gpio: pin GPIO0_25 (gpio 33) value is 0 Colibri iMX8X # gpio status GPIO0_25 Bank GPIO0_: GPIO0_25: output: 0 [ ]
已做排查
- 验证GPIO编号完全正确
- 通过
bitbake -e确认补丁已被识别 - 参考NXP论坛方案提升自定义层优先级,问题仍未解决
环境信息
- Yocto版本:Scarthgap(基于Toradex reference-multimedia-image构建)
- 硬件:Toradex iMX8XQXP搭配Viola Carrier底板
内容的提问来源于stack exchange,提问作者Camstillo
相关产品推荐
相关产品推荐

