这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [讨论]在线升级

共12条 1/2 1 2 跳转至

[讨论]在线升级

菜鸟
2007-03-27 18:04:37     打赏

问题:如何实现vxWorks在线升级?

1 在调试阶段,可以使用bootRom从网口将vxWorks从宿主机上下载到目标机的RAM上进行调试。

2 在产品应用阶段,可以将应用做成vxWorks_rom,从而将BSP和APP固化到FLASH中。

3 现在的问题是如果应用出现了问题,则只能重新烧录,非常不方便。

4 所以想法是:配置两块FLASH,一块用作bootRom,一块用作vxWorks。在bootRom起来后,将vxWorks从FLASH搬移到RAM中,并执行vxWorks。

5 在应用中,增加控制台,接收到升级命令后,通过串口将vxWorks从PC上更新到FLASH中,然后重新启动目标板,执行新的vxWorks。

问题:

1 如何将vxWorks烧录到FLASH中?

2 如何将vxWorks从FLASH中搬移到RAM中并执行?

3 如何通过串口将vxWorks更新到FLASH中?

谢谢指教!




关键词: 讨论     在线升级     vxWorks    

菜鸟
2007-03-27 19:01:00     打赏
2楼

问题3里面讲的应用出了问题是指Flash中的vxWorks被破坏吗?

不是很理解你的问题,如果是vxWorks被破坏的话,在bootrom里面做一个vxWorks的校验,校验失败自动加载就可以解决了。


菜鸟
2007-03-27 19:03:00     打赏
3楼
不好意思,可能没有说清。应用出问题是可能再需要增加一些功能或者修改一些BUG。

菜鸟
2007-03-27 19:43:00     打赏
4楼

只能通过在线打补丁解决你的问题了,你可以做一个工具,先将要修改的函数和新增的函数编译好,然后分析当前正在板子里面运行版本的符号表,找到需要修改的函数所在的位置,把它的函数的第一条指令修改成跳转,地址为你新编译的函数地址,新函数的返回也改成跳转,地址为板子里面的老函数出口地址。新增加的函数跟修改的函数一起放到内存的某个空闲位置中。

在flash中的保存的原来代码没有办法修改,只能把补丁另外存储,当启动的时候增加一个补丁检查机制,检查补丁区是否存在有效补丁,如果有,每次启动的时候自动打进去。

vxWorks在6以后提供补丁机制。


菜鸟
2007-03-27 20:16:00     打赏
5楼
谢谢!顺便请教:从启动FLASH跳转到应用FLASH该如何做?

院士
2007-03-27 20:25:00     打赏
6楼
以下是引用fhcfhcfhc在2007-3-27 12:16:00的发言:
谢谢!顺便请教:从启动FLASH跳转到应用FLASH该如何做?

问题多是好事情,也要等woodhead考虑清楚了才行~


院士
2007-03-27 23:26:00     打赏
7楼
哦~~~

菜鸟
2007-03-28 16:53:00     打赏
8楼
能否把你的问题描述的详细些,我不是很清楚你讲的启动flash和应用flash的含义

菜鸟
2007-03-28 21:27:00     打赏
9楼

谢谢!

我的本意是将bootRom烧录到一片FLASH中,将应用程序生成的vxWorks放到另一片FLASH中,bootRom启动后,不再通过网口或串口下载vxWorks,而是将应用FLASH中的vxWorks拷贝到RAM中并运行。


菜鸟
2007-03-28 22:17:00     打赏
10楼
没有问题,这是vxWorks基本的启动方式。在bootrom的代码中把“另一片Flash”中的vxWorks读出来,放到RAM_LOW_ADRS地址,然后调用go(RAM_LOW_ADRS)函数就可以了。

共12条 1/2 1 2 跳转至

回复

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