阅读:5531回复:25
求助 WINCE 开机进度显示,在线等
我将开机LOGO改成了自己公司的LOGO,想在WINCE启动进入主菜单前,加入开机进度显示,请问要在哪里修改,要怎样做啊,
|
|
|
沙发#
发布于:2007-01-30 10:03
应该是在bootloader里吧
|
|
|
板凳#
发布于:2007-01-30 10:51
是从nand copy to sdram的过程中有机会加进度显示,直接从nor 启动 就没有必要 加也可以但太牵强 我前两天刚做过 你可以e-mail xuedongyi@126.com 我可以给你代码
|
|
地板#
发布于:2007-01-30 19:00
我有个问题
我也做过LOGO,但当时做完了也不懂,查资料做的, 现在想起来问题大了 在EBOOT中改大家都知道,但当时我改完,下载映像时还用的原来的EBOOT,当时认为改的是OEM,系统运行后竟然好用,不理解,哪位帮着讲讲 |
|
地下室#
发布于:2007-01-31 09:25
xuedongyi :我以经发EMAIL给您了,请您发给我。谢谢您。hgh123@163.com
rocking2807 : 您改的地方应该是在LCD初始化的时候修改的,在加载映像的时候也会LCD初始化(CFW.C),是调用的同一程序。 修改LOGO一般有两种方法:一个是BOOTLOADER,另一个是:加载映像的时候 。 以上仅是我的个人理解,仅供参考。 |
|
|
5楼#
发布于:2007-01-31 15:01
我也又看了一下
你说的对是在CFW.C中,因为当时在EBOOT的MAIN.C中的OEMPlatformInit中没有找到InitDisplay() 而是在CFW里,所以改的那里. 我的问题是可以在MAIN.C中的OEMPlatformInit中加这个InitDisplay()么/ 编译后的数组会很大,怎么办,这个数组编译后在什么地方,EBOOT中么? |
|
6楼#
发布于:2007-01-31 22:26
我也在作同样的事,我是用的pxa310,光LCD控制的寄存器就一大堆,头大,我是用bsp中的LCD测试程序段改.是在eboot中
|
|
7楼#
发布于:2007-02-01 09:49
这个问题很多人都做过吧,给个解答啊
大哥们! |
|
8楼#
发布于:2007-02-02 12:00
贴一下我的
InitDisplay(),我是6.4的屏, static void InitDisplay() { //int i, j; volatile IOPreg *s2410IOP; volatile LCDreg *s2410LCD; s2410IOP = (IOPreg *)IOP_BASE; s2410LCD = (LCDreg *)LCD_BASE; // LCD port initialize. s2410IOP->rGPCUP = 0xFFFFFFFF; s2410IOP->rGPCCON = 0xAAAAAAAA; s2410IOP->rGPCCON = 0xAAAAAAAA; s2410IOP->rGPDUP = 0xFFFFFFFF; s2410IOP->rGPDCON = 0xAAAAAAAA; s2410IOP->rGPGCON &= ~(3 << 8); /* Set LCD_PWREN as output */ s2410IOP->rGPGCON |= (1 << 8); s2410IOP->rGPGDAT |= (1 << 4); /* Backlight ON */ s2410LCD->rLCDCON1 = (1 << 8) | /* VCLK = HCLK / ((CLKVAL + 1) * 2) -> About 7 Mhz */ (1 << 7) | /* 0 : Each Frame */ (3 << 5) | /* TFT LCD Pannel */ (12 << 1) | /* 16bpp Mode */ (0 << 0) ; /* Disable LCD Output */ s2410LCD->rLCDCON2 = (32 << 24) | /* VBPD : 1 */ (LINEVAL_TFT << 14) | /* Virtical Size : 320 - 1 */ (10 << 6) | /* VFPD : 2 */ (2 << 0) ; /* VSPW : 1 */ s2410LCD->rLCDCON3 = (47 << 19) | /* HBPD : 6 */ (HOZVAL_TFT << 8) | /* HOZVAL_TFT : 240 - 1 */ (16 << 0) ; /* HFPD : 2 */ s2410LCD->rLCDCON4 = (13 << 8) | /* MVAL : 13 */ (96 << 0) ; /* HSPW : 4 */ s2410LCD->rLCDCON5 = (0 << 12) | /* BPP24BL : LSB valid */ (1 << 11) | /* FRM565 MODE : 5:6:5 Format */ (0 << 10) | /* INVVCLK : VCLK Falling Edge */ (1 << 9) | /* INVVLINE : Inverted Polarity */ (1 << 8) | /* INVVFRAME : Inverted Polarity */ (0 << 7) | /* INVVD : Normal */ (0 << 6) | /* INVVDEN : Normal */ (0 << 5) | /* INVPWREN : Normal */ (0 << 4) | /* INVENDLINE : Normal */ (1 << 3) | /* PWREN : Disable PWREN */ (0 << 2) | /* ENLEND : Disable LEND signal */ (0 << 1) | /* BSWP : Swap Disable */ (1 << 0) ; /* HWSWP : Swap Enable */ s2410LCD->rLCDSADDR1 = ((FRAMEBUF_DMA_BASE >> 22) << 21) | ((M5D(FRAMEBUF_DMA_BASE >> 1)) << 0); s2410LCD->rLCDSADDR2 = M5D((FRAMEBUF_DMA_BASE + (LCD_XSIZE_TFT * LCD_YSIZE_TFT * 2)) >> 1); s2410LCD->rLCDSADDR3 = (((LCD_XSIZE_TFT - LCD_XSIZE_TFT) / 1) << 11) | (LCD_XSIZE_TFT / 1); #if (BOARD_TYPE == 1) s2410LCD->rLPCSEL = 0;//|= 0x3; #else s2410LCD->rLPCSEL = 0;//|= 0x2; #endif s2410LCD->rLCDINTMSK |=(3); // MASK LCD Sub Interrupt s2410LCD->rTPAL = 0x0; s2410LCD->rLCDCON1 |= 1; RETAILMSG(1,(TEXT("rLCDCON1 : %x\r\n"), s2410LCD->rLCDCON1)); RETAILMSG(1,(TEXT("rLCDCON2 : %x\r\n"), s2410LCD->rLCDCON2)); RETAILMSG(1,(TEXT("rLCDCON3 : %x\r\n"), s2410LCD->rLCDCON3)); RETAILMSG(1,(TEXT("rLCDCON4 : %x\r\n"), s2410LCD->rLCDCON4)); RETAILMSG(1,(TEXT("rLCDCON5 : %x\r\n"), s2410LCD->rLCDCON5)); RETAILMSG(1,(TEXT("rLCDSADDR1 : %x\r\n"), s2410LCD->rLCDSADDR1)); RETAILMSG(1,(TEXT("rLCDSADDR2 : %x\r\n"), s2410LCD->rLCDSADDR2)); RETAILMSG(1,(TEXT("rLCDSADDR3 : %x\r\n"), s2410LCD->rLCDSADDR3)); RETAILMSG(1,(TEXT("rLCDINTMSK : %x\r\n"), s2410LCD->rLCDINTMSK)); RETAILMSG(1,(TEXT("rLPCSEL : %x\r\n"), s2410LCD->rLPCSEL)); RETAILMSG(1,(TEXT("rTPAL : %x\r\n"), s2410LCD->rTPAL)); memcpy((void *)FRAMEBUF_BASE, ScreenBitmap, ARRAY_SIZE_TFT_16BIT); 最后就用memcpy((void *)FRAMEBUF_BASE, ScreenBitmap, ARRAY_SIZE_TFT_16BIT);把ScreenBitmap这个图片传到缓冲区里,但是每次都花屏, 请那个大哥,,,,,讲一下 |
|
9楼#
发布于:2007-02-02 19:00
顶上去
|
|
10楼#
发布于:2007-02-03 22:45
可能情况:
1、LCD控制寄存器参数有问题 2、ScreenBitmap这个图片数组可能转换的不正确 尝试不用拷贝图片,先直接往FRAMEBUF_BASE写入同一颜色的数据,看显示正常否 |
|
|
11楼#
发布于:2007-02-06 02:20
TO:rocking2807
你的问题一个可能数组的转换格式不对,另外一个可能是你的图片的分辨率要和你的LCD的分辨率对应上,差一点点显示出来都是花屏。积存器设置如果进入wince正常了,则说明这个设置是OK的,BMP图片的转换工具我记得一般的三星有提供,好像是一个叫BMP2T的东西吧。 |
|
|
12楼#
发布于:2007-02-06 12:32
谢谢上面几位
其实系统工作平时是正常的,自已犯贱和老板能加个LOGO结果搞不出来了 LCD平时是正常工作的 设置中有几个地方问大家 LCD用的是640*480,16BPP,565模式 要用的图片应是什么样的呢 我用的是640*480,16真彩色,软件用是IMAGE2LCD, 我看三星原来用的是BMP2C,我在网上找不到. |
|
13楼#
发布于:2007-02-07 08:07
谁有BMP2C 或BMP2T这个软件
给我一个呀,求你们了 |
|
14楼#
发布于:2007-02-07 08:34
我这有BMP2C,你给个EMAIL吧,
我用的BMP2C还是有点花屏,图片可以显示出来,但比较模糊,颜色也不对。如果用IMAGE2LCD,根本就显示不出图像,不知为什么。我用的是640*480的屏 哪位高手分析下列代码的作用,没看懂 FBuf = (struct FrameBuffer *) (FRAMEBUF_BASE); RETAILMSG(1,(TEXT("------tft640_480---------InitDisplay-----------------\r\n"))); //memcpy((void *)FRAMEBUF_BASE, ScreenBitmap, ARRAY_SIZE_TFT_16BIT); // Test LCD display status with R.G.B and White color. for (i=0; i<LCD_YSIZE_TFT/2; i++) { for (j=0; j<LCD_XSIZE_TFT; j++) { if (j<LCD_XSIZE_TFT/2) #if (LCDTYPE == TFT16BPP) FBuf->pixel[j]=0xffff; #else FBuf->pixel[j]=0xff; #endif else #if (LCDTYPE == TFT16BPP) FBuf->pixel[j]=0xf800; #else FBuf->pixel[j]=0xe0; #endif } } for (i=LCD_YSIZE_TFT/2; i<LCD_YSIZE_TFT; i++) { for (j=0; j<LCD_XSIZE_TFT; j++) { if (j<LCD_XSIZE_TFT/2) #if (LCDTYPE == TFT16BPP) FBuf->pixel[j]=0x07e0; #else FBuf->pixel[j]=0x1c; #endif else #if (LCDTYPE == TFT16BPP) FBuf->pixel[j]=0x001f; #else FBuf->pixel[j]=0x03; #endif } } |
|
|
15楼#
发布于:2007-02-08 09:29
|
|
16楼#
发布于:2007-02-08 16:43
收到了
有个问题?BMP2C只能做5.5.5模式的么,而我的LCD初始化为565模式的! |
|
17楼#
发布于:2007-02-09 11:14
如果我把LCD初始化为5.5.5,可不可以呢
|
|
18楼#
发布于:2007-02-11 18:00
谁能解答下?
班长大人呢? |
|
19楼#
发布于:2007-02-12 08:42
可以,但是摧荐你用RGB565或666等通用模式
|
|
|
上一页
下一页