Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1682910
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: 嵌入式

2011-07-26 15:30:45

Andrew Huang

   在调试LINUX  I80的驱动时,发现一个现象,对于s3c6410 寄存器WINCON0,是用来控制显存格式排列的和传输的。其中16位,HAWSWP 位表示Half-Word swap control bit.它的对于16bpp的显存组织有重大影响。
寄存器是这样描述的的
  

  在16pp的中,如果HAWSWP 0 ,表示里面的点是反排的,即 P2,P1,P4,P3,这样排列,而HAWSWP=1是按P1,P2,p3,p4排列。

  这个解释很清楚p466
   

相对于一般程序而,HWSWP=1比较好处理,LINUX的S3fb也是取1值,这样应用程不需要调整太多,如果HWSWP=0,则在应用程序中需要把奇偶点数据对调.这样要调整很多地方。

  但是在I80程序中,实际的现象是无论你设置HWSWP为什么值,他始终是表示行为是HWSWP为0的现象,就是必须要对调数据,否则数据显示会丢失大约4/1数据。
  比如有原图
     
   用HWSWP=0的显示方法;就会显示如下数据。在字上显示空心和锯齿现象,明显丢失一部分数据
   

     
如果把两点数据对调后,显示相当正常,

这估计除了显存格式以外,可能与I80与DC接口也有点关系,在多次实验的情况,只能以结果为导向,调整数据生成的方式了.
阅读(2005) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~