此补丁使得从 uboot 到内核再到 Android 的显示不再中断。IPU及相关硬件显示接口在Uboot中只会初始化一次,内核代码会跳过IPU初始化。
1.描述
1) 在UBoot中支持HDMI、LVDS和LCD输出。
2) 支持从uboot到内核到Android的UBoot标志保持。
3)对于HDMI,支持720P和1080P模式。
4) 对于LVDS,支持1024x768和1080P双通道面板。
5)标志文件是一个32 bpp的bmp文件。
2. 文件列表
--kernel_imx\0001-Keep-uboot-logo-for-Android-boot-supports-HDMI-LCD-a.patch
--kernel_imx\0002-uboot-logo-keep-patch.patch 的错误修复
内核补丁支持徽标保留功能。
--uboot-imx\0001-启用HDMI-LCD和LVDS的uboot徽标.patch
Uboot补丁支持logo显示。
-- 徽标.bmp
示例 32bpp 徽标文件。
--自述文件.txt
此文件,请在使用补丁前参考它
3. 要求
-iMX6 SabreSD 板。
- Android JB4.2.2_1.1.0-GAUBoot 和内核。
4. 使用方法
-- 将两个补丁文件复制到Android kernel_imx和uboot-imx文件夹并应用它们。
$ cd ~/myandroid/kernel_imx/
$ git apply ./0001-Keep-uboot-logo-for-Android-boot-supports-HDMI-LCD-a.patch
$ cd ~/myandroid/bootable/bootloader/uboot-imx/
$ git apply ./0001-Enable-uboot-logo-for-HDMI-LCD-and-LVDS.patch
$ git apply ./0002-Bug-fix-for-uboot-logo-keep-patch.patch
-- 构建新的 uboot 映像:
$ cd ~/myandroid/bootable/bootloader/uboot-imx
$ 导出 CROSS_COMPILE=~/myandroid/prebuilt/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
$ 导出 ARCH=arm
$制作mx6q_sabresd_android_配置
$ make
-- 在构建新的 UBoot 映像之前,可以从文件 uboot-imx\include\configs\mx6q_sabresd.h 中选择显示类型
// 选择一种输出模式
定义IPU_输出_模式_HDMI
//#定义IPU_OUTPUT_MODE_LVDS
//#定义IPU_OUTPUT_MODE_LCD
-- 构建新的内核映像:
$ cd ~/myandroid/kernel_imx
$ 导出 CROSS_COMPILE=~/myandroid/prebuilt/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
$ 导出 ARCH=arm
$制作imx6_android_defconfig
$ 制作 uImage
-- 在“make uImage”之前,可以使用make menuconfig来选择显示类型。
系统类型 --->
飞思卡尔 MXC 实施 --->
MX6 clk 设置用于从引导加载程序到内核的平滑 UI 转换 --->
选择显示界面
()LCD、IPU1、DI0 上的平滑 UI 转换
()LVDS、IPU1、DI1 上的平滑 UI 转换
(X)HDMI、IPU2、DI0 上的 UI 转换流畅
-- 视频模式的 Uboot 参数
1080P HDMI:
“视频=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 fb0base=0x27b00000 fbmem=28M hdmi_audio_clk=148500000”
720P HDMI:
“视频=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 fb0base=0x27b00000 fbmem=28M hdmi_audio_clk=74250000”
1024x768 LVDS:
"video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 fb0base=0x27b00000 fbmem=28M"
800x480 LCD:
"video=mxcfb0:dev=lcd,CLAA-WVGA,if=RGB565,bpp=32 fb0base=0x27b00000 fbmem=28M"
-- 将 logo.bmp 添加到 SD 卡地址 0x100000 并跳过 54 字节 bmp 文件头。
sudo dd if=logo.bmp of=/dev/sdc bs=1 seek=1048576 skip=54
5. 注意
1)logo.bmp文件应为32bpp或16bpp,并且应与视频模式参数“bpp=xx”同步,
和 uboot 配置文件 mx6q_sabresd.h(#define DISPLAY_BPP xx)。
2)IPU编号和DI编号在内核文件“board-mx6q_sabresd.c”中硬编码。
静态结构fsl_mxc_hdmi_core_platform_data hdmi_core_data={
.ipu_id=1,
.disp_id = 0,
};
静态结构fsl_mxc_lcd_platform_data lcdif_data = {
.ipu_id=0,
.disp_id = 0,
.default_ifmt = IPU_PIX_FMT_RGB565,
};
静态结构fsl_mxc_ldb_platform_data ldb_data={
.ipu_id=0,
.disp_id = 1,
.ext_ref = 1,
.模式=LDB_SEP1,
.sec_ipu_id=0,
.sec_disp_id = 0,
};
3)IPU编号和DI编号由Uboot文件“include\configs\mx6q_sabresd.h”中的宏定义
#define IPU_NUM 2 //1 代表 IPU1,2 代表 IPU2。
#define DI_NUM 0 // 0 代表 DI0,1 代表 DI1。
4)uboot和kernel中使用的显示器类型必须相同,类型相同,IPU号相同,DI端口相同,
相同的分辨率。
[2015-06-29更新]:JB4.2.2_1.1.0_uboot_logo_keep_patch_2015-06-29.zip
修复 iMX6DL 的一些 LVDS 问题。
还给出了带有 DI0 的 LVDS0 的示例。
新的 Uboot 补丁:
0002-更新-lvds-时钟源至-pll2_pfd0.-与-kern.patch相同
0003-添加对iMX6DL的支持.补丁
新的内核补丁
0003-跳过-lvds-重新初始化以保留徽标.patch
0004-添加-示例-用于-LVDS0-徽标-保留.补丁
[2015-08-07更新]:JB4.2.2_1.1.0_uboot_logo_keep_patch_2015-08-07.zip
添加了新的 Uboot 补丁 0004-Correct-the-sequence-to-set-LDB-clock.patch
它可以纠正 LVDS 时钟设置序列,这是一个已知问题,有时会导致没有 LVDS 显示。
[2015-09-18更新]:JB4.3_1.1.1_uboot_logo_keep_patch_2015-09-18.zip
添加了针对Android JB4.3_GA1.1.1版本的补丁。
更新了时钟使用计数,在显示屏空白后,相关时钟可以正确关闭。
支持来自 PLL5 的 LVDS 时钟。
[2015-12-21更新]:新增3.10.53_GA1.1.0补丁:L3.10.53_GA1.1.0_uboot_logo_keep_patch_2015-12-21.zip。
在 iMX6DL/Q SabreSD 板上验证。它支持 LCD 和 LVDS 面板,HDMI 补丁将稍后发布。
[2016-01-04更新]:新增3.10.53_GA1.1.0补丁:L3.10.53_GA1.1.0_uboot_logo_keep_patch_2016-01-04.zip。
增加了 HDMI 显示支持。现在它支持 LCD、LVDS 和 HDMI 显示器。
修复了启动时的视频播放问题。
[2016-05-18 更新]:0001-修复分割模式LVDS面板无TX3信号问题.patch
发现一个问题,当使用双通道4通道LVDS面板时,在uboot中会有一个LVDS端口没有LVDS TX3信号,附件“0001-Fix-the-split-mode-LVDS-panel-no-TX3-signal-issue.patch”用于修复该问题,它基于JB4.3_1.1.1_uboot_logo_keep_patch_2015-09-18.zip,对于其他BSP,请手动移植。
[2016-08-29更新]:0001-重置后IPU在SRC控制寄存器中等待res.patch
在某些 iMX6 芯片上,在 SRC 控制寄存器中重置 IPU 后,立即启用 IPU 将导致系统挂起,为了避免此类问题,软件需要通过轮询 SRC 寄存器等待 IPU 重置完成。
附件“0001-After-reset-IPU-in-SRC-Control-Register-wait-for-res.patch”用于修复此问题,它基于JB4.3_1.1.1_uboot_logo_keep_patch_2015-09-18.zip +“0001-Fix-the-split-mode-LVDS-panel-no-TX3-signal-issue.patch”,对于其他BSP,请手动移植。
[2017-01-06更新] 添加 L4.1.15_GA1.2.0 BSP 和 Android M6.0.1_GA2.1.0 补丁BSP。
文件:L4.1.15_GA1.2.0_uboot_logo_keep_patch_2017-01-06.zip;M6.0.1_2.1.0_uboot_logo_keep_patch_2017-01-06.zip
谢谢您,明白了
你好ubootlogo已经可以显示在屏幕上了我现在想要ubootlogo和kernellogo不停的显示,现在我打了0001-Keep-uboot-logo-for-Linux-boot-supports-HDMI-LCD-and.patch,内核启动时屏幕黑屏,请问如何解决
期待你的答复
屏幕上已显示“谢谢”标志
你好, 李强,
如果我们的客户使用 emmc 并且没有 SD 卡设计,他们如何将徽标 bmp 文件下载到 emmc?在路径自述文件中,我们使用 dd 将徽标 bmp 文件复制到 SD 卡。非常感谢并期待您的回复。
祝您有美好的一天
Dan
Hi Qiang,
在我的主板上,我使用 800x480 RGB LCD,内核的视频参数是:
“视频=mxcfb0:dev=lcd,CLAA-WVGA,if=RGB24,bpp=32 fb0base=0x27b00000 fbmem=28M”
通过这种配置,显示在 Android 中运行完美,但在 uboot 中徽标不正确。我检查了补丁并发现对于 LCD 模式我们有定义:
#define DISPLAY_IF_BPP 16 //RGB565接口
于是我按照如下方式更改定义并重建uboot,但问题仍然存在。
#define DISPLAY_IF_BPP 24 //RGB24 接口
我对 uboot 代码进行了硬编码(通过在 board/freescale/mx6q_sabresd/mx6q_sabresd.c 中将 bmpReady 设置为 0)以显示红色、绿色和蓝色条,但颜色不正确,如下图所示。
如果您对此有任何建议,请告诉我。谢谢!