at91rm9200上vxworks的热启动试验(WARM_BOOT)

本文记录了一位嵌入式开发者在VxWorks系统中实现at91rm9200的热启动过程。通过分析sysToMonitor函数和ROM中的汇编代码,找到了正确的跳转地址,从而成功实现热启动。作者强调理解汇编和ARM存储方式对于解决此类问题的重要性。
摘要由CSDN通过智能技术生成

/* 写在开头 */:

        笔者的工作是做嵌入式系统软件开发,入行到现在才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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值