您的位置 首页 测评

vxWorks在线晋级技能

看到有很多网友询问在vxworks下如何实现在线升级,逐一答复了多次,还是没能说明白。因此决定把自己以前实际做的过程描述一下,希望能对大家有所

看到有许多网友问询在vxworks下怎么完结在线晋级,逐个答复了屡次,仍是没能说理解。因而决议把自己曾经实践做的进程描绘一下,期望能对咱们有所协助。如有不当之处,请指出。自己曾经在ppc860T, ppc850, pentium-pc104(加doc2000)的方针机上完结过。

1 首要,需求在方针机上完结文件体系,比方运用trueFFS,用dosFS初始化tffs设备。在完结tffs驱动之后,能够调用usrTffsConfig(0,0,/flash);假如成功,在shell下调用devs指令,应该能够看到 /flash设备。

2 板子上首要应该有bootrom,假如没有,运用仿真器写入。

3 让板子flash中的bootrom发动,经过网络加载vxworks。更新vxworks,应该使方针机在vxworks操作体系的支撑之下。即在运转vxworks时更

新存储在flash中的vxworks映象。

该vxworks中应该包括tffs组件,并用usrTffsConfig创立一个tffs设备。假如创立不成功,先调用sysTffsFormat格式化该设备,再创立。

这个vxworks中,应该包括下列代码(也能够发动结束之后,经过target server动态下载):

STATUS myftp(char* host, char* user, char* passwd, char* srcFile, char* desFile)

{

int fd, total = 0;

int ctrlSock;

int dataSock;

char buf [1024];

int nBytes;

remove ( desFile);

fd=open(desFile,0x202,0);

if (ERROR==fd)

{

return ERROR;

}

if (ftpXfer (host,user,passwd , , RETR %s,NULL, srcFile, ctrlSock, dataSock) == ERROR)

{

return (ERROR);

}

while ((nBytes = read (dataSock, buf, 512)) > 0)

{

total += nBytes;

write(fd, buf, nBytes);

}

close(fd);

close (dataSock);

close (ctrlSock);

if(total > 0)

{

return ERROR;

}

return OK;

}

各参数的意义为:

char* host: 主机ip地址,该主机上寄存了最新的vxworks映象。

char* user: ftp的用户名。

char* passwd: ftp的暗码。

char* srcFile: 主机上vxworks映象的文件名,一般为vxworks。

char* desFile: 方针机上寄存的vxworks文件名,一般为vxworks。

4 因为后边vxworks将从tffs中加载,而不是经过网络,因而应该在usrAppInit中初始化网络接口。

在tornado2.0.x下能够这样做:

usrNetEndDevStart(cpm,0);

usrNetIfConfig(cpm,0,192.168.0.240,cpm,0xffffff00);

在tornado2.2.x下,能够这样做:

ipAttach(0,cpm);

ifMaskSet (cpm0, 0xffffff00);

ifAddrSet (cpm0,192.168.0.240);

5 方针机发动结束之后,在某一台主机上翻开ftp server,该主机上寄存了最新的vxworks映象文件。此外,还应该创立一个用户,比方用户名和暗码均为“target”,设置它的home directory为最新的vxworks的途径。

6 在方针机的target shell中履行myftp,比方:myftp(192.168.0.1, target, target, vxWorks, vxWorks)假如履行成功,回来OK(0),否则为ERROR(-1)。不成功,则检查网络和ftp服务器端的服务和装备。

这样,新的vxworks就寄存于tffs设备中,需求重新发动方针机,使其运转新的vxworks(本文中的vxworks既包括了操作体系,也包括了用户应用程序)。

7 咱们需求更新bootrom,使方针机加电后直接从tffs设备中加载vxworks。为此,修正bsp的config.h文件:

#define DEFAULT_BOOT_LINE \

tffs=0,0(0,0)host:/flash/vxWorks h=192.168.0.118 e=192.168.0.120 u=target pw=target

#define INCLUDE_TFFS

#define INCLUDE_DOSFS

假如是在tornado2.0.x下,还需求修正 \target\config\comps\src\net\usrNetBoot.c文件:

if ( (strncmp (sysBootParams.bootDev, scsi, 4) == 0)

|| (strncmp (sysBootParams.bootDev, ide, 3) == 0)

|| (strncmp (sysBootParams.bootDev, ata, 3) == 0)

|| (strncmp (sysBootParams.bootDev, fd, 2) == 0))

改为:

if ( (strncmp (sysBootParams.bootDev, scsi, 4) == 0)

|| (strncmp (sysBootParams.bootDev, ide, 3) == 0)

|| (strncmp (sysBootParams.bootDev, ata, 3) == 0)

|| (strncmp (sysBootParams.bootDev, tffs, 4) == 0)

|| (strncmp (sysBootParams.bootDev, fd, 2) == 0))

8 build bootrom,生成能够运用的bootrom.bin文件。在这一步之前,应该首要make clean。

9 更新bootrom时,咱们能够直接运用vxworks中FTP Client和Network Remote I/O Support组件。为此,需求使当时正在运转的vxworks是通

过网络加载的,这样vxworks发动结束之后,当时默许途径是主机上vxworks映象文件地点的目录,能够用pwd和ls指令检查。把上一步中生成的

bootrom.bin文件拷贝到该目录下。该主机上相同需求发动ftp server服务。

10 在方针机的target shell中履行

tffsBootImagePut 0,0×100,bootrom.bin

正常情况下就能够经过tffs文件体系在线更新了bootrom,使其从tffs设备中加载vxworks。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/297696.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部