咨询想解决的问题是,能否在这段时间保持u-boot显示的logo,到内核动画无缝衔接? |
STM32MP135DAF7系列运行DDR_Init_A7死机,调试发现是DDR初始化出错。
classB自检库上面没有MP1系列的范例,有针对MP1系列的自检解决方案或是应用笔记吗?
stm32mp135怎么只烧录bootfs,根文件系统保持不变?
学习笔记请大家提意见
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频率问题
跟踪内核发现,在u-boot装载内核,启动内核,logo都没有问题,在
完成pinctrl的初始化,也没有问题。
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOA bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOB bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOC bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOD bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOE bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOF bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOG bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOH bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOI bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOJ bank added
stm32mp157-pinctrl soc:pin-controller@50002000: GPIOK bank added
stm32mp157-pinctrl soc:pin-controller@50002000: Pinctrl STM32 initialized
stm32mp157-pinctrl soc:pin-controller-z@54004000: GPIOZ bank added
stm32mp157-pinctrl soc:pin-controller-z@54004000: Pinctrl STM32 initialized
插入跟踪发现在执行stm32_pinctrl.c的stm32_pconf_group_set函数之前,屏幕变花屏白屏了,也就是Pinctrl STM32 initialized到stm32_pconf_group_set函数执行中间做了什么动作,导致MIPI的DSI出了问题,加入dump_stack函数,打印函数调用栈,
[<c01126dc>] (unwind_backtrace) from [<c010d7a0>] (show_stack+0x10/0x14)
[<c010d7a0>] (show_stack) from [<c0b2a734>] (dump_stack+0xb0/0xc4)
[<c0b2a734>] (dump_stack) from [<c05c5110>] (stm32_pconf_group_set+0x30/0xc0)
[<c05c5110>] (stm32_pconf_group_set) from [<c05c13b0>] (pinconf_apply_setting+0x54/0x108)
[<c05c13b0>] (pinconf_apply_setting) from [<c05bd87c>] (pinctrl_commit_state+0xf8/0x158)
[<c05bd87c>] (pinctrl_commit_state) from [<c06ec8a8>] (pinctrl_bind_pins+0x200/0x27c)
[<c06ec8a8>] (pinctrl_bind_pins) from [<c06c6aac>] (really_probe+0x90/0x488)
[<c06c6aac>] (really_probe) from [<c06c706c>] (driver_probe_device+0x78/0x154)
[<c06c706c>] (driver_probe_device) from [<c06c4cbc>] (bus_for_each_drv+0x84/0xd0)
[<c06c4cbc>] (bus_for_each_drv) from [<c06c697c>] (__device_attach+0xe0/0x178)
[<c06c697c>] (__device_attach) from [<c06c5a90>] (bus_probe_device+0x84/0x8c)
[<c06c5a90>] (bus_probe_device) from [<c06c5fe4>] (deferred_probe_work_func+0x84/0xc4)
[<c06c5fe4>] (deferred_probe_work_func) from [<c0142644>] (process_one_work+0x1e8/0x588)
[<c0142644>] (process_one_work) from [<c0142c2c>] (worker_thread+0x248/0x528)
[<c0142c2c>] (worker_thread) from [<c01489ac>] (kthread+0x11c/0x144)
[<c01489ac>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
由pinctrl_bind_pins调用pinctrl_commit_state再调用stm32_pconf_group_set,在pinctrl_bind_pins插入程序暂停执行,这个时候屏幕还没有花屏,继续定位pinctrl_bind_pins函数,发现这个pinctrl_bind_pins 是有设备树display-controller@5a001000产生的调用,同时还调用了stm32-ltdc模块,那应该就是ltdc重新初始化导致,如何解决这个问题,能否将u-boot的logo数据加载到内核LTDC对应的显示缓冲区,这个操作如何来做?
//=================================================================
补充:原以为是LTDC初始化问题,具体跟踪发现dw_mipi_dsi_stm_probe最先被调用,只是因为devm_regulator_get(dev, "phy-dsi")失败而返回,紧跟着stm_drm_platform_probe也会因为drm_of_find_panel_or_bridge返回失败。因为stm_drm_platform_probe失败,在花屏的时候,LTDC根本没有初始化。
继续运行,dw_mipi_dsi_stm_probe会再次调用,在花屏的时候,调用成功了!stm_drm_platform_probe会更靠后调用成功,stm_drm_platform_probe成功就可以显示内核LOGO了,针对dw_mipi_dsi_stm_probe调用成功花屏,以为是DSI初始化,就强制让其调用失败。结果发现还是花屏,应该还是有什么影响着?
原来使用RGB888接口屏,这个花屏情况没有,使用DSI就出现了
你好,请问你在使用哪个版本的内核?
目前使用的是5.4.31
你好,附件是基于5.10.10内核的补丁,你可以尝试移植到5.4.31上面。
[md]附件是没有上传成功吗,我无法下载
论坛好像上传不了文件。
你可以给 [email]mpu.china@st.com[/email] 发个信息,我从里面发给你
[md]邮箱已发