Hi,
I am using the Yocto framework with the meta-freescale layer (meta-freescale - Layer containing NXP hardware support metadata) to generate images for our custom i.MX6DL board. I have configured a custom boot logo in the linux kernel. This worked well until Yocto version 3.0 (zeus) which uses the linux-imx kernel version 4.14.98. Now I am trying to update to Yocto version 3.1 (dunfell) which uses linux-imx version 5.4.3 (git://source.codeaurora.org/external/imx/linux-imx branch lf-5.4.y).
Using the same kernel configuration options for the framebuffer and boot logo, the logo is no longer displayed. Instead of the logo, the screen is black and the framebuffer console starts showing text output as soon as the init process starts running. I am using the following kernel command line, which should redirect all console output to the debug uart and not display it in fbcon (which worked with kernel 4.14):
console=ttymxc0,115200 root=${emmcroot} quiet vt.global_cursor_default=0
Are there any new parameters or changes in the new kernel that need a different configuration for this to work?
The defconfig used is attached.
The display is connected via lvds and configured in the device tree:
&ldb {
ipu_id = <0>;
disp_id = <0>;
ext_ref = <0>;
mode = "sin0";
sec_ipu_id = <0>;
sec_disp_id = <1>;
status = "okay";lvds-channel@0 {
fsl,data-mapping = "spwg";
fsl,data-width = <24>;
crtc = "ipu1-di0";
primary;
status = "okay";display-timings {
native-mode = <&timing0>;
timing0: hsd100pxn1 {
clock-frequency = <65000000>;
hactive = <1024>;
vactive = <768>;
hback-porch = <150>;
hfront-porch = <150>;
vback-porch = <21>;
vfront-porch = <14>;
hsync-len = <32>;
vsync-len = <3>;
};
};
};
};
已解决! 转到解答。
Hi Michael
nxp supports only yocto 3.0 Zeus as described below from
official linux documentation from i.MX Software and Development Tools | NXP
Issues with dunfell release can be posted on meta-fsl-arm mailing list
meta-freescale@lists.yoctoproject.org | Home
Best regards
igor
Hi Michael
what bsp used in the case, one can try to reproduce issue on i.MX6 Sabre SD board
with Demo Images
Linux Binary Demo Files - i.MX 6QuadPlus, i.MX 6Quad, i.MX 6DualLite, i.MX 6SoloX
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hello Igor,
Thank you for your response.
> what bsp used in the case
As mentioned above, I am using the Yocto dunfell release and the meta-freescale layer from git.yoctoproject.org. The kernel recipe used (linux-imx) uses the Linux kernel version 5.4.3 from git://source.codeaurora.org/external/imx/linux-imx. This is presumably the same kernel version as the demo image files in your link.
> one can try to reproduce issue on i.MX6 Sabre SD board with Demo Images
Unfortunately, I do not have a i.MX6 Sabre SD board at hand to test with.
What I found out in the meantime: Displaying the Linux boot logo seems to be dependent on the kernel parameter 'quiet'. I use 'quiet' to silence the boot output because it slows down the boot process. But if I use 'quiet', the boot logo is not shown. If I remove 'quiet' from the kernel command line, the boot logo shows up. This was not the case with older kernels. Was this an intentional change? Is it possible to use 'quiet' and still display the boot logo?
Update: The logo is shown correctly if I apply the following patch to the kernel.
diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index c9235a2f42f8..357681821335 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -1091,8 +1091,10 @@ static void fbcon_init(struct vc_data *vc, int init)
info = registered_fb[con2fb_map[vc->vc_num]];
cap = info->flags;
+ /*
if (logo_shown < 0 && console_loglevel <= CONSOLE_LOGLEVEL_QUIET)
logo_shown = FBCON_LOGO_DONTSHOW;
+ */
if (vc != svc || logo_shown == FBCON_LOGO_DONTSHOW ||
(info->fix.type == FB_TYPE_TEXT))
Hi Michael
nxp supports only yocto 3.0 Zeus as described below from
official linux documentation from i.MX Software and Development Tools | NXP
Issues with dunfell release can be posted on meta-fsl-arm mailing list
meta-freescale@lists.yoctoproject.org | Home
Best regards
igor
Hello Igor,
Thank you again for your answer. I didn't realize that NXP does not yet support 3.1 (I guess they will in the future, as 3.1 is declared an LTS release).
Boot logo not shown
My problem with the boot logo does not seem to be specific to the linux-imx kernel, it seems to happen with the linux-fslc kernel also. The patch I posted above does fix the problem for me and displays the logo. I am not yet sure if this is the correct way to go, but it works and it seems to be a solution with a small impact.
Boot messages on framebuffer
The second problem with boot messages being shown on screen even though the console was set to ttymxc0 is now also fixed. Yocto 3.1 uses sysvinit recipe version 2.96. This version has changes in the bootlogd daemon which seems to send a ioctl(TIOCCONS) on the framebuffer console. That causes the system messages to be printed on the framebuffer console. Reverting it back to the bootlogd version in sysvinit version 2.88 fixes this problem.
Thanks for your help
Michael