FrameBuffer 起始寄存器 1
这个寄存器的设置没有必要去修改(TFT/STN),都使用默认的代码即可:
FrameBuffer 起始寄存器 2 和 FrameBuffer 起始寄存器 3
这两个寄存器的设置比较重要,在此我给出 12 位色 CSTN 屏和 16 位色TFT 的设置代码:
前面提到的 LINEVAL 和 HOZVAL 以源码的形式给出,其中 CSTN 8 位色没有经过测试。
RGB Loopup Table Register
这三个寄存器的在驱动 256 色 CSTN 屏的时候需要使用,我在别的芯片上使用过,因为这颗芯片支持 12 位色,所以没有去调试,我给
出两组可能的值:
- S3C44B0 上的
rREDLUT = 0xFCA86420;
rGREENLUT = 0xFCA86420;
rBLUELUT = 0xFFFFFA50; - Jupiter 上的
rREDLUT = 0xFEC85310
rGREENLUT = 0xFEC85310
rBLUELUT = 0xFB40
5) 好了,各个寄存器的设置完成了,最后在驱动 CSTN屏的时候需要提醒大家一句,CSTN的信号引脚中有一个叫VM/DISP的信号线,这个信号线的作用就是打开LCD的显示开关,让其进行显示,它可以接到任何一个 GPIO 口上。S3C2410 中提供了一个 VM 信号,可以将 LCD的这个信号与 S3C2410 的 VM 信号相接即可,然后在驱动中一定要加上如下语句(蓝色选中部分):
否则你的 LCD可能没有任何显示哦(对于 TFT 屏不需要这个语句)
6) 关于 12 位色的 CSTN屏的驱动还需要做一些工作,我在这里简单介绍一下:
a) 首先要完成一个 fbcon-cfb12.c和 fbcon-cfb12.h 的编写,这两个文件很简单,在armLinux 中不是提供了 fbcon-cfb16.c 和 fbcon-cfb12.h 吗?简单修改一下就可以了;
b) 将 fbcon-cfb12.c 的编译加入 Config.in 中(不会的话去 google 搜一下,或者看一下我的另一篇文章《JFFS2 在 HHARM2410 上的实现》,里边有一些说明),并定义一个 FBCON_HAS_CFB12 参数(模仿 FBCON_HAS_CFB16 呗);
c) 另外,需要在 s3c2410fb.c 中的相应部分加上对 12位色的支持即可。呵,说起来简单,但实际做起来可能会有一些问题,给大家一个窍门:在程序中找到#ifdef FBCON_HAS_CFB16 之类的代码,简单理解一下加上对 12 位色的支持;
d) 我只给出函数 s3c2410fb_set_var中的改动,其他的应该都不是很困难,相信朋友们都能搞定。
e) 不要跟我要源码哦,否则老板会不高兴哦 。
否则你的 LCD可能没有任何显示哦(对于 TFT 屏不需要这个语句)
6) 关于 12 位色的 CSTN屏的驱动还需要做一些工作,我在这里简单介绍一下:
a) 首先要完成一个 fbcon-cfb12.c和 fbcon-cfb12.h 的编写,这两个文件很简单,在armLinux 中不是提供了 fbcon-cfb16.c 和 fbcon-cfb12.h 吗?简单修改一下就可以了;
b) 将 fbcon-cfb12.c 的编译加入 Config.in 中(不会的话去 google 搜一下,或者看一下我的另一篇文章《JFFS2 在 HHARM2410 上的实现》,里边有一些说明),并定义一个 FBCON_HAS_CFB12 参数(模仿 FBCON_HAS_CFB16 呗);
c) 另外,需要在 s3c2410fb.c 中的相应部分加上对 12位色的支持即可。呵,说起来简单,但实际做起来可能会有一些问题,给大家一个窍门:在程序中找到#ifdef FBCON_HAS_CFB16 之类的代码,简单理解一下加上对 12 位色的支持;
d) 我只给出函数 s3c2410fb_set_var中的改动,其他的应该都不是很困难,相信朋友们都能搞定。
e) 不要跟我要源码哦,否则老板会不高兴哦 。