针对你遇到的升级到Linux 6.1.82后系统无法启动的问题,以下是逐步排查和解决方案:
stm32mp157d.dtsi),覆盖你当前使用的设备树。rcc节点的兼容性字符串(compatible属性)是否为st,stm32mp1-rcc或新内核要求的格式。clocks和clock-names属性是否与新内核驱动匹配。mmc@...或sdmmc@...节点的配置是否更新。# 确认bootargs和bootcmd正确设置,例如:
setenv bootargs root=/dev/mmcblk0p5 rootwait rw console=ttySTM0,115200
setenv bootcmd 'load mmc 0:4 ${kernel_addr_r} uImage; load mmc 0:4 ${fdt_addr_r} stm32mp157d-myboard.dtb; bootm ${kernel_addr_r} - ${fdt_addr_r}'
saveenvmake CROSS_COMPILE=arm-none-eabi- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 DTB_FILE_NAME=stm32mp157d-myboard.dtbmake menuconfig,确保以下选项已启用:Device Drivers > STM32 RCC support (CONFIG_RCC_STM32)
Device Drivers > MMC/SD/SDIO card support > STM32 SDMMC Controller (CONFIG_MMC_STM32_SDMMC)
Device Drivers > Serial drivers > STM32 USART (CONFIG_SERIAL_STM32)CONFIG_CMDLINE中指定的根设备(如root=/dev/mmcblk0p5)与实际分区一致。earlycon和earlyprintk,捕获早期日志:bootargs=... earlycon earlyprintkwhile (driver_probe_done() != 0)循环的位置(通常位于init/main.c或驱动探测逻辑),添加打印调试:printk("Waiting for driver_probe_done()... ROOT_DEV=%dn", ROOT_DEV);drivers/clk/clk-stm32mp1.c中的RCC初始化函数(如stm32mp1_rcc_init()),确认时钟源(HSI/HSE)配置是否正确。/proc/interrupts和dmesg日志,确认是否出现IRQ冲突或死锁。[STM32MP157] Linux 6.1.82 boot failure after RCC probe通过以上步骤,应能定位到RCC初始化失败的具体原因。如果问题仍未解决,建议提供更详细的启动日志和代码调试信息进一步分析。
举报
更多回帖