LCD移植笔记(飞凌 OKMX6DL/Q 平台)— 摘要

飞凌官方应用笔记(V1.0,2018-11-10),适用于 OKMX6DL/Q-C 平台 Linux 3.0.35 系统,讲解如何为平台添加新分辨率 LCD 屏。全文仅 7 页,核心是两步移植法。

核心方法:LCD 移植两步法

以添加 800x600 分辨率屏为例:

步骤一:内核驱动添加时钟参数

修改 linux-3.0.35/drivers/video/mxc/mxc_lcdif.c,根据屏体手册在 fb_videomode lcdif_modedb[] 数组中添加新屏的时序参数:

static struct fb_videomode lcdif_modedb[] = {
    { /* 800x480 @ 57 Hz, pixel clk @ 27MHz */
      "CLAA-WVGA", 57, 800, 480, 37037, 40, 60, 10, 10, 20, 10,
      FB_SYNC_CLK_LAT_FALL, FB_VMODE_NONINTERLACED, 0, },
    ...
    { "AT080-WVGA", 60, 800, 600, 21276, 46, 23, 210, 12, 1, 1,
      FB_SYNC_CLK_LAT_FALL, FB_VMODE_NONINTERLACED, 0, },
};

字段依次为:名称、刷新率、宽、高、像素时钟皮秒(pixclock)、左右前/后肩(left/right margin)、上下前/后肩(upper/lower margin)、同步脉冲宽度(hsync/vsync length)、同步极性标志、模式标志。

步骤二:U-Boot 中配置显示参数

修改 uboot-2009/include/configs/mx6q_sabresd.h:

#elif defined(CONFIG_UBOOT_KERNEL_LCD)
#define MXC_FB0 "mxcfb0=video=mxcfb0:dev=lcd,AT080-WVGA,if=RGB24,bpp=32\0"
#define MXC_FB1 "mxcfb1=video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32\0"
#define FB0BASE "fb0base=0x27b00000\0"
#endif
#define FBMEM   "fbmem=28M\0"
#define PANEL   "panel=AT080-WVGA\0"

关键注意点

  • U-Boot 中的面板名(如 AT080-WVGA)必须与内核 lcdif_modedb 中的名称完全一致,否则启动时匹配不到显示模式。
  • 时序参数需根据屏幕数据手册自行计算(典型值可从屏厂 Datasheet 的 Typical Application 直接取)。
  • 接口格式 if=RGB24、色深 bpp=32 按屏体接口选择。
  • 文档仅适用于 Linux 3.0.35 BSP,Linux 4.1.15 等其他 BSP 有差异,需自行调整(4.1 内核设备树化后改为 dts 中 display-timings 节点配置)。

可行动点

  • 若后续要在飞凌 i.MX6 平台上适配新屏:先拿到屏体时序表 → 换算 pixclock(皮秒 = 1e12 / (像素时钟Hz))→ 照两步法改内核和 U-Boot。
  • 该笔记主题与已消化的 i.MX-Yocto-Project用户指南 中显示子系统部分可互补。