阅读:5468回复:47
问一个简单的问题,明白人请进!
大侠们问一个弱问题,halether.c里声明函数的原型和定义一般放在哪个目录下啊,比如SMDK2410里halether.c里的CS8900DBG_Init()函数是在哪里定义的啊?我在Drivers目录里面文件中加上了这个函数的定义怎么还是编译出错: unresolved external symbol CS8900DBG_Init啊~~~能不能看看怎么回事捏??
[编辑 - 1/18/05 by zouyingmyfriend] |
|
沙发#
发布于:2005-02-02 10:44
情况如图所示。
|
|
板凳#
发布于:2005-02-02 10:35
在PB下载image的时候主机是如何和设备连接的啊?从这种情况来看,设备是一个循环发送的过程,设备和主机如何建立UDP呢,现在真的有点晕了。 检查一下你的主机和目标机的ip是不是在一个子网内啊? |
|
|
论坛版主
|
地板#
发布于:2005-02-01 15:18
喔,这样啊,好像兄弟伙到这儿都要遭一次喃:))),
这样,你先检查一下你的xxxgetframe和xxxsendframe是不是正确接收到包了,并且返回了什么(特别注意返回值哈,返回0成功还是1成功)。 |
|
地下室#
发布于:2005-02-01 14:48
在PB下载image的时候主机是如何和设备连接的啊?从这种情况来看,设备是一个循环发送的过程,设备和主机如何建立UDP呢,现在真的有点晕了。
|
|
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没有能够置真,搜索了所有代码也不能看出如何跳出这个循环的,是不是用了中断啊,在哪里用的呢,不能结束这个循环就不能建立连接,郁闷啊。这是怎么回事啊? |
|
论坛版主
|
6楼#
发布于:2005-02-01 13:03
哈哈,稳住稳住,革命总有一天会胜利的。对了,BLCOMMON的源代码里面有个地方写错了,不知道对你们的东西有没有影响,你先试试再说
|
|
7楼#
发布于:2005-01-31 17:49
现在是Eboot有问题,但是找不到。在配置里面找不到设备,因而无法下载啊,好郁闷啊,回家过不了好年啦55555555555555555
|
|
论坛版主
|
8楼#
发布于:2005-01-31 14:42
pb这边选config然后找到你的目标板没有?要选择一下你的目标板,然后downlaod三
用仿真器下确实比较慢,不过可以忍受:))) |
|
9楼#
发布于:2005-01-30 18:48
又出问题啦!!Eboot终端信息出现:Sent BOOTME to 255.255.255.255出现很多次,但是TFTP却连不上,这是怎么回事啊??前面好像也有人碰到这个问题,你是怎么解决的啊?
|
|
10楼#
发布于:2005-01-29 12:27
天啊,仿真器读出的内存内容是???,这是怎么回事啊,晕!!
|
|
11楼#
发布于:2005-01-28 16:20
我现在有烧写flash的程序,但是11M的bin,那样写太慢了吧。比较快的下载OS方法只有用Eboot下载OS一种是吧。
另外刚才那个是理解错误,PB的Emulator方式是将OS下载到虚拟机里面是吧,当然不能写到目标板里了。 我还发现中文字体支持占了OS image很大体积,把中午去掉就减小了10M以上,太夸张了…… |
|
论坛版主
|
12楼#
发布于:2005-01-28 16:12
喔,PB说的那个EMULATOR是模拟一个跑CE的设备。而不是指调试用的MUTIICE这样的“调试器”,你现在的OS IMAGE做好没有?做好了可以自己烧入设备FLASH,下载是通过JTAG口,烧写代码也需要你自己写。PB下载可用于联机调试,实现了OEMFLASHXXX函数也可以写入FLASH
|
|
13楼#
发布于:2005-01-28 15:53
我现在用MultiICE仿真器可以下载OS Image吗?PB的使用Emulator4.20下载是怎么回事,我打开这个东西下载总说may not have enough RAM allocate。事实上我已经配置成128M了怎么还说不够,该怎么样配才能下载啊?
|
|
论坛版主
|
14楼#
发布于:2005-01-28 13:42
只要把你得CODE弄到FLASH里面就作数:)
大的是OS IMAGE,不是内核 拟裁减的时候去掉的东西如果做依赖检查发现需要会被加回去,裁减的时候用IDE“可能”(只是可能哈:))比较麻烦,不过原则是从最高层的开始裁 |
|
15楼#
发布于:2005-01-28 12:13
哪有厉害啊,本人还是菜鸟一只呢。
老大哥有了仿真器没有Eboot也应该是能下Code的哈,但是捏,现在的内核太大了,我想裁剪一些,但是从PB那个树形结构里面把不要的东西删掉结果编译出来大小还是那么大,另外哪个东西能够较大的裁掉啊,我的flash只有16M,但是现在内核bin有22M,nb0有29M之巨,怎样裁比较好?前面看到他们说去掉中文字体支持?是这样吗? |
|
论坛版主
|
16楼#
发布于:2005-01-28 11:19
搞定了?厉害
EMULATOR不需要和设备连啊,本身就是仿真的设备。用仿真器也可以把CODE下到你的板子上,你可以自己写FLASH烧写代码烧到FLASH里面跑 |
|
17楼#
发布于:2005-01-27 16:41
Sigh,终于不能忍受了,把系统干掉了。重新建了平台。不能编译的问题没有了,又出现了新问题。1、不能编译。提示说找不到文件:Error: Could not find file 'D:/WINCE420/PUBLIC/S3C2410/RelDir/SAMSUN~1/irsir.dll' on disk 感谢二位大哥,这个问题已经解决了。原因在于网卡驱动有问题,在异常多次的函数调用最后,归于网卡驱动的读帧函数有问题!!修改了之后就可以进去了。谢谢二位的支持。对此表示真诚的感谢。 不过还有新的问题。我使用.NET4.2中WinCE下的Emulator4.20可以和什么样的仿真器连接呢,这个有什么要求,比如使用MultiICE行不行呢?除了使用Eboot、Sboot之外,有没有别的方法下载内核呢?只有用仿真器了吧? |
|
18楼#
发布于:2005-01-26 08:35
[quote]To wxl_50685330大哥: 这两天弄东西遇到这个,好像是这样的: SOURCELIBS用来加一个库,和你的代码生成一个新的库 TARGETLIBS用来和你的代码生成一个EXE或者DLL [/quote] 大哥,好像是你说的这个意思,我好像明白了:))) |
|
|
论坛版主
|
19楼#
发布于:2005-01-25 19:15
To wxl_50685330大哥: 这两天弄东西遇到这个,好像是这样的: SOURCELIBS用来加一个库,和你的代码生成一个新的库 TARGETLIBS用来和你的代码生成一个EXE或者DLL |
|
上一页
下一页