参考STM32MP157-DK2做的核心板,但是将I2C4修改成连接PD12,PD13,使用GPIOD没有使用GPIOZ。 在MPC端通过 echo mem > /sys/power/state进入低功耗,MCU的固件运行时没有问题,MCU的固件不启动或停止时进入低功耗会在32秒后被看门狗重启。 我追踪发现是suspend时以下位置I2C配置出问题了: driver_suspend() stpmic1_lp_copy_reg() stpmic1_register_read() stm32_i2c_read_write_membyte() hi2c->i2c_state = write ? I2C_STATE_BUSY_TX : I2C_STATE_BUSY_RX; hi2c->i2c_err = I2C_ERROR_NONE; i2c_transfer_config(hi2c, dev_addr, I2C_MEMADD_SIZE_8BIT, write ? I2C_RELOAD_MODE : I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); timeout_ref = timeout_init_us(I2C_TIMEOUT_BUSY_US); if (i2c_wait_txis(hi2c, timeout_ref)) goto bail; 我的MCU的固件代码中有__HAL_RCC_GPIOD_CLK_ENABLE();这个GPIOD时钟使能的处理,当我不做GPIOD时钟使能时,MCU的固件运行时进入低功耗也会出这个问题。 从现状看像是GPIOD时钟没使能导致的问题。 但是我取了寄存器RCC_MP_AHB4ENSETR的值查看,发现GPIODEN位是1,难道MPC端使能GPIOD时钟还有什么其他操作吗? 而且通过echo -n stop > /sys/class/remoteproc/remoteproc0/state停止MCU的固件之后会出问题,难道这样还会把使能的GPIOD时钟关闭吗? |
当MCU固件不启动或停止时进入低功耗并在32秒后被看门狗重启,可能与低功耗模式配置以及相关外设的状态保存有关。确保在进入低功耗之前,所有必要的状态和配置都得到适当的处理和保存。另外,在MCU固件中,在进入低功耗模式之前应该关闭所有的外设时钟,并根据需要保存相关状态,以便在唤醒后能够正常恢复。 |
stm32mp135怎么只烧录bootfs,根文件系统保持不变?
STM32MP135DAF7系列运行DDR_Init_A7死机,调试发现是DDR初始化出错。
学习笔记请大家提意见
ST MPU官方Distribution Package下载源是关闭了吗
STM32MP135无法用NFS开机挂载文件系统启动,报错root '/dev/nfs' doesn't exist
STM32MP135移植lvgl build fatal error: drm.h: No such file or directory
STM32MP1和STM32MP2有什么不同
STM32MP157D使用分立电源的问题
STM32MP157D的CPU频率问题
如何查看、修改STM32MP157D当前的CPU频率