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) |