iTop-4412适配自定义LCD屏幕

在Linux内核编译所用的设备内,编辑下列文件:

%LinuxKernelSrc%/drivers/video/samsung/s3cfb_wa101s.c

其中%LinuxKernelSrc%指解包Linux内核源码得到的目录。打开该文件后,编辑s3cfb_setup_lcd()函数中对wa101变量(一个s3cfb_lcd类型的结构体)的赋值。该函数根据get_lcd_type()函数的返回值来确定屏幕类型,如果无法确定应修改哪个屏幕类型下的参数,可以解除注释该函数头部的printk()函数后重新编译内核并刷入,根据控制台输出来确定具体的值。

s3cfb_lcd结构体的定义:

struct s3cfb_lcd {
    int width; //像素宽度
    int height; //像素高度
    int bpp; //像素深度
    int freq; //刷新率
    struct  s3cfb_lcd_timing timing;  //时序参数
    struct  s3cfb_lcd_polarity polarity; //电平极性参数
    void  (*init_ldi)(void);
    void  (*deinit_ldi)(void);
 };

s3cfb_lcd_timing结构体的定义:

struct s3cfb_lcd_timing {
    int h_fp;
    int h_bp;
    int h_sw;
    int v_fp;
    int v_fpe;
    int v_bp;
    int v_bpe;
    int v_sw;
};

s3cfb_lcd_polarity结构体的定义:

struct s3cfb_lcd_polarity {
    int rise_vclk;
    int inv_hsync;
    int inv_vsync;
    int inv_vden;
};

在编译环境的终端中定位到Linux内核源码目录,检查配置无误后键入指令:

make zImage

开始编译,随后刷写编译得到zImage文件即可。

如果开机画面显示偏位,那么需要修改以下文件:

%LinuxKernelSrc%/drivers/video/samsung/s3cfb_ops.c

中的s3cfb_draw_logo()函数中lefttop两个变量的值并重新编译内核。

为保证居中,lefttop两个变量的计算方法是:

left=(Screen.Width-640)/2
top=(Screen.Height-480)/2

其中,Screen.WidthScreen.Height为您的开发板的屏幕的宽度和高度,单位为像素。

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License