嵌入式开发者社区

标题: C6657 WatchDog实现问题求解 [打印本页]

作者: kazvvv    时间: 2016-6-7 09:42
标题: C6657 WatchDog实现问题求解
在SYS/BIOS系统中写了看门狗,调试时发现系统并不会重启,以下是WatchDog的初始化程序。
  1. void CreatWtd(void)
  2. {
  3.         // 配置 定时器 / 计数器 1 为 看门狗模式
  4.         TimerConfigure(SOC_TMR_1_REGS, TMR_CFG_64BIT_WATCHDOG);

  5.         // 设置周期 64位
  6.         TimerPeriodSet(SOC_TMR_1_REGS, TMR_TIMER12, TMR_PERIOD_LSB32);
  7.         TimerPeriodSet(SOC_TMR_1_REGS, TMR_TIMER34, TMR_PERIOD_MSB32);

  8.         // 使能看门狗定时器
  9.         TimerWatchdogActivate(SOC_TMR_1_REGS);
  10. }
复制代码



作者: 希望缄默    时间: 2016-6-7 18:01
这个..............
定时器在 SYS/BIOS 需要用 SYS/BIOS API DSP C66x 的 WatchDog 还需要额外配置
作者: 希望缄默    时间: 2016-6-7 18:10
[attach]834[/attach]

TI 官方 SYS/BIOS WatchDog 驱动 供你参考

作者: kazvvv    时间: 2016-6-8 13:42
希望缄默 发表于 2016-6-7 18:10
TI 官方 SYS/BIOS WatchDog 驱动 供你参考

有没有工程源码?
作者: kazvvv    时间: 2016-6-8 13:48
STK中例程STK_Timer里面有有WatchDog测试函数
  1. /*set local timer (==DNUM of a core) as watch dog timer,
  2. service the watch-dog for sometime,
  3. after stop servicing watch-dog, let it trigger NMI*/
  4. void watchdog_timer_test()
  5. {
  6.         int i;
  7.         Uint32 timerCnt;
  8.         Timer64_Config tmrCfg;

  9.         //select output on TIMO0 from local timer.
  10.         gpBootCfgRegs->TOUTSEL = (DNUM*2)<<CSL_BOOTCFG_TOUTSEL_TOUTSEL0_SHIFT;

  11.         gpBootCfgRegs->RSTMUX[DNUM] =
  12.                 (4<<CSL_BOOTCFG_RSTMUX0_RSTMUX_DELAY0_SHIFT)
  13.                 /*WD timer event trigger NMI*/
  14.                 |(WD_RESET_DEVICE<<CSL_BOOTCFG_RSTMUX0_RSTMUX_OMODE0_SHIFT);

  15.         puts("start watch-dog timer...");

  16.         //configure the timer for watch-dog
  17.         tmrCfg.timer_num= DNUM;
  18.         tmrCfg.timerMode= TIMER_WATCH_DOG;
  19.         tmrCfg.period= (unsigned long long)WATCH_DOG_PERIOD_MS*gDSP_Core_Speed_Hz/6000;
  20.         tmrCfg.pulseWidth= 3;
  21.         Timer64_Init(&tmrCfg);

  22.         //service the watch-dog for sometime,
  23.         for(i=1; i<=30; i++)
  24.         {
  25.                 timerCnt= gpTimerRegs[DNUM]->CNTLO;
  26.                 Service_Watchdog(DNUM);
  27.                 printf("service watch-dog %d times, at time counter = %u\n",
  28.                         i, timerCnt);
  29.         }

  30.         puts("stop servicing watch-dog, it will timeout and trigger NMI...\n");
  31. }
复制代码


我应该怎样修改让WatchDog超时后直接系统重启,而不是只打印一句话
作者: 希望缄默    时间: 2016-6-9 10:20
kazvvv 发表于 2016-6-8 13:42
有没有工程源码?
里面就是源码

作者: kazvvv    时间: 2016-6-12 09:10
希望缄默 发表于 2016-6-9 10:20
里面就是源码

下载解压之后只有一个wdtimer的文件,没有别的
作者: 希望缄默    时间: 2016-6-12 11:07
kazvvv 发表于 2016-6-12 09:10
下载解压之后只有一个wdtimer的文件,没有别的

[attach]846[/attach]
[attach]847[/attach]





欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4