开机显示LOGO时会闪一下

本文详细介绍了如何通过在LCD显示操作后加入延时来解决展讯SC7730平台开机显示LOGO时闪屏的问题。通过对关键代码段normal_emc_mode.c中的_boot_display_logo()和lcd_display_logo()函数进行修改,添加了mdelay(100)来增加延时,最终成功解决了闪屏现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平台:展讯SC7730

现象:开机显示LOGO时会闪一下

观察现象似乎像是LCD没刷完屏背光就亮了。

问题首先定位于uboot开机显示LOGO段代码。

normal_emc_mode.c

void vlx_nand_boot(char * kernel_pname, char * cmdline, int backlight_set)
{
#ifdef CONFIG_SPLASH_SCREEN
    _boot_display_logo(dev, backlight_set);
#endif
}

进入

_boot_display_logo()

函数,再进入

lcd_display_logo()

函数,找到lcd显示操作和点亮背光的代码:

lcd_display();
set_backlight(255);

我想在lcd显示之后加个延时,应该可以解决问题。

代码做如下修改

        lcd_display();
            mdelay(100);
        set_backlight(255);

果然解决问题。

转载于:https://www.cnblogs.com/aceheart/p/3750567.html

<think>我们正在处理关于设备开机Logo显示的问题。根据用户提供的引用资料,我们可以总结出几个关键点: 1. 在Linux(Tina)系统中,可以通过两种方式设置开机Logo:一种是内核驱动中写好的代码,另一种是从logo分区加载,方便应用层更换(引用[1])。 2. 安卓系统中,替换开机Logo开机动画(bootanimation.zip)时,需要注意图片的分辨率、位深度以及压缩方式(引用[2])。 3. 电脑开机Logo可以通过BIOS设置关闭(引用[3])。 4. 在RK3568平台上,MIPI屏幕可能只显示uboot logo然后黑屏,可能是屏幕硬件差异导致(引用[4])。 用户的问题是:“我想设备开机Logo显示相关问题或设置 请问开机Logo显示设置或问题” 因此,我们需要针对不同的设备(Linux嵌入式设备、安卓设备、电脑)以及可能遇到的问题,提供开机Logo的设置方法和问题解决方案。 回答结构: 1. Linux(Tina)系统设置开机Logo的方法 2. 安卓系统设置开机Logo开机动画的方法及问题解决 3. 电脑开机Logo的关闭方法 4. 常见问题及解决方案(包括引用[4]中的问题) 注意:由于引用[1]中提到了Tina系统(全志平台)设置logo分区的具体步骤,我们可以详细说明。引用[2]则提供了安卓更换logo和动画的注意事项。引用[3]提供了关闭电脑开机Logo的方法。引用[4]提到了一个具体的问题案例,我们可以将其纳入常见问题中。 下面开始组织回答。</think>### 设备开机Logo显示设置与问题解决方案 #### 一、Linux嵌入式系统(如Tina系统) 1. **分区加载方案**(推荐) 通过预置logo分区实现灵活更换,需修改分区表文件: ```bash # 路径: device/config/chips/<芯片型号>/configs/<板型>/linux/sys_partition.fex [partition] name = logo size = 2048 # 分区大小(KB) downloadfile = "logo.bmp" # 预置图片 ``` ![分区表示例](https://img-blog.csdnimg.cn/direct/652039a7c90844b999fb95b1bbf1933c.png)[^1] **优势**:应用层可直接替换分区内图片文件,无需重新编译内核。 2. **内核驱动方案** 在显示驱动中硬编码Logo地址(适用于固定Logo): ```c // 驱动代码示例 fb_logo = kmalloc(LOGO_SIZE, GFP_KERNEL); memcpy(fb_logo, logo_data, LOGO_SIZE); ``` #### 二、安卓系统设置要点 1. **Logo图片规范** - 分辨率必须匹配设备输出:`adb shell wm size` 获取屏幕分辨率 - 位深度必须为 **16位**(24/32位会导致花屏/黑屏) - 格式建议:未压缩的BMP或PNG[^2] 2. **开机动画规范** ```txt // desc.txt 文件示例 240 280 30 # 宽 高 帧率 p 1 0 part1 # 播放1次,间隔0帧 p 0 0 part2 # 循环播放 [空行] # 最后必须有空行 ``` - part1/part2目录存放分辨率匹配的PNG序列 - 压缩方式:ZIP存储模式(非压缩)[^2] ![压缩设置](https://example.com/zip-storage.png) *图示存储模式选择* #### 三、常见问题解决 | 问题现象 | 原因分析 | 解决方案 | |---------------------------|---------------------------|-----------------------------------| | **Uboot显示后黑屏** | 屏幕时序/初始化参数不匹配 | 对比样品屏硬件参数,调整驱动代码[^4] | | **Logo花屏/颜色异常** | 位深度不匹配(非16位) | 转换图片位深度:`convert -depth 16 input.png output.bmp` | | **开机动画不显示** | desc.txt格式错误 | 检查末尾空行及分辨率参数[^2] | | **电脑开机Logo关闭** | BIOS设置开启 | 开机按F1/DEL → Advanced → 关闭Quiet Boot[^3] | #### 四、高级调试技巧 1. **RK3568 MIPI屏异常排查**: ```bash # 查看内核显示日志 dmesg | grep -i "drm\|mipi" # 检查屏幕初始化序列 cat /sys/kernel/debug/mipi_dsi/commands ``` 2. **动态更新Logo**: 安卓系统可通过覆盖分区文件实现: ```bash adb push new_logo.bmp /dev/block/by-name/logo ``` > **关键原则**:显示驱动加载阶段(kernel initcall)与固件存储位置(uboot/kernel分区)需严格匹配,错误的分区地址会导致Logo无法解析[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值