5596|12

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MULTI BIN的问题请看看还有哪位朋友能把debug的信息给我看看么(要KernelInit之后的 谢谢) [复制链接]

我用的是三星的BSP,MULTI BIN方式的(wince5.0)我的问题现象如下:
Windows CE Kernel for ARM (Thumb Enabled) Built on Jun 24 2004 at 18:21:58
ProcessorType=0926  Revision=5
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 80080ab4
>> PLL Setting values
>> FCLK:169344000
>> HCLK:84672000
>> PCLK:84672000
DCache: 64 sets, 4 ways, 32 line size, 8192 size
ICache: 64 sets, 4 ways, 32 line size, 8192 size
+OALIntrInit.
+BSPIntrInit.
Enable IRQ_USBH
+ConfigureGPIO.
+InitDisplay.
FoxLink LCD Init...
+Call KITL.
+SetCLKforDevices
MPLLCON[80002000h]
UPLLCON[80040070h]
CLKCON[1fffffffh]
CLKSRC[30h]
CLKDIVN[61h]
-SetCLKforDevices
[MSMDD: IN] ++MSMDDInit()
[MSMDD:INF]  pdwXIPLoc=0x82000000, dwDontUseChain=0x1
[MSMDD:INF]  XIP chain location not fixed up
[MSMDD:OUT] --MSMDDInit()
Call uesr_test()

--------------------------------------
User_test() start.
- BANKCFG:48904h.
- BANKCON1:94000040h.
- BANKCON2:9c003fh.
- BANKCON3:80000032h.
- REFRESH:41dh.
- TIMEOUT:0h.
MISCCR:330h
User_test() end.
--------------------------------------
-OEMInit
Using Paging Pool, size = 0x00200000, Addr = 0x8c23a000, gpPoolArr = 0x8c43a000
Error Reporting Memory Reserved, dump size = 00020000
Booting Windows CE version 5.00 for (ARM)
&pTOC = 80049c1c, pTOC = 801ddad4, pTOC->ulRamFree = 8c23a000, MemForPT = 00202000

Old or invalid version stamp in kernel structures - starting clean!
Configuring: Primary pages: 6561, Secondary pages: 0, Filesystem pages = 3280

Booting kernel with clean memory configuration:
Memory Sections:
[0] : start: 8c43d000, extension: 00002000, length: 019a1000
Sp=ffffc7cc
ARMInit done.
Windows CE KernelInit------------挂在这里
以上是debug版本的输出信息,我很奇怪为什么程序挂在这里了
因为内核跑起来之后会首先调用wince private目录下的mdarm.c文件中的ARMInit函数,这个应该是正常的 因为串口信息已经输出ARMInit done了,之后应该是去调用KernelInit函数了 第一句就是lpWriteDebugStringFunc(TEXT("Windows CE KernelInit\r\n"));我也有输出
问题就是在这里了 之后呢????????为什么会这样?为什么会挂在这里
我的config.bib是这样的
MEMORY
        #define        CHAIN_ADDRESS        82000000
        #define        CHAIN_LENGTH        00001000

        ;------------------------------------
        ; page pool

        #define        PAGINGPOOLSIZE        00200000

        pdwXIPLoc                00000000 82000000 FIXUPVAR
        dwDontUseChain                00000000 00000001 FIXUPVAR
        cbNKPagingPoolSize        00000000 $(PAGINGPOOLSIZE) FIXUPVAR

        XIPKERNEL                80040000 001C0000 RAMIMAGE
        NK                        80200000 01E00000 RAMIMAGE
        CHAIN                        82000000 00004000 RESERVED

        RESERVE                        8df00000 00080000
        RAM                        8c200000 01C00000 RAM

        ;------------------------------------
        ; Common RAM areas

        AUD_DMA                8C002000        00002000        RESERVED
        TEMPS                8C010000        00010000        RESERVED
        ARGS                8C020000        00000800        RESERVED
        DBGSER_DMA        8C022000        00002000        RESERVED
        SER_DMA                8C024000        00002000        RESERVED
        IR_DMA                8C026000        00002000        RESERVED
        SLEEP                8C028000        00002000        RESERVED
        EDBG                8C030000        00020000        RESERVED
        DISPLAY                8C100000        00100000        RESERVED

CONFIG
        COMPRESSION=ON
        KERNELFIXUPS=ON

        ;------------------------------------
        ; Multi-Region

        AUTOSIZE=ON                        ;; AUTOSIZE is used to enable the following flags.
        RAM_AUTOSIZE=OFF
        ROM_AUTOSIZE=OFF                ;; Modified by LEK... OFF->ON -> OFF
        DLLADDR_AUTOSIZE=ON

        XIPSCHAIN=$(CHAIN_ADDRESS)

        AUTOSIZE_ROMGAP=10000
        AUTOSIZE_DLLADDRGAP=0
        AUTOSIZE_DLLDATAADDRGAP=0
        AUTOSIZE_DLLCODEADDRGAP=0
        地址映射 这里有点想不通,为什么不映射成一大块??
        DCD     0x80000000, 0x33E00000, 2      ; 64 MB DRAM BANK 6
       DCD     0x8C000000, 0x30000000, 30      ; 64 MB DRAM BANK 6

我的流程是这样的
编译之后生成XIPKERNEL.bin(现在是10K左右),nk.bin,chain.bin三个文件,之后修改ce.bib文件

nk.exe
coredll.dll
filesys.exe
binfs.dll
fsdmgr.dll
mspart.dll
boot.hv
default.hv
user.hv
都有NK 改为XIPKERNEL  这里有个问题 我在release下没有问题 debug下就有问题了
调用romimage ce.bib 重新生成XIPKERNEL.bin(现在是1M左右了),nk.bib,chain.bin三个文件
之后将三个文件利用eboo烧到nand中(MBR,BINFS都可以的)
之后读镜像,看了一下bsp中的源码,读镜像的时候只读了XIPKERNEL.bin这个文件的内容之后执行,程序就跑到了Windows CE KernelInit这里  这段代码应该是微软的代码应该是没有错误的
接下来应该执行Kwin32.c中的KernelInit函数了
SystemAPISets[SH_WIN32] = &cinfWin32;
    SystemAPISets[SH_CURTHREAD] = &cinfThread;
    SystemAPISets[SH_CURPROC] = &cinfProc;
    SystemAPISets[SH_CURTOKEN] = &cinfToken;
    SystemAPISets[HT_EVENT] = &cinfEvent;
    SystemAPISets[HT_MUTEX] = &cinfMutex;
    SystemAPISets[HT_SEMAPHORE] = &cinfSem;
    SystemAPISets[HT_APISET] = &cinfAPISet;
    SystemAPISets[HT_FILE] = &CinfFile;
    SystemAPISets[HT_FIND] = &CinfFind;
    SystemAPISets[HT_DBFILE] = &CinfDBFile;
    SystemAPISets[HT_DBFIND] = &CinfDBFind;
    SystemAPISets[HT_SOCKET] = &CinfSocket;
    SystemAPISets[HT_FSMAP] = &cinfMap;
    SystemAPISets[HT_WNETENUM] = &CinfWnetEnum;
    KInfoTable[KINX_APISETS] = (DWORD)SystemAPISets;
        RETAILMSG(TRUE, (TEXT("HeapInit\n"))); //我 加的 没有作用
    HeapInit();
        RETAILMSG(TRUE, (TEXT("InitMemoryPool\n")));//我 加的 没有作用
    InitMemoryPool();
        RETAILMSG(TRUE, (TEXT("ProcInit\n")));//我 加的 没有作用
    ProcInit();
        RETAILMSG(TRUE, (TEXT("SchedInit\n")));//我 加的 没有作用
    SchedInit();
这些都么有执行啊???
再退一步说程序应该进入HeapInit();后里面第一句的循环语句中就有一个输出语句都没有执行
void
HeapInit(void)
{
    int loop;
    KInfoTable[KINX_KHEAP] = (long)heapptr;
    /* Find the smallest size of block. */
    SmallestSize = heapptr[0].size;
    for (loop = 0; loop < NUMARENAS; loop++) {
        DEBUGMSG(ZONE_MEMORY,(TEXT("HeapInit: Entry %2.2d, size %4.4d\r\n"),loop, heapptr[loop].size));////这里应该有输出吧!!!!!
        DEBUGCHK((heapptr[loop].size & 3) == 0);
        if (heapptr[loop].size < SmallestSize)
            SmallestSize = heapptr[loop].size;
    }
    KInfoTable[KINX_HEAP_WASTE] = 0;
}
目前这个现象就是这样了,请大家帮我看看,另外我发现在OEMInit中有在LCD上显示一副图片,我这里是有显示的,但是一到KernelInit这个函数中,LCD就黑了,(我的实验在OEMInit中的最后一句加了一个while(1) 图片还在)
我猜测目前我是刚刚内核启动,是不是因为我读到ram的数据太少了??应该不会啊,如果太少 内核应该根本就不起来啊
还有我现在对muilt bin方式还是不太理解,将XIPKERNEL.bin读了之后,之后程序的流程如何向下进行的呢?一句chain.bin的内容么,在程序中的哪里有判断呢??
另外请各位朋友能把debug的信息给我看看吧尤其是KernelInit之后的信息 谢谢
请各位帮帮忙,看看我的问题出在哪里了 请指点一下 谢谢

最新回复

其实可以直接烧写xip.bin文件的,可以把第5.6步合成一步,还是把nk,ram的起始地址设置成一样的,只是在eboot中做一点修改,就是在oemlaunch中更新一下TOC中参数g_pTOC->id[g_dwTocEntry].dwTtlSectors=FILE_TO_SECTOR_SIZE(xipkernel_length),使系统在起来的时候,只读xipkernel到ram中,经过我的测试,是可以的  详情 回复 发表于 2010-5-23 17:09
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
up
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
自己顶一下!!
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
multi bin我一直没搞定啊
mark一下
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
              
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
试一下图片功能先^_^
我在CE 4.2 中按driverdevelopBBS上zhengshijie的《【原创】MULTI BIN的wince 5.0,smdk2440下的实现》定制了xip,最后生成了xip.nb0,然后烧进nand flash,但是一直停留在启动画面上,不知为什么。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
MARK
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
正要搞,做个记号!
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

9
 
我这里调试信息和不用 MULTI BIN 没有什么区别
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

10
 
mark
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
帮顶,我也Windows CE KernelInit------------挂在这里了

 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 
"RAM                8C340000  03CC0000  RAM "

RAM地址不对,我把RAM的地址改大了就在Windows CE KernelInit这里挂了,现在改回来,能进去了。
你的问题应该也在这里。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

13
 
其实可以直接烧写xip.bin文件的,可以把第5.6步合成一步,还是把nk,ram的起始地址设置成一样的,只是在eboot中做一点修改,就是在oemlaunch中更新一下TOC中参数g_pTOC->id[g_dwTocEntry].dwTtlSectors=FILE_TO_SECTOR_SIZE(xipkernel_length),使系统在起来的时候,只读xipkernel到ram中,经过我的测试,是可以的
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表