3608|5

51

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于END设备名初始化的问题 [复制链接]

近我在调试BOOT程序。目前串口已经调试好,希望BOOT程序能支持网口下载vxWorks镜像。但是遇到了一个棘手的问题。
在现在END网络程序不清楚地情况下,我在BOOT命令行下输入命令:
$ motfec (0,0)host:vxWorks e=10.1.1.2 h=10.1.1.1 u=anonymous pw=user f=0x80 tn=ep8xx
得到结果:

---------------------------------------------------------
“[VxWorks Boot]:
[VxWorks Boot]: $ motfec (0,0)host:vxWorks e=10.1.1.2 h=10.1.1.1 u=anonymous pw=
user f=0x80 tn=ep8xx

boot device          : motfec
unit number          : 0
processor number     : 0
host name            : host
file name            : vxWorks
inet on ethernet (e) : 10.1.1.2
host inet (h)        : 10.1.1.1
user (u)             : anonymous
ftp password (pw)    : user
flags (f)            : 0x80
target name (tn)     : ep8xx

def INCLUDE_END

motfec
attached==0

---------------------------------------------------------------
                       图1


我的LOCAL STATUS bootLoad (char *   bootString,FUNCPTR *pEntry) 函数里面的“pCookie=findCookie(params.unitNum, bootDev);”命令行总是返回NULL值。findCookie()函数如下:
LOCAL void* findCookie(int unitNo,char* devName )
{
    int count;
    for(count=0;count<32;count++)
        {
        if((cookieTbl[count].unitNo==unitNo) &&
            (STREQ(cookieTbl[count].devName,devName)))
        return(cookieTbl[count].pCookie);
        }
        printf("%s\n",cookieTbl[count].devName);
                printf("%s\n",devName);
    return (NULL);
    }
我发现cookieTbl[count].devName是个空值,在bootConfig.C的usrRoot()函数中的END网络设备初始化阶段,并没有对cookieTbl[count].devName进行初始化。遍查程序其他地方,也没有找到对cookieTbl[count].devName进行初始化的地方。
usrRoot()函数中END网络设备初始化代码如下:
for (count = 0, pDevTbl = endDevTbl; pDevTbl->endLoadFunc != END_TBL_END;
pDevTbl++, count++)
{
cookieTbl[count].pCookie=muxDevLoad(pDevTbl->unit, DevTbl->endLoadFunc,
pDevTbl->endLoadString,pDevTbl->endLoan, pDevTbl->pBSP);
        
if (cookieTbl[count].pCookie == NULL)        {        printf ("muxLoad failed!\n");          }
cookieTbl[count].unitNo=pDevTbl->unit;
bzero((void *)cookieTbl[count].devName,END_NAME_MAX);
pDevTbl->endLoadFunc((char*)cookieTbl[count].devName, NULL);
}
        我试图在上面一段程序之后加一段初始化程序,如下:
        cookieTbl[0].devName[0]='m';
        cookieTbl[0].devName[1]='o';       
        cookieTbl[0].devName[2]='t';
        cookieTbl[0].devName[3]='f';       
        cookieTbl[0].devName[4]='e';
        cookieTbl[0].devName[5]='c';               
        目前我只有1个网络设备,而且名字想定义为“motfec”。但是自己初始化设备名后,结果比图1所示的结果更乱了,像是死在了“bootParamsShow (BOOT_LINE_ADRS);”函数里。bootParamsShow()函数是个库函数,函数源代码无法看到。
        请问,各位大侠,“cookieTbl[count].devName”网络设备名的初始化是在什么地方进行的?如何进行的?

最新回复

if (END_OBJ_INIT (&pDrvCtrl->endObj, (DEV_OBJ*) pDrvCtrl,                       MOT_FEC_DEV_NAME, pDrvCtrl->unit, &netFuncs,                       "Motorola FEC Ethernet Enhanced Network Driver")         == ERROR) 估计是在这个程序行里面做得初始化。谢谢zkyd41和scscat兄弟。  详情 回复 发表于 2010-5-25 17:35
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
在网络接口能用于发送或接收数据帧前,必须将设备装载到MUX中,也就是调用muxDevLoad,此函数会初始化cookieTbl
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
muxDevLoad  在初始化的时候有的。

usrRoot()函数中END网络设备初始化代码如下:
for (count = 0, pDevTbl = endDevTbl; pDevTbl->endLoadFunc != END_TBL_END;
pDevTbl++, count++)
{
cookieTbl[count].pCookie=muxDevLoad(pDevTbl->unit, DevTbl->endLoadFunc,
pDevTbl->endLoadString,pDevTbl->endLoan, pDevTbl->pBSP);
   
if (cookieTbl[count].pCookie == NULL) { printf ("muxLoad failed!\n"); }
cookieTbl[count].unitNo=pDevTbl->unit;
bzero((void *)cookieTbl[count].devName,END_NAME_MAX);
pDevTbl->endLoadFunc((char*)cookieTbl[count].devName, NULL);
}
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
endLoad 函数里有end设备名字的,此函数调用两遍,第一次获得设备名字,第二次执行初始化
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 
看起来像是configNet.h中没有把你的Load函数加进去。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

6
 
if (END_OBJ_INIT (&pDrvCtrl->endObj, (DEV_OBJ*) pDrvCtrl,
                      MOT_FEC_DEV_NAME, pDrvCtrl->unit, &netFuncs,
                      "Motorola FEC Ethernet Enhanced Network Driver")
        == ERROR)
估计是在这个程序行里面做得初始化。谢谢zkyd41和scscat兄弟。
 
 
 

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

查找数据手册?

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
快速回复 返回顶部 返回列表