文档:、linux-308内核LCD移植

Linux3.0.8平台搭建移植文档——lcd驱动移植
1.lcd驱动移植—背光灯
1)修改背光灯platform_device资源
修改platform_device中的platform_data(即淀粉牙签platform_pwm_backlight_data)的参数如下:
#vi arch/arm/mach-s5pv210/mach-smdkv210.c
    static struct platform_pwm_backlight_data smdkv210_backlight_data = {
    .pwm_id          = 3,
    .max_brightness    = 255,
    .dft_brightness    = 255,
    .pwm_period_ns    = 2500000,
    .init          = smdkv210_backlight_init,
    .exit          = smdkv210_backlight_exit,
};
2)配置背光灯选项
#make menuconfig
System Type -->
[*] PWM device support
Device Drivers -->
          Graphics support  --->
                        ...
                    [*] Backlight & LCD device support  --->
                      --- Backlight & LCD device support 
< >  Lowlevel LCD controls 
<*>  Lowlevel Backlight controls 
< >    Generic (aka Sharp Corgi) Backlight Driver
<*>    Generic PWM based Backlight Driver
3)make
将在arch/arm/boot/下生成编译好的可执行程序zImage下载到开发板即可
4)测试背光灯驱动是否正常运行
我们可以调节一下背光的亮度,背光灯驱动在sys目录下为我们提供了操作接口,到如下文件: 
cd /sys/devices/platform/s3c24xx-pwm.3/pwm-backlight.0/backlight/pwm-backlight.
0/
显示当前亮度:#cat brightness
设置背光亮度:#echo 50 > brightness  //背光灯亮度范围为0~255
2.lcd驱动移植—frambuffer
1)修改frambuffer的platform_device资源
    修改扫描参数(即smdkv210_fb_win0变量),具体修改如下:
#vi arch/arm/mach-s5pv210/mach-smdkv210.c
static struct s3c_fb_pd_win smdkv210_fb_win0 = {
    .win_mode = {
          .left_margin    = 13,
          .right_margin    = 120,          //右边界长度修改为120
          .upper_margin    = 7,
          .lower_margin    = 5,
          .hsync_len    = 3,
          .vsync_len    = 1,
胸针设计          .xres          = 800,
          .yres          = 480,
    },
    .max_bpp    = 32,
    .default_bpp    = 32,          //位深设置为32
中空板封边机};
2)配置framebuffer选项
      #make menuconfig       
    Device Drivers -->
              Graphics support  --->
                  ...
                  <*> Support for frame buffer devices  --->
                                *** Frame buffer hardware drivers ***   
< >  Epson S1D13XXX framebuffer support
<*>  Samsung S3C framebuffer support
[ ]    Debug register writes
...   
                    console display driver support  ---> 
                            <*> Framebuffer Console support
                            [*]  Map the console to the primary display device
                            [ ]  Framebuffer Console Rotation (NEW) 
                            [ ] Select compiled-in fonts (NEW)
3)make
将在arch/arm/boot/下生成编译好的可执行程序zImage下载到开发板即可,现象为不再花屏,也可以向屏幕输出一个字符串进行验证:echo “hello”  > /dev/tty0 
3.lcd驱动移植—开机logo功能实现
1)开机logo的驱动代码准备 
#vi极早期烟雾探测器 drivers/video/s3c-fb.c
s3c_fb_probe铃木秀一函数的结尾部添加以下代码:
static int __devinit s3c_fb_probe(struct platform_device *pdev)
{
    ....
  ....
    platform_set_drvdata(pdev, sfb);
    pm_runtime_put_sync(sfb->dev);
/* show the logo*/
#if defined(CONFIG_LOGO)
    if (fb_prepare_logo( sfb->windows[pd->default_win]->fbinfo, FB_ROTATE_UR)) {
          printk("[valor lion]: Start display and show logo\n");
          /* Start display and show logo on boot */
          fb_set_cmap(&sfb->windows[pd->default_win]->fbinfo->cmap, sfb->windows[pd->default_win]->fbinfo);
          fb_show_logo(sfb->windows[pd->default_win]->fbinfo, FB_ROTATE_UR);
    }
#endif
/*end*/
    return 0;
    ....
}
在上面添加代码中使用了“default_win”,所以要为到smdkv210_lcd0_pdata 结构体添加一个成员
#vi arch/arm/mach-s5pv210/mach-smdkv210.c
static struct s3c_fb_platdata smdkv210_lcd0_pdata __initdata = {
    .win[0]          = &smdkv210_fb_win0,
    .default_win = 0,
    .vidcon0    = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
    .vidcon1    = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
    .setup_gpio    = s5pv210_fb_gpio_setup_24bpp,
};
2)配置logo驱动支持
#make menuconfig 
Device Drivers -->
Graphics support  --->
                [*] Bootup logo  --->
[ ]  Standard black and white Linux logo
[ ]  Standard 16-color Linux logo 裂隙水
[*]  Standard 224-color Linux logo
3)make
将在arch/arm/boot/下生成编译好的可执行程序zImage下载到开发板即可,现象为左上角会现示一只小企鹅 
注意:
运行qt程序提示以下错误:
[root@sunplusedu /home]#Cannot create semaphore /tmp/qtembedded-0/QtEmbedded-0
'd'
Error 38 Function not implemented
Cannot get display lock       
answer:
这个问题发生的主要原因是因为linux kernel不支持信号量的相关操作,也就是说在kernel的编译配置中没有信号量相关的选项给选上,所以导致不能正常创建!编译时配置内核如下选项:
General setup  --->

本文发布于:2024-09-21 03:29:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/99388.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:驱动   背光灯   配置   移植   编译   亮度
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议