/* 写在开头 */:
笔者的工作是做嵌入式系统软件开发,入行到现在才1年半时间,接触vxworks大概8,9个月吧,之前所用的BSP中并不能实现热启动(即在控制台shell中输入reboot或者按ctrl+X实现重新加载vxworks),进行上述操作后,程序就跑飞了。
在厌倦了无数次去按板上的复位键之后,我决定研究一下热启动的方式,并终于在今天成功了,激动之余还是想通过博客的方式将过程记录下来,以免自己忘记了,如果有幸能帮到一些有做嵌入式工作的朋友,那将荣幸之至。。。
/* 进入正题 */
一些资料上说vxworks的reboot是通过钩子函数调用sysLib.c中的sysToMonitor(int)函数(钩子函数的实现过程还没去研究),所以实现reboot的关键就在于sysToMonitor(int)函数
sysToMonitor(int)函数执行过程大概为
1、关闭中断
2、部分硬件的初始化
3、跳转到romInit.s中执行,也就是跳转到rom中
/* 补充说明 */
笔者所采用的启动是bootrom加载ram based vxworks方式
/* 再次进入正题 */
1、2、部分笔者未做任何更改,主要修改的地方为第3步中跳转到rom的地址。
STATUS sysToMonitor
(
int startType /* parameter passed