找回密码
 注册
搜索
查看: 3689|回复: 24

[讨论] MTK平台lcd driver

[复制链接]
发表于 2007-8-23 09:20:16 | 显示全部楼层 |阅读模式
以前做过展讯平台driver,最近在研究MTK6228平台lcd driver,有些地方没有搞懂,请大侠们指点:lcd的数据线有18bit,但有时我们使用16bit的图片,在展讯平台可以通过定义HX8312_SEND_DATA来确定使用其中的哪16bit。在MTK平台中需要改动哪里来控制使用其中的哪16bit呢???又或者MTK是不是在16bit模式时固定的使用其中的bit1~8和bit10~17呢?
发表于 2007-8-23 09:36:29 | 显示全部楼层
如果你用16bit,做硬件的兄弟会把mtk的0-7连到lcd的1-8,MTK的8-15连到lcd的10-17,你基本不用管了,就是这样的[em06][em08]
点评回复

使用道具 举报

 楼主| 发表于 2007-8-23 11:04:09 | 显示全部楼层
现在硬件是bit0~17一一对应连接的。
软件定义是这样的:
在lcd_sw.h中
#difine MAIN_LCD_18BIT_MODE (这说明MT6228 18bit都能输出数据)

在×××_××_GPRS.mak中
MMI_MAIN_LCD_DEFAULT_FORMAT = 16(这是否说明mmi用的图片是16bit的??)

软件上在写lcd 16bit寄存器时是通过移位来实现
SET_LCD_CMD_PARAMETER(0,LCD_CMD,(((data&0xff00)<<2)|(data&0xff)<<1))

就是刷屏的数据不知道是在哪里设置bit位的对应关系的。
点评回复

使用道具 举报

发表于 2007-8-23 11:41:24 | 显示全部楼层
你的这个是以18bit传输的,不是16bit的[em01]
点评回复

使用道具 举报

 楼主| 发表于 2007-8-23 12:15:03 | 显示全部楼层
在哪里可以看到图片是18bit or 16bit?
点评回复

使用道具 举报

发表于 2007-8-27 11:17:26 | 显示全部楼层
bitmap的深度,右键属性里面就有
点评回复

使用道具 举报

 楼主| 发表于 2007-8-27 15:56:05 | 显示全部楼层
刷屏的buffer在哪里可以找到?变量名是什么?
刷菜单,播放3gp,录像都是同一个buffer吗?
点评回复

使用道具 举报

发表于 2007-8-27 18:34:08 | 显示全部楼层
也是在LCD_SW.H中的一个宏,名字好象叫做MAIN_LCD_OUTPUT_FORMAT,楼主仔细找找
点评回复

使用道具 举报

发表于 2007-8-27 22:37:31 | 显示全部楼层
在lcd_if.c再往上层找,应该可以找到的。而且应该都是同一buffer。
点评回复

使用道具 举报

 楼主| 发表于 2007-8-29 09:33:16 | 显示全部楼层
好像大家都没有仔细关注过这个问题呀
点评回复

使用道具 举报

 楼主| 发表于 2007-8-29 10:35:50 | 显示全部楼层
下面我说一下我的想法,有什么不对的,请大家指正。(lcd interface 18bit)
比如我们用16bit图片时,我们硬件上可以有两种接法:
a,如上面 longago兄所说,MTK bus0~7接lcd bus1~8,MTK bus8~15接lcd bus10~17,
这时MTK设为16bit模式,lcd也设为16bit模式,那么我向lcd写指令和写lcd ram时不用再移位了(且认为MTK低16bit向外写lcd ram);
b,MTK bus0~17接lcd bus0~17,MTK设为18bit模式(如果设成16bit模式MTK低16bit不能和lcd bus1~8,bus10~17一一对应上),lcd设为16bit模式(有效位为bus1~8和bus10~17)。那么每次向刷图的buffer里写数据时都要进行移位处理以对应lcd的bus1~8和bus10~17,在向lcd写指令时也要进行移位。
上面有两个地方不确定:
1,“且认为MTK低16bit向外写lcd ram[/COLOR]”,MTK在16bit模式只能是固定使用0~15bit吗?
2,“那么每次向刷图的buffer里写数据时都要进行移位处理以对应lcd的bus1~8和bus10~17[/COLOR]”,MTK能做这样的处理吗?
3,或许就不存在b的做法?
点评回复

使用道具 举报

发表于 2007-8-29 11:39:26 | 显示全部楼层
照我的理解
1,只能固定使用0-15bit
2,不能
3,不存在

有不对的地方,大家指出来探讨一下[em01]
点评回复

使用道具 举报

 楼主| 发表于 2007-8-29 11:56:21 | 显示全部楼层
但是我们有个项目是18bit都接上了,但是用的是16bit图片(MMI_MAIN_LCD_DEFAULT_FORMAT = 16),向lcd写指令需要软件移一下位,写lcd ram还没搞懂是怎么做的。
点评回复

使用道具 举报

 楼主| 发表于 2007-8-29 15:55:39 | 显示全部楼层
LCD+000Ch   LCD Interface Frame Transfer Register
这个寄存器是控制帧传送开始的,应该类似DMA操作吧,但这一帧的源地址和目的地址都指向哪呢???
点评回复

使用道具 举报

发表于 2007-8-31 12:54:17 | 显示全部楼层
具体使用那些位参考Driver IC的datasheet,上面都有详细说明的。
例如:如果是16-bit,有的IC去掉最后的2位,而有的IC去掉D0和D9的。
硬件工程师在设计的时候也是需要参考Datasheet的,不能乱改,要不然,软件这块就比较繁琐的。
点评回复

使用道具 举报

发表于 2007-8-31 23:55:04 | 显示全部楼层
mtk平台中一般
MMI_MAIN_LCD_DEFAULT_FORMAT = 16,而在底层中如果硬件设置为18位,那么驱动就应该按照18位来写,至于多出得两位,是将565中得5的低位补1变成666.
实际上图片的位深是没有18位的,只有16,24,32等
点评回复

使用道具 举报

发表于 2007-8-31 23:59:07 | 显示全部楼层
再补充一下,对于目前mtk平台来说,最好是使用16位,如果是使用24位的话,显示速度将变慢1.5倍的时间,而且在gdi这一层有时会出现一些奇怪的现象.我想24位是mtk为以后的平台(如使用arm9)做预研的
点评回复

使用道具 举报

发表于 2007-9-1 14:38:46 | 显示全部楼层
同意楼上的,要参考Driver IC的datasheet,不过现在TFT都是去掉D0,D9的比较多,

Thanks,
点评回复

使用道具 举报

发表于 2007-9-18 15:11:16 | 显示全部楼层
是的,所以如果是用18-bit接口作16-bit的屏,肯定是需要软件移位操作的,不管是寄存器还是GRAM数据。
点评回复

使用道具 举报

发表于 2007-9-26 14:50:54 | 显示全部楼层
基本不用理他,连基本的软件架构都不知道!废物!
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-28 02:28 , Processed in 0.046330 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表