WincCE显示不正确

时间:2021-03-24 10:54:47
我在ATMEL 9200上开发wince驱动,只有PIO小键盘驱动和OLED屏的显示驱动,采用的是ATMEL的官方BSP修改的。屏的驱动应该是正确的。现在有一个问题,一直不能解决,希望大虾指点一二。

Wince系统起来后,显示驱动Bltprepare函数的参数中有一个RECTL prclDst,是表示目的显示表面的显示区域大小的。在显示wndowsce_qvgap.bmp时prclDst的值是正确的(Left=69,top=102,right=252,bottom=138),随后显示背景色,prclDst的值也是正确的(0,0,320,240),再后面不知从哪里出来了一些不正确的目的表面窗口值
Wd= (-1,143,321,157)
Wd= (-1,145,317,157)
然后窗口中下部显示一长白条,而且颜色其它的字和图标也不正确。

http://www.itdaan.com/imgs/3/3/2/2/72/f4970b0d3131de9f4e2db75239dd21fc.jpe
WincCE显示不正确

13 个解决方案

#1


消灭0回复

#2


Tools菜单下的wince ce test kit测试一

http://hi.csdn.net/attachment/201203/19/2155526_133214661511A5.jpg WincCE显示不正确

#3


Tools菜单下的wince ce test kit测试二

WincCE显示不正确

#4


引用 2 楼 vipo321 的回复:
Tools菜单下的wince ce test kit测试一

http://hi.csdn.net/attachment/201203/19/2155526_133214661511A5.jpg

这是什么情况 非客户区显示正常?

#5


图像编解码模块有问题呀。看看catalog组件配置里的图片编解码配置选正确了没有。若驱动没问题就是组件问题。

#6


谢谢楼上二位。

比较我的显示桌面和标准wince桌面,感觉 文字被压缩成一条线了,图标显示成不清楚的左右对称部分合在一起。驱动程序在硬件初始化完成后,已做了显示像素的逐位读写测试,没有发现错误。

下面的显示内容是直接向wince的主显示表面写“彩条+五环”的输出,显示很正常。

http://hi.csdn.net/space-2155526-do-album-picid-1090524.html

WincCE显示不正确

#7


发的帖子不能编辑。

图像编解码好像没有问题,OS Design中包含
Gradient Fill Support
Imaging
   |----Still Image Codec Support (Encode and Decode)
   |----Still Image Decoders
          |----BMP Decoder
          |----GIF Decoder
          |----JPG Decoder
          |----PNG Decoder
不知这样对不对?

#8


硬件初始化代码。

{
HKEY hkDisplay = NULL;
AT91PS_PIO pPIOB;
AT91PS_EBI pEBI;

pPIOB = (AT91PS_PIO) AT91C_VA_BASE_PIOB;
pEBI = (AT91PS_EBI) AT91C_VA_BASE_EBI;

//* Setup MEMC to support CS2=OLED
// pEBI->EBI_CSA |= AT91C_EBI_CS1A;
pEBI->EBI_CFGR = 0;    //(AT91C_EBI_DBPUC & 0x00) | (AT91C_EBI_EBSEN & 0x00);
pEBI-> EBI_SMC2_CSR[2] =0x2184;   //EBI_SMC2_CSR[2]=10 0001 1000 0100 b

pPIOB->PIO_PER = AT91C_PIO_PB23 |AT91C_PIO_PB24;    
        pPIOB->PIO_OER = AT91C_PIO_PB23 | AT91C_PIO_PB24; 

gdwLCDVirtualFrameBase = VA_GDC_BASE;     //VA_GDC_BASE=0x30000000

// map frame buffer into process space memory
m_VirtualFrameBuffer = (DWORD)VirtualAlloc(0, (0x100000), MEM_RESERVE, PAGE_NOACCESS);
if (m_VirtualFrameBuffer == NULL) 
{
    RETAILMSG(1,(TEXT("m_VirtualFrameBuffer is not allocated\n\r")));
return;
}
else if (!VirtualCopy((PVOID)m_VirtualFrameBuffer, (PVOID)gdwLCDVirtualFrameBase, (0x100000), PAGE_READWRITE | PAGE_NOCACHE))
{
    RETAILMSG(1, (TEXT("m_VirtualFrameBuffer is not mapped\n\r")));
     VirtualFree((PVOID)m_VirtualFrameBuffer, 0, MEM_RELEASE);
     return;
}

RETAILMSG(1, (TEXT("VirtualFrameBuffer is mapped at %x(VirtualFrameBase : %x)\r\n"), m_VirtualFrameBuffer, gdwLCDVirtualFrameBase));

        pPIOB->PIO_SODR = AT91C_PIO_PB23;  //打开OLED显示屏


}

#9


看图像感觉相邻的两个像素是反的

#10


采用Mobile Handheld[Windows CE devices]默认的组件,应该不会有问题吧?默认字体是Tahoma (Subset 1_07),Localize选择US English。

是否还需要什么组件?

#11


本人愿意出些费用,寻高手解决问题。有意可联系 sigwell@126.com

#12


你没有QQ联系吗?可以远程协助一下。不过我的BSP是三星的,应该和atmel差距很大的。

#13


QQ好已在你的个人空间留言了。

引用 12 楼  的回复:
你没有QQ联系吗?可以远程协助一下。不过我的BSP是三星的,应该和atmel差距很大的。

#1


消灭0回复

#2


Tools菜单下的wince ce test kit测试一

http://hi.csdn.net/attachment/201203/19/2155526_133214661511A5.jpg WincCE显示不正确

#3


Tools菜单下的wince ce test kit测试二

WincCE显示不正确

#4


引用 2 楼 vipo321 的回复:
Tools菜单下的wince ce test kit测试一

http://hi.csdn.net/attachment/201203/19/2155526_133214661511A5.jpg

这是什么情况 非客户区显示正常?

#5


图像编解码模块有问题呀。看看catalog组件配置里的图片编解码配置选正确了没有。若驱动没问题就是组件问题。

#6


谢谢楼上二位。

比较我的显示桌面和标准wince桌面,感觉 文字被压缩成一条线了,图标显示成不清楚的左右对称部分合在一起。驱动程序在硬件初始化完成后,已做了显示像素的逐位读写测试,没有发现错误。

下面的显示内容是直接向wince的主显示表面写“彩条+五环”的输出,显示很正常。

http://hi.csdn.net/space-2155526-do-album-picid-1090524.html

WincCE显示不正确

#7


发的帖子不能编辑。

图像编解码好像没有问题,OS Design中包含
Gradient Fill Support
Imaging
   |----Still Image Codec Support (Encode and Decode)
   |----Still Image Decoders
          |----BMP Decoder
          |----GIF Decoder
          |----JPG Decoder
          |----PNG Decoder
不知这样对不对?

#8


硬件初始化代码。

{
HKEY hkDisplay = NULL;
AT91PS_PIO pPIOB;
AT91PS_EBI pEBI;

pPIOB = (AT91PS_PIO) AT91C_VA_BASE_PIOB;
pEBI = (AT91PS_EBI) AT91C_VA_BASE_EBI;

//* Setup MEMC to support CS2=OLED
// pEBI->EBI_CSA |= AT91C_EBI_CS1A;
pEBI->EBI_CFGR = 0;    //(AT91C_EBI_DBPUC & 0x00) | (AT91C_EBI_EBSEN & 0x00);
pEBI-> EBI_SMC2_CSR[2] =0x2184;   //EBI_SMC2_CSR[2]=10 0001 1000 0100 b

pPIOB->PIO_PER = AT91C_PIO_PB23 |AT91C_PIO_PB24;    
        pPIOB->PIO_OER = AT91C_PIO_PB23 | AT91C_PIO_PB24; 

gdwLCDVirtualFrameBase = VA_GDC_BASE;     //VA_GDC_BASE=0x30000000

// map frame buffer into process space memory
m_VirtualFrameBuffer = (DWORD)VirtualAlloc(0, (0x100000), MEM_RESERVE, PAGE_NOACCESS);
if (m_VirtualFrameBuffer == NULL) 
{
    RETAILMSG(1,(TEXT("m_VirtualFrameBuffer is not allocated\n\r")));
return;
}
else if (!VirtualCopy((PVOID)m_VirtualFrameBuffer, (PVOID)gdwLCDVirtualFrameBase, (0x100000), PAGE_READWRITE | PAGE_NOCACHE))
{
    RETAILMSG(1, (TEXT("m_VirtualFrameBuffer is not mapped\n\r")));
     VirtualFree((PVOID)m_VirtualFrameBuffer, 0, MEM_RELEASE);
     return;
}

RETAILMSG(1, (TEXT("VirtualFrameBuffer is mapped at %x(VirtualFrameBase : %x)\r\n"), m_VirtualFrameBuffer, gdwLCDVirtualFrameBase));

        pPIOB->PIO_SODR = AT91C_PIO_PB23;  //打开OLED显示屏


}

#9


看图像感觉相邻的两个像素是反的

#10


采用Mobile Handheld[Windows CE devices]默认的组件,应该不会有问题吧?默认字体是Tahoma (Subset 1_07),Localize选择US English。

是否还需要什么组件?

#11


本人愿意出些费用,寻高手解决问题。有意可联系 sigwell@126.com

#12


你没有QQ联系吗?可以远程协助一下。不过我的BSP是三星的,应该和atmel差距很大的。

#13


QQ好已在你的个人空间留言了。

引用 12 楼  的回复:
你没有QQ联系吗?可以远程协助一下。不过我的BSP是三星的,应该和atmel差距很大的。