蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88
全部博文(311)
分类: 嵌入式
2011-06-13 11:04:58
Andrew Huang 转载请注明作者和网址
I80屏,也称为MCU屏。是广泛应用于中低端手机和单片机领域的低价LCD屏。价格相当低廉,往往是同尺寸RGB屏价格一半,在小屏应用领域,如工控设备,点读机,POS机和应用相当广泛。在一些嵌入式CPU中,如国产的君正,很早就加入I80屏的支持。三星的ARM CPU从S3C6410开始也加入了I80屏的支持,但是没有提供驱动。
出于教学的考虑和我做项目咨询的公司产品需要,我在尝试修改S3CFB原有的驱动未果的情况,只能从零开始编写了I80 Frame Buffer驱动。
因为时间关系,这一个版本只测试原始的FraemBuffer编程和SDL库的支持,对于象QT,FrameBuffer Console之类应用支持在下一步增加。虽然是这样已经可以应用在很多领域了.
这里也打一下广告,如果你在产品中需要I80/MCU的屏,我们也可以大量提供各种尺寸产品(2.8",3.0"为主),并提供相应的技术支持.可以发邮件给我 bluedrum@163.com.
同时也提供RGB-LCD屏,包括3.5"/4.3"/7"及10"以上超大屏,也提供技术服务.
横屏效果(320x240)
竖屏效果(240x320)
1. 硬件连线
请参考S
原始的测试平台是 友善之臂的MINI6410. 内核版本是
在MINI6410上的连线测试
2. 内核调整:
目前I80 FrameBuffer驱动是完全从零开发出来,与S
这一个版本的驱动将需要内核如下调整:
1. 保留Frame Buffer库支持。
2. 移走S3Cfb RGB-LCD驱动支持。
3. 这个版本没增加对framebuffer终端的支持,所以要从内核移走这个功能。
l
保留Frame Buffer库支持
l
移走S3Cfb RGB-LCD驱动支持
它在
-> Device Drivers │
│ -> Graphics support │
│ -> Console display driver support │
│ -> Framebuffer Console support (FRAMEBUFFER_CONSOLE [=n])
修改后保存编译内核 make zImage.
并且新内核下载到板上。
3.驱动使用
驱动是以动态模块的方式提供的,在板启动文件 /etc/init.d/rcS最开始加入如下两句
将I80驱动 i80dev.ko ,i80fb.ko 拷入开发板的根文件系统 /opt下
insmod
/opt/i80dev.ko
insmod
/opt/i80fb.ko
如果加载成功,应该看到/dev/fb0 设备结点,运行fbset 能看到如下内容
[root@FriendlyARM show]# fbset mode "320x240-0"
# D: 0.000 MHz,
H: 0.000 kHz, V: 0.000 Hz geometry 320 240 320 240 16
timings 0 0 0 0 0 0 0
accel false
rgba 5/11,6/5,5/0,0/0 endmode
4. 应用程序测试
因MCU屏和S
I80的横屏的参数是 宽320,高240, BPP为16.
4.1原始的frame Buffer测试
在对fb0映射的mmap内存进行更新后,需要主动调用一下如下宏来进行刷新.
#define I80_CMD_START_SHOW (301)
#define I80_START_SHOW(fd) ioctl(fd,I80_CMD_START_SHOW,0)
具体使用方法,请参见 show_bmp.c 样例
4.2 SDL使用I80屏.
SDL库的因为有专门的更新函数,因此使用I80屏时需要对SDL库进行小的调整,主要集中在 SDL_fbvideo.c这个文件中,在相关的更新函数里加入I80_START_SHOW的调用。
具体修改位置参见这个文件中宏I80_FB_PATCH宏所定义的位置。
应用程序在调用SDL库,要注意初始化视频必须使用SDL_HWSURFACE | SDL_FULLSCREE,而非常用的SDL_SWSURFACE参数。
一般初始化语句要象如下编写
screen = SDL_SetVideoMode( 320, 240, 16,SDL_HWSURFACE | SDL_FULLSCREEN);
zhangwangcz2013-07-03 11:13:59
您好,看了您的这篇文章受益匪浅,最近我也在做一款i80接口的LCD屏驱动,不知能否参考下您写的驱动模块呢?不胜感激!我的邮箱:1053015337@qq.com