LVDS移植应用笔记(飞凌OKMX6DL/Q平台)
文件概述
本文档是保定飞凌嵌入式技术有限公司的应用笔记,基于飞凌FETMX6DL/Q核心版,针对Linux 3.0.35操作系统下的LVDS屏幕移植。以10.1英寸1280x800分辨率的LVDS屏幕为例,介绍内核和U-Boot两部分的修改方法。
适用范围
- 主要适用于飞凌OKMX6DL/Q-C平台Linux 3.0.35操作系统
- 其他平台可参考,但需自行修改以适应
移植步骤
步骤一:内核部分修改
修改文件: linux-3.0.35/drivers/video/mxc/ldb.c
修改内容: 添加LVDS显示模式到ldb_modedb数组
static struct fb_videomode ldb_modedb[] = {
{
"LDB-WXGA", 60, 1280, 800, 14064,
70, 80, 8, 13, 10, 2,
0, FB_VMODE_NONINTERLACED,
FB_MODE_IS_DETAILED,
},
{
"LDB-XGA", 60, 1024, 768, 15385,
220, 40, 21, 7, 60, 10, 0,
FB_VMODE_NONINTERLACED,
FB_MODE_IS_DETAILED,
},
{
"LDB-1080P60", 60, 1920, 1080, 7692,
100, 40, 30, 3, 10, 2, 0,
FB_VMODE_NONINTERLACED,
FB_MODE_IS_DETAILED,
},
};时序参数说明(以1280x800为例):
- 像素时钟:14064 kHz(约14MHz)
- 水平有效:1280,水平前肩:70,水平同步脉宽:80,水平后肩:8
- 垂直有效:800,垂直前肩:13,垂直同步脉宽:10,垂直后肩:2
- 非隔行扫描,详细模式
步骤二:U-Boot部分修改
修改文件: uboot-2009/include/configs/mx6q_sabresd.h
修改内容: 添加LVDS显示配置宏
#if defined(CONFIG_UBOOT_KERNEL_LVDS)
#define MXC_FB0 "mxcfb0=video=mxcfb0:dev=ldb,LDB-WXGA,if=RGB24,bpp=32\0"
#define MXC_FB1 "mxcfb1=video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32\0"
#define FB0BASE "fb0base=fb0base=0x27b00000\0"
#define FBMEM "fbmem=fbmem=28M\0"
#define PANEL "panel=LDB-WXGA\0"
#endif关键配置项:
mxcfb0: 指定LVDS显示设备,使用LDB-WXGA模式,RGB24接口,32bppmxcfb1: 同时配置HDMI显示(1920x1080@60Hz)fb0base: 显存基地址0x27b00000fbmem: 显存大小28MBpanel: 面板类型LDB-WXGA
注意事项
- 名称一致性: U-Boot中的
LDB-WXGA必须与内核中的显示模式名称保持一致。 - 参数计算: 代码中的具体时序参数需要根据屏幕手册自行计算,可通过搜索引擎了解相关参数含义。
- 双屏配置: 如需同时使用LVDS和HDMI,需要正确配置两个fb设备。
飞凌公司信息
- 公司: 保定飞凌嵌入式技术有限公司
- 地址: 河北省保定市向阳北大街2699号
- 电话: 0312-3113161
- 传真: 0312-33102651
- 文档版本: V1.0,日期2018.11.10
可复用要点
- LVDS移植标准流程: 内核驱动修改→U-Boot启动参数配置的两步法。
- 时序参数计算: 掌握fb_videomode结构体各字段的含义和计算方法是关键。
- 双显配置: 同时配置LVDS和HDMI的显存分配策略(fb0base和fbmem)。
- 宏定义条件编译: 通过
CONFIG_UBOOT_KERNEL_LVDS宏控制LVDS功能的开关。