与LCD移植相关的概念

1. N bit的 LCD 指的是什么意思?

我们常常会说18bit 的LCD, 24 bit 的LCD, 是什么意思呢?

18/24 bit 指的是LCD 数据总线的宽度。

如下图RGB的数据总线:

搞清楚这个是很简单的,但如果你在配置设备树时遇到这样的情况, 往往很容易混淆:

mxcfb1: fb@0 {
compatible = “fsl,mxc_sdc_fb”;
interface_pix_fmt = “RGB666”;
default_bpp = <32>;
status = “okay”;
};

interface_pix_fmt 指的是什么? default_bpp又指的是什么?
default_bpp:

default_bpp 是指frambuffer 的颜色深度, bit per pixel, 顾名思义, 就是每一个像素由多个bit 表示。 注意, 这是描述的framebuffer 的, 不是LCD HW。

interface_pix_fmt:

interface_pix_fmt 指LCD HW 输出信号格式。如RGB565,RGB888,GRB888,BGR888,RGB666等。顾名思义,interface_pix_fmt 就是一个LCD 接口输出一个像素的格式。
一个18bit的LCD有可能输出RGB666, BGR666,GBR666. 其他依次类推!

framebuffer 的32bpp 的数据是如何转化为接口上的格式的呢?

是由硬件自动转换的。

framebuffer 的RGBA8888 转化为接口的RGB888,是不需要转化的。转化为RGB666/565就得硬件参与转化。

罗嗦了这么多,不过还有一个问题需要注意:就是一个18bit的屏幕,你的接口配置是RGB888呢?还是RGB666呢,还是GRB666 …

这个要完全看你的HW接法,如果你的HW 工程师按照RGB888 格式接了, 只是把最低位的01位没有接, 这时LCD 可以正常显示。虽然色深减低了, 但肉眼是没有办法察觉的。这是一种。
另外一种是RGB666的接法,这种接法在有些ARM平台上是和RGB888 的接的pin 完全不一样。如果你的接口还是用RGB24 那一定显示会出问题。
AM335x 平台RGB888和RGB666能兼容。

2. LCD Timing
关于LCD timing 概念介绍,请参照下图:

其解释如下:

这些参数大都是从LCD datasheet 上查出来的(pixelclock 除外)。hsync_len 和vsync_len 分别是hsync和vsync 同步信号所需要的时间,有些LCD device 会对这两参数指定, 有些没有,可以随意指定。
知道了这些值之后,你需要通过下面的公式得出pixelclock 的值:

F=(left_margin+xres+right_margin+hsync_len) x (upper_margin+yres+lower_margin+vsync_len)x refresh

这个公式是你理解这些参数的关键。
了解了这些参数的含义后,我们将会举一个栗子来说明具体的应用。
假设,我们LCD datasheet 给出了下面一段信息:

这幅图中有三种推荐值,min, type,Max。有经验的工程师会告诉你,一般选type,没错,但特殊情况呢?特殊情况有时什么? 有经验的工程师哥哥并没有告诉过我们。

我们刚才描述了pixelclock 的计算方法,但如果你计算出来的pixelclock不符合LCD 时钟源pll 分频范围,这个pixelclock 的时钟仍然不能用。为什么呢?
我们先描述下,pixelclock 的时钟来源,pixelclock不是天上掉下来的,他的来源于为LCD 提供时钟的PLL. pixelclock 是经过该PLL分频得来的。
如果,PLL最大只能分频50MHz,而你的pixelclock需要60MHz的clock, 如此,这是无论如何也办不到。软件只能给你分出他最大的频率50MHz。此时你拿着参数去显示,必定会有问题。

如果遇到这个问题,我们一般该怎么处理:

方案一:
修改该pll的时钟源,使其适应对应的pixelclock,这种方案一般不推荐,因为麻烦,不得以才为之。
方案二:
根据需要调整相应的LCD timing 参数,使对应的pixelclock 满足pll的分频条件。

方案二解答了我们对为什么lcd datasheet 会同时存在min.type.max三组值 的困惑。 其实不只有三组值,你完全可以通过上面那个公式计算出各种你想要的pixelclock。

我们再罗嗦一下上面那张LCD timing 的图:
Period : 指一行像素数目/一列的行数
Active: 就是激活的像素/行,也就是有效的像素数目/有效的行。如果800x600, 那么行有800哥active像素,列有600个active的行。
Blanking:H Blanking=left_margin+right_margin+hsync_len
V Blanking =upper_margin+lower_margin+vsync_len

至此,关于LCD 概念上的东西基本描述完了。希望对你有所帮助!

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第1 章  BOOTLOADER 的概念与功能.................................................................................................................... 4   1.1  嵌入式LINUX软件结构与分布 ........................................................................................................................... 4   1.2  在嵌入式LINUX中B OOT LOADER 的必要性............................................................................................................. 4   1.3  BOOT LOADER的功能和选择 ............................................................................................................................... .. 5   第2 章  U‐BOOT简介............................................................................................................................................ 6   2.1  U‐BOOT的起源............................................................................................................................... .......................... 6   2.2  U‐BOOT的开发情况和资源 ............................................................................................................................... ...... 6   第3 章  开发环境搭建......................................................................................................................................... 8   3.1  交叉编译工具链的安装 ............................................................................................................................... ....8   3.2  网路服务的设置 ............................................................................................................................... ................8   3.2.1安装配置TFTP 服务............................................................................................................................... ............. 8   3.2.2安装配置NFS服务............................................................................................................................... ............... 9   3.3  串口终端程序的安装配置 ............................................................................................................................. 10  3.3.1  C‐kermit 的安装配置(推荐安装) ................................................................................................................ 10  3.3.2  minicom的安装配置 ............................................................................................................................... ....11  第4 章  熟悉U‐BOOT的使用与烧写.................................................................................................................... 13  4.1  烧写U‐BOOT到MINI2440开发板 ....................................................................................................................... 13  4.2  常用U‐BOOT命令详解............................................................................................................................... ....... 13  4.2.1获取帮助 ............................................................................................................................... ........................... 13  4.2.2环境变量与相关指令 ............................................................................................................................... ....... 15  4.2.3串口传输命令 ............................................................................................................................... ................... 17  4.2.4网络命令 ............................................................................................................................... ........................... 19  4.2.5  Nand  Flash操作指令 ............................................................................................................................... ... 21  4.2.6  内存/ 寄存器操作指令 ............................................................................................................................... 24  4.2.7  Nor Flash指令............................................................................................................................... .............. 26  4.2.8  USB 操作指令 ............................................................................................................................... .............. 29  4.2.9  SD卡(MMC) 指令 ............................................................................................................................... .......... 32  4.2.10   FAT文件系统指令 ............................................................................................................................... ........33  4.2.11 系统引导指令 ............................................................................................................................... ................. 34  4.2.13   其他指令............................................................................................................................... ................. 36  4.3  下载与烧写 ............................................................................................................................... ...................... 37   4.3.1  通过SD卡烧入Nand Flash:..................................................................................................................... 37   4.3.2  通过U盘烧入N or Flash:......................................................................................................................... 37   4.3.3  通过TFTP 服务烧入Nand  Flash:............................................................................................................... 38  4.3.4  通过NFS  服务烧入Nand  Flash:................................................................................................................ 38  4.4  内核引导............................................................................................................................... .......................... 39  4.4.1  通过SD卡引导内核: ............................................................................................................................... . 40  4.4.2  通过TFTP 服务引导内核 ............................................................................................................................. 41  4.4.3  通过NFS服务引导内核: .......................................................................................................................... 41  4.4.4  通过Nand  Flash引导内核:....................................................................................................................... 42  第5 章  U‐BOOT源码简要分析........................................................................................................................... 44  5.1  U-BOOT 源码整体框架............................................................................................................................... ..... 44  5.2  U‐BOOT代码的大致执行流程(以S3C24 X0 为例)............................................................................................. 45  第6 章  U‐BOOT在MINI2440上的移植............................................................................................................... 53  6.1  建立开发板文件,测试编译环境 ................................................................................................................. 53  6.1.1  修改顶层Makefile ...................................................................................................................................... 53  6.1.2  在/board 中建立mini2440 目录和文件 ..................................................................................................... 54  6.1.3  在include/configs/ 中建立开发板配置文件 ............................................................................................... 54  6.1.4  测试编译环境 ............................................................................................................................... ............. 55  .2  第一阶段: 探索启动代码 ............................................................................................................................... . 55  6.2.1  关闭为AT9200 写的LED 跳转 ...................................................................................................................... 56  6.2.2  修改CPU 频率初始化设置 .......................................................................................................................... 56  6.2.3  修改lowlevel_init.S 文件............................................................................................................................. 57   6.2.4  修改代码重定向部分............................................................................................................................... .. 58  6.2.5  增加LED 的点亮操作 ............................................................................................................................... ... 66  .3  第二阶段: 修改初始化代码 ............................................................................................................................ 67  6.3.1  修改lib_arm/board.c 文件.......................................................................................................................... 68  6.3.2  修改board/tekkamanninja/mini2440/mini2440.c 文件。 .......................................................................... 69  .4  第三阶段:完善目标板外设驱动 ................................................................................................................. 73  6.4.1  Nand  Flash相关代码的修改....................................................................................................................... 73  6.4.2  添加Yaffs(2)镜像烧写功能 ........................................................................................................................ 75  6.4.3  修改Nor  Flash写入功能的代码 ................................................................................................................. 79  6.4.4  修改网络相关代码............................................................................................................................... ...... 84  6.4.5  添加串口Xmodem 传输协议(可不修改) .............................................................................................. 85  6.4.6  添加LCD 显示功能 ............................................................................................................................... ....... 87   6.4.7  添加SD卡(MMC)读取功能 ................................................................................................................... 92  .5  第四阶段:修正配置文件 ........................................................................................................................... 108   6.5.1  添加CONFIG_S3C2440条件定义 ............................................................................................................. 108   6.5.2  修改配置文件include/configs/mini2440.h .............................................................................................. 116   .6  重新编译并测试 ............................................................................................................................... ............121   章  下载最新的源代码.............................................................................................................................. 121  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值