TI专家:
您好,dm365的板子,rdk是inpc 5.1版本,在串口输入reboot,有三分之一的板子重启设备,需要断电才能重启,,请帮忙分析,谢谢,如下:
root@192:~#root@192:~#root@192:~#root@192:~# reboot
WARNING: could not determine runlevel – doing soft reboot
(it's better to use shutdown instead of reboot from the command line)
INIT: Sending processes the TERM signal
Terminated
root@192:~#
INIT: Sending processes the KILL signal
Stopping telnet daemon.
Stopping syslogd/klogd: stopped syslogd (pid 810)
stopped klogd (pid 812)
done
Deconfiguring network interfaces… ifdown: interface lo not configured
ifdown: interface eth0 not configured
done.
Sending all processes the TERM signal…
ERR:57,:main.cpp signal_capture!ERR:sigterm:74 caught SIGTERM: shutting down
ApproDrvExit: 2
Sending all processes the KILL signal…
Unmounting remote filesystems…
Deactivating swap…
Unmounting local filesystems…
mount: can't find /mnt/ram in /proc/mounts
[ 19.349871] UBIFS: un-mount UBI device 2, volume 0
[ 19.397285] UBIFS: un-mount UBI device 1, volume 0
umount2: Device or resource busy
umount: devtmpfs busy – remounted read-only
Rebooting… [ 21.570132] device eth0 left promiscuous mode
[ 21.575740] davinci_musb_disable 152: dma still active
[ 21.582192] Restarting system.
Eason Wang:
Hi,
这些reboot指令不生效的板子,是一直不行,还是概率性不行?
heng:
回复 Eason Wang:
是概率性不行,但是概率很高,99%
Chris Meng:
回复 heng:
你好,
我建议你在reboot命令里面加上触发看门狗复位。
heng:
回复 Chris Meng:
测试过看门狗复位,所有板子不起作用
void AVSERVER_WDT_RESET(void){ unsigned int pRegAddr; volatile unsigned int *pReg;
#define UBL_WDT_RESET
//DRV_vpssExit();
OSA_printf("\nWDT_RESET: Restart System Started!!\n");
pRegAddr = DM365MM_mmap(0x01C20000, 0x2000); OSA_waitMsecs(100);
#ifdef UBL_WDT_RESET OSA_printf("\nWDT_RESET: UBL_WDT_RESET!\n");
pReg = (unsigned int *)(pRegAddr+0x1C08); // WDT *pReg = 0x00020000; pReg = (unsigned int *)(pRegAddr+0x1C0C); // execute > *pReg = 0x00020002;
#else
pReg = (unsigned int *)(pRegAddr+0x1C24); // TGCR *pReg |= 0x0B;
pReg = (unsigned int *)(pRegAddr+0x1C10); // TIM12 *pReg = 0x01; pReg = (unsigned int *)(pRegAddr+0x1C14); // TIM34 *pReg = 0x00;
pReg = (unsigned int *)(pRegAddr+0x1C18); // PRD12 *pReg = 0x0FFFFFFF; pReg = (unsigned int *)(pRegAddr+0x1C1C); // PRD34 *pReg = 0x0;
pReg = (unsigned int *)(pRegAddr+0x1C28); // WDTCR
*pReg = 0xA5C64000; OSA_waitMsecs(10); *pReg = 0xDA7E4000; OSA_waitMsecs(10); *pReg = 0xA5C64000;
#endif
DM365MM_ummap(pRegAddr, 0x2000);
OSA_printf("\nWDT_RESET: Restart System Completed!!\n");}
Chris Meng:
回复 heng:
你好,
你能否参考2.6.18kernel里面的看门狗驱动(见附件),改写一下该函数,看是否有改善?