优龙2410更改LCD后wince启动BIOS图片出现异常
LCD更换后,由原来的320*240更改为800*600,BIOS启动的图片开始可以正常显示,当运行完BIOS里NandLoadRunW函数中的LoadRun函数后就在屏幕的下方有几行花屏现象,BIOS bin文件有原来的几十K现在增加到300K,内存分配已经修改成
static struct Partition NandPart[] = {
{0, 0x00100000, "bootloader"}, //1M
{0x00100000,0x02000000, "system"}, //30M
{0x02040000,0x023a0000, "flash"}, //33M
{0,0,0}
};哪位碰到过帮忙解答一下,这里先谢谢了!
这种情况应该是LCD的BUFFER在程序执行过程中被占用了。
是否BIB文件中给LCD留的BUFFER不够大,详细看下BIB中内存设置,以及其它一些指针地址设置
楼上说的是config.bib里的这部分吗
; Common RAM areas
AUD_DMA 8c002000 00002000 RESERVED
DRV_GLB 8c010000 00010000 RESERVED
DBGSER_DMA 8c022000 00002000 RESERVED
SER_DMA 8c024000 00002000 RESERVED
IR_DMA 8c026000 00002000 RESERVED
SD_DMA 8c028000 00008000 RESERVED
EDBG 8c030000 00020000 RESERVED
CPXIPCHAIN 8c050000 00008000 RESERVED
SLEEP_BUFF 8c058000 00004000 RESERVED
DISPLAY 8c100000 00100000 RESERVED
你的LCD是多少位的?16位还是24位?
如果是16位数据要占两个字节,600*800*2=960000=0xEA600,就快到00100000的限制了,如果是24bit肯定就不够用,根据你的情况算一下。
是16位的,是不是要把DISPLAY 调大点,LoadRun函数里的buf = 0x30200000;和DISPLAY对应调大点?
以前是不是BIOS的范围是从0x30100000到0x30200000里的这个100000范围是不是就是DISPLAY的值?
http://topic.eeworld.net/u/20091130/09/9e71e7ac-46e7-4f9b-b8a5-82abfb1a3f30.html?94345
以前的帖子也遇到和我一样的问题不明白他说的
将LCDBUFF的地址由默认的更改成固定的即可。一般不需要更改WINCE入口地址
是什么意思!
引用: 引用 4 楼 gooogleman 的回复:
这个没有遇到过,换LCD 其他的设置都对了嘛?
都对了,显示正常
当运行完BIOS里NandLoadRunW函数中的LoadRun函数后就在屏幕的下方有几行花屏现象,BIOS bin文件有原来的几十K现在增加到300K,内存分配已经修改成
花屏一定是地址溢出了。
引用: 引用 9 楼 hallowwar 的回复:
花屏一定是地址溢出了。
恩,把LoadRun函数里的buf = 0x30200000;改大点就不花屏了,但是启动不了WINCE了
问题还没解决!!!!!!!!!!!!!!!!!!!!!!
引用: 引用 2 楼 clg711 的回复:
楼上说的是config.bib里的这部分吗
; Common RAM areas
AUD_DMA? ? 8c002000? 00002000? RESERVED
DRV_GLB? ? 8c010000? 00010000? RESERVED
DBGSER_DMA? 8c022000? 00002000? RESERVED
SER_DMA? ? 8c024000? 00002000? RESERVED
IR_DMA? ? ? 8c026000? 00002000? RESERVED
SD_DMA? ? 8c028000? 00008000? RESERVED
EDBG? ? ? ? 8c030000? 00020000? RESERVED
CPXIPCHAIN? 8c050000? 00008000? RESERVED
SLEEP_BUFF 8c058000? 00004000 RESERVED
DISPLAY? ? 8c100000? 00100000? RESERVED? ?
优龙的bootloader还没有涉及这些,所以不用看这些,
eboot 才要的。楼主看看栈设置,试试放大看看。
引用: 引用 10 楼 clg711 的回复:
引用 9 楼 hallowwar 的回复:花屏一定是地址溢出了。
恩,把LoadRun函数里的buf = 0x30200000;改大点就不花屏了,但是启动不了WINCE了
晕,这个改了,就需要改DNW的地址,这个和DNW地址保持一致试试,
再不行再去修改config。bib 里面的ramimag start 地址。使之和这个DNW地址一致。
; NK name
#define NKNAME NK
; NK Start address
#define NKSTART 8C200000
#define NKLEN 01D00000
#define RAMSTART 8E000000 ;8E000000
#define RAMLEN 02000000 ;01F00000
$(NKNAME) $(NKSTART) $(NKLEN) RAMIMAGE
RAM $(RAMSTART) $(RAMLEN) RAM
哪个和DNW地址一致!
gooogleman是说你在代码里把LoadRun函数里的buf = 0x30200000改大后要在DNW时面把那个地址也改成同样大的
另外,你花屏的时候已经加载NK镜像了吗?如果没加载的话应该跟BIB没什么关系吧,没看太懂,不清楚
画屏时还没加载NK镜像,我调试是到LoadRun函数里的
StartPage = NandPart[part_sel].offset>>9;
size = NandPart[part_sel].size;
ram_addr = buf;
for(i=0; size>0; ) {
if(!(i&0x1f)) {
if(CheckBadBlk(i+StartPage)) {
printf("Skipped bad block at 0x%x\n", i+StartPage);
i += 32;
size -= 32<<9;
continue;
}
}
ReadPage((i+StartPage), (U8 *)ram_addr);
i++;
size -= 512;
ram_addr += 512;
}
这部分的时候就花屏了
按楼上说的不能启动WINCE
这个我问题我碰到过,已经解决
是因为你改了分区,所以要在变成之前用bios提供的擦除功能,将所有分区擦出一下,还有bios有个bug
不知道你改好了,因为你的bios第一个分区1M,没问题,但是在那个启动相关的*.s文件中有个搬移虚幻
如果你的nand的page是512字节 它只是循环搬移了512次那么 512*512=?自己算 怎么改自己也知道了吧!
http://blog.eeworld.net/mistyeyed
嵌入式工程师是怎样炼成的(二)---- 初来乍到