10656|16

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求教:vxWorks应用程序如何能让系统重启? [复制链接]

 vxWorks应用程序如何能让系统重启?

最新回复

学习一下,顺便顶一顶  详情 回复 发表于 2010-5-29 02:02
点赞 关注
 

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
reboot函数。参见帮助。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我试过,是使用的reboot(2),来重新启动系统并清除内存。

该函数执行后,系统没有重启。

reboot是shell命令,在程序中使用shell命令是不是需要特殊的调用方式,或者是不是内核中需要包含那个组件?

有没有人使用过?
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
直接写控制重启的那个寄存器。
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

5
 
没有重启是你的BSP没有支持。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 
嵌入式系统中一般都有硬件狗,有CPU狗也有外狗,确认一下它是如何设置的,如果已经使能了锁中断之后死循环
就可以复位,比调reboot要彻底一些。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
STATUS sysToMonitor
(
int startType    /* parameter passed to ROM to tell it how to boot */
)


就是它了~~reboot最后会调用到这个函数

其实应用程序可以使用的RESET要查找CPU的软硬中断资源的~~实在不行WDT超时不也重启了
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
roboot函数并不会充气系统,但会调用syslib.c中的sysToMonitor函数


/*******************************************************************************
*
* sysToMonitor - transfer control to the ROM monitor
*
* This routine transfers control to the ROM monitor.  Normally, it is called
* only by reboot()--which services ^X--and by bus errors at interrupt level.
* However, in some circumstances, the user may wish to introduce a
* to enable special boot ROM facilities.
*
* The entry point for a warm boot is defined by the macro ROM_WARM_ADRS
* in config.h.  We do an absolute jump to this address to enter the
* ROM code.
*
* RETURNS: Does not return.
*/

STATUS sysToMonitor
    (
    int startType    /* parameter passed to ROM to tell it how to boot */
    )
    {
    FUNCPTR         pRom = (FUNCPTR) (ROM_WARM_ADRS);
    int         ix;

    intLock ();                                /* disable interrupts */

    cacheDisable (INSTRUCTION_CACHE);        /* Disable the Instruction Cache */
    cacheDisable (DATA_CACHE);              /* Disable the Data Cache */

#if     (CPU == PPC604)
    vxHid0Set (vxHid0Get () & ~_PPC_HID0_SIED);        /* Enable Serial Instr Exec */
#endif  /* (CPU == PPC604) */
  
    /* Turn off timer */

#ifdef INCLUDE_AUX_CLK
    sysAuxClkDisable();
#endif
   
    /* turn off all i8259 int's */

    for (ix = 0; ix < WB_MAX_IRQS; ix++)
        {
        intDisable (ix + INT_NUM_IRQ0);
        }

    for (ix = 0; ix < EPIC_MAX_EXT_IRQS; ix++)
        {
        intDisable (ix);
        }

    sysEpicInit(EPIC_DIRECT_IRQ, (ULONG)0); /* reset the epic registers */
   
#if FALSE /* sandpoint errata: do not enable this until fixed in X3 rev */
    {
    UINT8         resetVal;

    pciConfigInByte  (WB_PCI_BUS, WB_PCI_DEV, WB_PCI_FUNC,
                      WB_PCI_CLK_DIV_INDX, &resetVal);

    pciConfigOutByte (WB_PCI_BUS, WB_PCI_DEV, WB_PCI_FUNC,
                      WB_PCI_CLK_DIV_INDX, (resetVal | WB_RSTDRV_BIT));

    /* 50 ms delay to allow ISA & PCI RST to settle */
    sysMsDelay (50);
    }
#endif

    vxMsrSet (0);                /* Clear the MSR */

    (*pRom) (startType);        /* jump off to romInit.s */

    return (OK);                /* in case we continue from ROM monitor */
    }
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

9
 
        taskSpawn("rebooting", 10, 0, 1024, (FUNCPTR)reboot,
                                BOOT_QUICK_AUTOBOOT, 0, 0, 0, 0,   0, 0, 0, 0, 0);
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
(void(*)(void))reset_addr
其中reset_addr就是你的复位地址,根据你的CPU类型和你的BSP设置定
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

11
 
reboot让系统重新创建任务。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

12
 
停止喂狗即可
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

13
 
直接写控制重启的那个寄存器,最简单。和你应用的体系有关。
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

14
 
启动硬件狗,停止喂食即复位重启。具体变成需要参考主板资料
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

15
 
看看sysLib.c中有没有sysToMonitor函数,有就调用这个函数,没有那就直接用硬件狗或者写寄存器了
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

16
 
好像没那么简单,呵呵.
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

17
 
学习一下,顺便顶一顶
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表