本人在做基于vxworks操作系统的在线升级,遇到一些棘手的问题。具体做法就是网管下发在线升级命令,然后通过登陆到本地ftp,在特定的目录下下载需要更新的映像文件存入特定空间中,然后将映象文件写入flah,重新启动目标板。
以上就是基本做法。现在的问题是:能登陆到本地ftp且能下载到映像文件,但写入flash文件系统时有时会出错!登陆ftp,下载映象文件及写入flash这部分程序参考bsp中,bootconfig.c中的函数netload.两外加入了对flash文件系统的初始化代码,具体如下:
STATUS tffsDevInit() { char path[20]; printf("\nFormatting flash........."); sysTffsFormat(); printf("done\n"); printf("Attaching to TFFS... "); dosFsInit(NUM_DOSFS_FILES); /* initialize DOS-FS getwd(path); if (usrTffsConfig (0, 0, "/tffs0/") == ERROR) { printErr("usrTffsConfig failed.\n"); return (ERROR); } printf("done\n"); ioDefPathGet(path); return OK; }
1。
在调试状态下(通过tornado2。2直接下载应用程序),在线升级成功,即:可以成功将新的映象文件写入flash文件系统,并自动运行。返回打印信息如下:
Formatting flash.........done Attaching to TFFS... done receive vxWorks.z from ftp write vxWorks to flash reset mcp ...... Loading... 778337 bytes
Formatting flash.........done Attaching to TFFS... usrTffsConfig failed. receive vxWorks.z from ftp write vxWorks to flash reset mcp ...... Loading... 538417 bytes
Formatting flash.........done Attaching to TFFS... usrTffsConfig failed. receive vxWorks.z from ftp write vxWorks to flash
上面是连续3次下发网管在线升级命令后返回的打印信息,后面两次都有出错信息(usrTffsConfig failed),但可以写入flash,结果正确。
2。将带应用程序的vxworks下载到目标板(非调试状态,可自启动),通过网管下发在线升级命令,这时出错。错误代码如下:
Loading... 813326 bytes
Formatting flash.........format error,errno = 8800e2 done Attaching to TFFS... tffsDevCreate failed. usrTffsConfig failed. receive vxWorks.z from ftp write vxWorks to flash reset mcp ......
同时ftp界面也显示出错:CWD /tffso failed - path does not exit
我有点纳闷,在调试状态下完全可以,但生成带应用程序的vxworks时,就出错。
不知道我写的清不清楚。希望各位高手能指点迷经,小弟不甚感谢!!!!