这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [原创]vxworks在线升级中遇到的问题(棘手),请高手指教!!!

共9条 1/1 1 跳转至

[原创]vxworks在线升级中遇到的问题(棘手),请高手指教!!!

菜鸟
2005-06-04 05:31:28     打赏

本人在做基于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时,就出错。

不知道我写的清不清楚。希望各位高手能指点迷经,小弟不甚感谢!!!!




关键词: 原创     vxworks     在线升级     遇到     问题     棘手         

菜鸟
2005-06-04 18:09:00     打赏
2楼

咱没人回复啊!


菜鸟
2005-06-06 03:04:00     打赏
3楼
没人懂吗?请指教!!!

菜鸟
2005-06-06 17:03:00     打赏
4楼

谢谢你的回复[em01],这样我就觉的不是孤单!

你的第二条建议我已采用,即:“你的tffs之前已经能够绑定成功了,后面就不要每次都格式化了,直接用usrTffsConfig就行了。”,结果还是一样,只是格式化时的错误代码变了,具体如下:

Formatting flash.........format error,errno = 6d0002 done Attaching to TFFS... tffsDevCreate failed. usrTffsConfig failed.

我从错误代码入手,问题是不知从哪查找错误代码,看了下flash芯片资料,网上搜都没有。

问题一定是出在format flash上,这一点应该没错。多指教!!


菜鸟
2005-06-06 19:34:00     打赏
5楼

不格式化flash,直接用usrTffsConfig,问题依然存在。

tffsDevCreate failed. usrTffsConfig failed.

另外上几次得错误代码查到了:

-> tWdbTask value = 32820896 = 0x1f4cea0 -> printErrno 0x8800e2 0x8800e2 = S_ftpLib_REMOTE_SERVER_ERROR_226 value = 0 = 0x0 -> printErrno 0x8800e2 0x8800e2 = S_ftpLib_REMOTE_SERVER_ERROR_226 value = 0 = 0x0 -> printErrno 0x6d0002 0x6d0002 = S_muxLib_NO_DEVICE value = 0 = 0x0

在tornado调试状态下,可以成功。tWdbTask 会不会是任务优先级出了问题?


菜鸟
2005-06-07 16:32:00     打赏
6楼

调用dosFsInit和usrTffsConfig时,不要调用多遍,参考如下代码试试看行不行。

LOCAL STATUS tffsInit ( int drive, /* TFFS drive number (0 - (noOfDrives-1)) */ int removable, /* 0 - nonremovable flash media */ char * fileName /* file name to download */ ) { LOCAL static tffsInitOk=0; if(!tffsInitOk) {

if (tffsDrv () != OK) { printErr ("Could not initialize.\n"); return (ERROR); } if(dosFsInit (NUM_DOSFS_FILES)!=OK) /* initialize DOS-FS */ printf("Dos Init ERROR \n"); if (usrTffsConfig (drive, removable, fileName) == ERROR) { printErr ("usrTffsConfig failed.\n"); return (ERROR); } strcpy(tffsDevName, fileName); tffsInitOk=1; } return (OK); }


菜鸟
2005-06-07 17:41:00     打赏
7楼

谢谢你的回复!!

tffsDevName 是啥参数?找不到。有没有qq,我的284369762,谢谢。请指教!


菜鸟
2005-06-07 18:42:00     打赏
8楼

按照meteorsong 的建议,问题依然存在。

我试着去掉usrtffsconfig(0,0,"/tffs/")语句,在调试状态下,是完全不行的。ftp显示的错误和非调试状态下的错误一样,即:CWD /tffso failed - path does not exit

说明问题出在usrtffsconfig(0,0,"/tffs0/"),是不是在可自启动的状态下,就不能配置tffs?或者是如meteorsong 所说不能重复调用。迷惑。。。。。。


菜鸟
2005-06-10 01:03:00     打赏
9楼

问题已解决!!

一个低级错误引起的大麻烦。花了一个星期的时间,不过能解决也不错。

问题出在:flash芯片型号搞错了,bsp中定义的芯片是tef28320, 以前也确实用这个芯片。后来换成tef28160,而bsp中未改变。生成带应用程序的vxworks时,设置还是以前的设置。所以造成一直出错。

谢谢各位网友,同行的回贴!大家共同进步!

[em01]

共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]