zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:5468回复:47

问一个简单的问题,明白人请进!

楼主#
更多 发布于:2005-01-18 14:43
大侠们问一个弱问题,halether.c里声明函数的原型和定义一般放在哪个目录下啊,比如SMDK2410里halether.c里的CS8900DBG_Init()函数是在哪里定义的啊?我在Drivers目录里面文件中加上了这个函数的定义怎么还是编译出错: unresolved external symbol CS8900DBG_Init啊~~~能不能看看怎么回事捏??

[编辑 -  1/18/05 by  zouyingmyfriend]
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-02 10:44
情况如图所示。
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-02 10:35
在PB下载image的时候主机是如何和设备连接的啊?从这种情况来看,设备是一个循环发送的过程,设备和主机如何建立UDP呢,现在真的有点晕了。


检查一下你的主机和目标机的ip是不是在一个子网内啊?
Come on, let us drive the world.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-01 15:18
喔,这样啊,好像兄弟伙到这儿都要遭一次喃:))),

这样,你先检查一下你的xxxgetframe和xxxsendframe是不是正确接收到包了,并且返回了什么(特别注意返回值哈,返回0成功还是1成功)。
根据地的兄弟们,团结就是力量
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-01 14:48
在PB下载image的时候主机是如何和设备连接的啊?从这种情况来看,设备是一个循环发送的过程,设备和主机如何建立UDP呢,现在真的有点晕了。
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-01 14:39
是什么错误啊,能不能指出来?
目前这个函数处出了问题:代码如下
BOOL EbootSendBootmeAndWaitForTftp (EDBG_ADDR *pEdbgAddr, UCHAR VersionMajor, UCHAR VersionMinor,
                             char *szPlatformString, char *szDeviceName,
                             UCHAR CPUId, DWORD dwBootFlags)
{
    DWORD dwCurSec = OEMEthGetSecs () - BOOTME_INTERVAL;
    USHORT wLen, wDestPort, wSrcPort, wUDPDataLen, *pwUDPData;
    int nRetries = 0;
    EdbgOutputDebugString ("+EbootSendBootmeAndWaitForTftp\r\n");
    while (!fTftpLinked) {---看这里看这里看这里!!
        if ((nRetries < MAX_BOOTME_CNT) && (OEMEthGetSecs () - dwCurSec >= BOOTME_INTERVAL)) {
            nRetries ++;
            dwCurSec += BOOTME_INTERVAL;
            // send a bootme message
            EbootSendBootme (pEdbgAddr, VersionMajor, VersionMinor, szPlatformString, szDeviceName, CPUId, dwBootFlags);
        }
        // get another frame and pass it to TFTP handler
        wLen = sizeof (gFrameBuffer);
        if (OEMEthGetFrame (gFrameBuffer, &wLen)) {       // frame available?
            switch (FRAMETYPE (gFrameBuffer)) {
            case 0x0800:    // IP packet
                if (!EbootCheckUDP(pEdbgAddr, gFrameBuffer, &wDestPort, &wSrcPort, &pwUDPData, &wUDPDataLen)) {  // UDP?
                    // EDBG command? (should only occur if eshell asked us to jump to existing image)
                    if (!EbootProcessEDBG (pEdbgAddr, &gHostAddr, gFrameBuffer, pwUDPData, wUDPDataLen, &fTftpLinked, &gpCfgData)) {
                        // no, pass it to TFTP
                        EbootTFtpReceiver (pEdbgAddr, gFrameBuffer, wDestPort, wSrcPort, pwUDPData, wUDPDataLen);
                    }
                }
                break;
            case 0x0806:    // ARP packet
                if (EbootProcessARP (pEdbgAddr, gFrameBuffer) == PROCESS_ARP_RESPONSE) {
                    EdbgOutputDebugString( "Some other station has IP Address: %s !!! Aborting.\r\n", inet_ntoa(pEdbgAddr->dwIP));
                    return FALSE;
                }
                break;
            default:
                break;
            }
        }
    }
    EdbgOutputDebugString ("-EbootSendBootmeAndWaitForTftp\r\n");
    return TRUE;
}
Eboot的这个函数里的fTftpLinked一直为假,所以一直循环不停的向外发送“Sent BOOTME to 255.255.255.255”只有当该值为真的时候才能跳出循环,进而连接主机UDP。但是从以太网抓包的情况来看设备一直在不停的发这个包,主机接收到了之后回了一个,但是设备根本不响应,原因在于fTftpLinked没有能够置真,搜索了所有代码也不能看出如何跳出这个循环的,是不是用了中断啊,在哪里用的呢,不能结束这个循环就不能建立连接,郁闷啊。这是怎么回事啊?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-01 13:03
哈哈,稳住稳住,革命总有一天会胜利的。对了,BLCOMMON的源代码里面有个地方写错了,不知道对你们的东西有没有影响,你先试试再说
根据地的兄弟们,团结就是力量
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-01-31 17:49
现在是Eboot有问题,但是找不到。在配置里面找不到设备,因而无法下载啊,好郁闷啊,回家过不了好年啦55555555555555555
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-31 14:42
pb这边选config然后找到你的目标板没有?要选择一下你的目标板,然后downlaod三

用仿真器下确实比较慢,不过可以忍受:)))
根据地的兄弟们,团结就是力量
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-01-30 18:48
又出问题啦!!Eboot终端信息出现:Sent BOOTME to 255.255.255.255出现很多次,但是TFTP却连不上,这是怎么回事啊??前面好像也有人碰到这个问题,你是怎么解决的啊?
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-01-29 12:27
天啊,仿真器读出的内存内容是???,这是怎么回事啊,晕!!
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-01-28 16:20
我现在有烧写flash的程序,但是11M的bin,那样写太慢了吧。比较快的下载OS方法只有用Eboot下载OS一种是吧。
另外刚才那个是理解错误,PB的Emulator方式是将OS下载到虚拟机里面是吧,当然不能写到目标板里了。
我还发现中文字体支持占了OS image很大体积,把中午去掉就减小了10M以上,太夸张了……
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-01-28 16:12
喔,PB说的那个EMULATOR是模拟一个跑CE的设备。而不是指调试用的MUTIICE这样的“调试器”,你现在的OS IMAGE做好没有?做好了可以自己烧入设备FLASH,下载是通过JTAG口,烧写代码也需要你自己写。PB下载可用于联机调试,实现了OEMFLASHXXX函数也可以写入FLASH
根据地的兄弟们,团结就是力量
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-01-28 15:53
我现在用MultiICE仿真器可以下载OS Image吗?PB的使用Emulator4.20下载是怎么回事,我打开这个东西下载总说may not have enough RAM allocate。事实上我已经配置成128M了怎么还说不够,该怎么样配才能下载啊?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-01-28 13:42
只要把你得CODE弄到FLASH里面就作数:)

大的是OS IMAGE,不是内核

拟裁减的时候去掉的东西如果做依赖检查发现需要会被加回去,裁减的时候用IDE“可能”(只是可能哈:))比较麻烦,不过原则是从最高层的开始裁
根据地的兄弟们,团结就是力量
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-01-28 12:13
哪有厉害啊,本人还是菜鸟一只呢。
老大哥有了仿真器没有Eboot也应该是能下Code的哈,但是捏,现在的内核太大了,我想裁剪一些,但是从PB那个树形结构里面把不要的东西删掉结果编译出来大小还是那么大,另外哪个东西能够较大的裁掉啊,我的flash只有16M,但是现在内核bin有22M,nb0有29M之巨,怎样裁比较好?前面看到他们说去掉中文字体支持?是这样吗?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-01-28 11:19
搞定了?厉害

EMULATOR不需要和设备连啊,本身就是仿真的设备。用仿真器也可以把CODE下到你的板子上,你可以自己写FLASH烧写代码烧到FLASH里面跑

根据地的兄弟们,团结就是力量
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-01-27 16:41
Sigh,终于不能忍受了,把系统干掉了。重新建了平台。不能编译的问题没有了,又出现了新问题。1、不能编译。提示说找不到文件:Error: Could not find file 'D:/WINCE420/PUBLIC/S3C2410/RelDir/SAMSUN~1/irsir.dll' on disk
2、这个问题更加诧异,Eboot执行OEMPreDownload()函数时候,到了这一段:
#ifndef SIMULATOR
    if (g_bDownloadImage &&
        !EbootInitEtherTransport (&g_pBootCfg->EdbgAddr, &g_pBootCfg->SubnetMask,&fGotJumpImg,pDHCPLeaseTime,EBOOT_VERSION_MAJOR, EBOOT_VERSION_MINOR, PLATFORM_STRING, szDeviceName,EDBG_CPUID, 0)) {
        return BL_ERROR;
    }
#endif

加调试信息显示已经进入了#ifndef这一句,但是却没有从return这一句出来。而且调试信息显示也没有进入这个函数EbootInitEtherTransport()这是怎么回事啊。好生郁闷。
 


感谢二位大哥,这个问题已经解决了。原因在于网卡驱动有问题,在异常多次的函数调用最后,归于网卡驱动的读帧函数有问题!!修改了之后就可以进去了。谢谢二位的支持。对此表示真诚的感谢。

不过还有新的问题。我使用.NET4.2中WinCE下的Emulator4.20可以和什么样的仿真器连接呢,这个有什么要求,比如使用MultiICE行不行呢?除了使用Eboot、Sboot之外,有没有别的方法下载内核呢?只有用仿真器了吧?
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-01-26 08:35
[quote]To wxl_50685330大哥:
我知道TARGETLIBS,但我不太清楚SOURCELIBS,请你解释一下它们的区别和用法。


这两天弄东西遇到这个,好像是这样的:

SOURCELIBS用来加一个库,和你的代码生成一个新的库

TARGETLIBS用来和你的代码生成一个EXE或者DLL [/quote]

大哥,好像是你说的这个意思,我好像明白了:)))
Come on, let us drive the world.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-01-25 19:15
To wxl_50685330大哥:
我知道TARGETLIBS,但我不太清楚SOURCELIBS,请你解释一下它们的区别和用法。


这两天弄东西遇到这个,好像是这样的:

SOURCELIBS用来加一个库,和你的代码生成一个新的库

TARGETLIBS用来和你的代码生成一个EXE或者DLL
根据地的兄弟们,团结就是力量
上一页
游客

返回顶部