优龙2410更改LCD后wince启动BIOS图片出现异常

dan123456   2010-2-24 10:39 楼主
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}
};哪位碰到过帮忙解答一下,这里先谢谢了!

回复评论 (23)

这种情况应该是LCD的BUFFER在程序执行过程中被占用了。
是否BIB文件中给LCD留的BUFFER不够大,详细看下BIB中内存设置,以及其它一些指针地址设置
点赞  2010-2-24 10:54
楼上说的是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   
点赞  2010-2-24 11:13
你的LCD是多少位的?16位还是24位?
如果是16位数据要占两个字节,600*800*2=960000=0xEA600,就快到00100000的限制了,如果是24bit肯定就不够用,根据你的情况算一下。
点赞  2010-2-24 11:21
这个没有遇到过,换LCD 其他的设置都对了嘛?
点赞  2010-2-24 11:24
是16位的,是不是要把DISPLAY 调大点,LoadRun函数里的buf = 0x30200000;和DISPLAY对应调大点?
以前是不是BIOS的范围是从0x30100000到0x30200000里的这个100000范围是不是就是DISPLAY的值?
点赞  2010-2-24 11:28
http://topic.eeworld.net/u/20091130/09/9e71e7ac-46e7-4f9b-b8a5-82abfb1a3f30.html?94345
以前的帖子也遇到和我一样的问题不明白他说的   
将LCDBUFF的地址由默认的更改成固定的即可。一般不需要更改WINCE入口地址
是什么意思!
点赞  2010-2-24 11:32
MARK,看看。

帮顶下。
点赞  2010-2-24 11:32
引用: 引用 4 楼 gooogleman 的回复:
这个没有遇到过,换LCD 其他的设置都对了嘛?

都对了,显示正常
点赞  2010-2-24 11:33
当运行完BIOS里NandLoadRunW函数中的LoadRun函数后就在屏幕的下方有几行花屏现象,BIOS bin文件有原来的几十K现在增加到300K,内存分配已经修改成

花屏一定是地址溢出了。
点赞  2010-2-24 11:39
引用: 引用 9 楼 hallowwar 的回复:

花屏一定是地址溢出了。

恩,把LoadRun函数里的buf = 0x30200000;改大点就不花屏了,但是启动不了WINCE了
点赞  2010-2-24 11:46
自己顶一下,问题出在哪儿帮忙指点一下!
点赞  2010-2-24 13:39
问题还没解决!!!!!!!!!!!!!!!!!!!!!!
点赞  2010-2-25 08:35
引用: 引用 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 才要的。楼主看看栈设置,试试放大看看。
点赞  2010-2-25 09:58
今天再没有满意答复就结贴了!
点赞  2010-2-26 12:01
引用: 引用 10 楼 clg711 的回复:
引用 9 楼 hallowwar 的回复:花屏一定是地址溢出了。
恩,把LoadRun函数里的buf = 0x30200000;改大点就不花屏了,但是启动不了WINCE了


晕,这个改了,就需要改DNW的地址,这个和DNW地址保持一致试试,

再不行再去修改config。bib 里面的ramimag start 地址。使之和这个DNW地址一致。
点赞  2010-2-26 12:57
        ; 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地址一致!
点赞  2010-2-26 13:10
gooogleman是说你在代码里把LoadRun函数里的buf = 0x30200000改大后要在DNW时面把那个地址也改成同样大的

另外,你花屏的时候已经加载NK镜像了吗?如果没加载的话应该跟BIB没什么关系吧,没看太懂,不清楚
点赞  2010-2-26 16:57
画屏时还没加载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
点赞  2010-2-26 17:07
这个我问题我碰到过,已经解决
是因为你改了分区,所以要在变成之前用bios提供的擦除功能,将所有分区擦出一下,还有bios有个bug
不知道你改好了,因为你的bios第一个分区1M,没问题,但是在那个启动相关的*.s文件中有个搬移虚幻
如果你的nand的page是512字节  它只是循环搬移了512次那么 512*512=?自己算  怎么改自己也知道了吧!

http://blog.eeworld.net/mistyeyed
嵌入式工程师是怎样炼成的(二)---- 初来乍到
点赞  2010-2-28 10:07
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复