内核启动后,lcd显示logo失败

那一抹风 那一抹风     2022-09-20     260

关键词:

针对-s5pv210,但对其他平台也使用
lcd显示logo失败,若显示成功默认的logo是一只企鹅,但是串口打印“Start display and show logo”,但是LCD屏没有显示   
[    0.833071] s3cfb s3cfb: [fb2] dma: 0x465ab000, cpu: 0xe1000000, size: 0x005dc000
[    0.845112] FIMD src sclk = 166750000
[    0.965701] s3cfb s3cfb: registered successfully
[    0.965744] Start display and show logo
 
原因:LCD驱动有问题。
第一步:在arch/arm/mach-s5pv210/mach-smdkc110.c当中,约712行,将之前的LCD初始化删掉,并修改如下:
#ifdef CONFIG_FB_S3C_LTE480WV
static struct s3cfb_lcd wvga_s70 = {
 
        .width = 800,
        .height = 480,
        .p_width = 154,
        .p_height = 96,
        .bpp = 32,
        .freq = 65,
 
        .timing = {
                .h_fp = 80,
                .h_bp = 36,
                .h_sw = 10,
                .v_fp = 22,
                .v_fpe = 1,
                .v_bp = 15,
                .v_bpe = 1,
                .v_sw = 8,
        },
        .polarity = {
                .rise_vclk = 0,
                .inv_hsync = 1,
                .inv_vsync = 1,
                .inv_vden = 0,
        },
};
 
static void lcd_cfg_gpio(struct platform_device *pdev)
{
    int i;
 
    for (i = 0; i < 8; i++) {
        s3c_gpio_cfgpin(S5PV210_GPF0(i), S3C_GPIO_SFN(2));
        s3c_gpio_setpull(S5PV210_GPF0(i), S3C_GPIO_PULL_NONE);
    }
 
    for (i = 0; i < 8; i++) {
        s3c_gpio_cfgpin(S5PV210_GPF1(i), S3C_GPIO_SFN(2));
        s3c_gpio_setpull(S5PV210_GPF1(i), S3C_GPIO_PULL_NONE);
    }
 
    for (i = 0; i < 8; i++) {
        s3c_gpio_cfgpin(S5PV210_GPF2(i), S3C_GPIO_SFN(2));
        s3c_gpio_setpull(S5PV210_GPF2(i), S3C_GPIO_PULL_NONE);
    }
 
    for (i = 0; i < 4; i++) {
        s3c_gpio_cfgpin(S5PV210_GPF3(i), S3C_GPIO_SFN(2));
        s3c_gpio_setpull(S5PV210_GPF3(i), S3C_GPIO_PULL_NONE);
    }
 
    /* mDNIe SEL: why we shall write 0x2 ? */
    writel(0x2, S5P_MDNIE_SEL);
 
    /* drive strength to max */
    writel(0xaaaaaaaa, S5PV210_GPF0_BASE + 0xc);
    writel(0xaaaaaaaa, S5PV210_GPF1_BASE + 0xc);
    writel(0xaaaaaaaa, S5PV210_GPF2_BASE + 0xc);
    writel(0x000000aa, S5PV210_GPF3_BASE + 0xc);
}
 
#define S5PV210_GPD_0_0_TOUT_0  (0x2)
#define S5PV210_GPD_0_1_TOUT_1  (0x2 << 4)
#define S5PV210_GPD_0_2_TOUT_2  (0x2 << 8)
#define S5PV210_GPD_0_3_TOUT_3  (0x2 << 12)
static int lcd_backlight_on(struct platform_device *pdev)
{
    int err;
 
    err = gpio_request(S5PV210_GPD0(3), "GPD0");
 
    if (err) {
        printk(KERN_ERR "failed to request GPD0 for "
            "lcd backlight control
");
        return err;
    }
 
    gpio_direction_output(S5PV210_GPD0(3), 1);
 
    s3c_gpio_cfgpin(S5PV210_GPD0(3), S5PV210_GPD_0_3_TOUT_3);
 
    gpio_free(S5PV210_GPD0(3));
    return 0;
}
 
static int lcd_backlight_off(struct platform_device *pdev, int onoff)
{
    int err;
 
    err = gpio_request(S5PV210_GPD0(3), "GPD0");
 
    if (err) {
        printk(KERN_ERR "failed to request GPD0 for "
                "lcd backlight control
");
        return err;
    }
 
    gpio_direction_output(S5PV210_GPD0(3), 0);
    gpio_free(S5PV210_GPD0(3));
    return 0;
}
 
static int lcd_reset_lcd(struct platform_device *pdev)
{
    int err;
 
    err = gpio_request(S5PV210_GPH0(6), "GPH0");
    if (err) {
        printk(KERN_ERR "failed to request GPH0 for "
                "lcd reset control
");
        return err;
    }
 
    gpio_direction_output(S5PV210_GPH0(6), 1);
    mdelay(100);
 
    gpio_set_value(S5PV210_GPH0(6), 0);
    mdelay(10);
 
    gpio_set_value(S5PV210_GPH0(6), 1);
    mdelay(10);
 
    gpio_free(S5PV210_GPH0(6));
 
    return 0;
}
 
static struct s3c_platform_fb lte480wv_fb_data __initdata = {
    .hw_ver    = 0x62,
    .nr_wins = 5,
    .default_win = CONFIG_FB_S3C_DEFAULT_WINDOW,
    .swap = FB_SWAP_WORD | FB_SWAP_HWORD,
       .lcd = &wvga_s70,
    .cfg_gpio    = lcd_cfg_gpio,
    .backlight_on    = lcd_backlight_on,
    .backlight_onoff    = lcd_backlight_off,
    .reset_lcd    = lcd_reset_lcd,
};
#endif
 
第二步:使用make menuconfig,去配置当前显示的windows,请配置为windows0
   
Device Drivers
  -->Graphics support 
     --> Support for frame buffer devices
        --> (2)     Default Window (0-4) 

 

 
修改为
Device Drivers
  -->Graphics support 
      --> Support for frame buffer devices
         --> (0)     Default Window (0-4)

 

uboot中支持lcd和hdmi显示不同的logo图片

...p://blog.csdn.net/u010865783/article/details/54953315在lcd为竖屏,hdmi显示横屏的情况下,如果按照默认的uboot显示框架来看,只能保证lcd或者hdmi上面显示出来的图片一个是正的,另外一个是旋转了90度的样子。 为了能是lcd和hdmi同时支持... 查看详情

无法打开内核设备“.vmcidevvmx”:操作成功完成。是否在安装vmwareworkstation后重新引导?模块“devicepoweron”启动失败。未能启动虚拟机。(代码片段)

文章目录问题一:无法打开内核设备“\\\\.\\VMCIDev\\VMX”:操作成功完成。是否在安装VMwareWorkstation后重新引导?问题二:win10安装虚拟机提示主IP地址显示网络信息不可用问题一:无法打开内核设备“\\.\\VMCIDev\\VMX”:操作... 查看详情

无法打开内核设备“.vmcidevvmx”:操作成功完成。是否在安装vmwareworkstation后重新引导?模块“devicepoweron”启动失败。未能启动虚拟机。(代码片段)

文章目录问题一:无法打开内核设备“\\\\.\\VMCIDev\\VMX”:操作成功完成。是否在安装VMwareWorkstation后重新引导?问题二:win10安装虚拟机提示主IP地址显示网络信息不可用问题一:无法打开内核设备“\\.\\VMCIDev\\VMX”:操作... 查看详情

如何让uboot启动时显示logo

自定义u-boot的开机logo的方法  我用的u-boot是2009.08版的。想要修改开机logo为自定义的图片,而不是原来的denx.bmp。方法其实很简单,只需替换u-boot的tools/logos目录中的denx.bmp,再重新编译(可能需要先执行makeclean,再make,新的... 查看详情

嵌入式linux|使linux的启动信息显示到lcd上面&设置lcd屏幕为终端控制台(代码片段)

...在LCD上面。(前提是,已经将LCD驱动程序移植到内核中去)需要修改bootloader中的启动参数信息。一、默认串口显示setenvbootargs'console=ttymxc0,115200root=/dev/mmcblk1p2rootwaitrw'saveenv二、在LCD显示setenvbootargs'console... 查看详情

安装后 Docker 无法启动,并显示“环回附加失败”

】安装后Docker无法启动,并显示“环回附加失败”【英文标题】:Dockerfailstostartafterinstallwith"loopbackattachfailed"【发布时间】:2018-07-1522:29:49【问题描述】:我已经按照以下说明从存储库安装了docker-ce:https://docs.docker.com/ins... 查看详情

android启动页显示自定义logo

参考技术A项目启动时,需要在开屏页显示一个Logo先在style.xml中新建一个样式:注意:重点是android:windowBackground属性。在drawable下面创建splash.xml注意:显示的Logo尺寸要求切图时就控制好尺寸。这里是没法限制尺寸的。样式创建好... 查看详情

嵌入式linux|设置lcd屏幕为终端控制台(代码片段)

...同时显示终端,但此时LCD屏幕终端还不能交互。启动内核即可看到效果:3.解决交互问题修改/etc/inittab文件,添加一行:tty1::askfirst:-/bin/sh修改完成以后保存/etc/inittab并退出,然后重启开发板,重启以后开... 查看详情

kdump启动失败

...因:先来说一下,什么是kdumpkdump是一种先进的基于kexec的内核崩溃转储机制。当系统崩溃时,kdump使用kexec启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给... 查看详情

第15讲树莓派3.5寸lcd触摸屏怎么用

...系统界面呢?HTML和LCD可以同时显示吗?通过SSH怎么安装启动LCD呢?带着这样的疑问,今天蓝宙每日一讲我们来讲述一下树莓3.5寸LCD触摸屏到底怎么用?也就是一帖搞定树莓LCD触摸屏。首先,使用将烧有raspbian系统的SD卡插入树莓... 查看详情

linux内核lcd驱动分析与换屏方法(tiny4412)

​Linux内核中换屏技术​21.5.1u-boot中的参数bootargs实现换屏​在uboot中有一个bootargs环境变量,这个参数就是传递数据给内核的。​对tiny4412提供的内核,可以通过修改bootargs实现驱动不同的LCD屏。​21.5.2分析bootargs中的lcd参数再启... 查看详情

电脑装了remixos后,电脑就启动不了了?

...板)我猜测可能是主板或者CPU这两个的问题。但如果有把内核换到PhoenixOS(PhoenixOS也是无法启动,可以显示LOGO)里,直接连LOGO都 查看详情

Spark 作业在显示所有作业已完成然后失败后重新启动(TimeoutException: Futures timed out after [300 seconds])

】Spark作业在显示所有作业已完成然后失败后重新启动(TimeoutException:Futurestimedoutafter[300seconds])【英文标题】:Sparkjobrestartedaftershowingalljobscompletedandthenfails(TimeoutException:Futurestimedoutafter[300seconds])【发布时间】:2016-03-2916:56:11【问 查看详情

linux启动不了?等了5分多种还是在那里

参考技术A一、启动内核  首先介绍启动内核部分。电脑启动时,BIOS装载MBR,然后从当前活动分区启动,LILO获得引  导过程的控制权后,会显示LILO提示符。此时如果用户不进行任何操作,LILO将在等待制定  时间后自动引... 查看详情

uboot启动时的logo怎么一直显示到kernel起来

参考技术A这个要看你具体的配置的,根据我的经验UBOOT大概不到一秒就可以启动起来,不过一般都会设等待时间的。kernel大概四五秒的样子就可以起来 查看详情

centos6.6里kdump启动失败的原因

...失败先来说一下,什么是kdumpkdump是一种先进的基于kexec的内核崩溃转储机制。当系统崩溃时,kdump使用kexec启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给... 查看详情

应用程序启动后打开 Cordova 地理定位失败

】应用程序启动后打开Cordova地理定位失败【英文标题】:Cordovageolocationfailswhenturnedonaftertheappwasstarted【发布时间】:2015-01-2911:49:12【问题描述】:我在Cordova应用程序(在Android上;在iOS上工作得很好)上有这个东西,这意味着一... 查看详情

如何把安卓开机动画,换成谷歌新logo

...画图片组成。而开机第一屏的图片是在android系统的boot.img内核镜像内,简单的说,boot.img包含两部分,分别为kernel和ramdisk。当你的手机启动时首先会启动RADIO,同时调用出开机第一屏,然后是SPL。此时SPL会根据你的按键,确定进入... 查看详情