使用了KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL ); 机器关掉了,重启一半卡死不动了!
看 了相关资料说要底层支持,但是没有找到OEMSWReset 函数,是不是需要内核增加组件?
这个函数应该在哪个路径下,芯片SBC8530.
看门狗 重启该怎么用呢?不知道creatfile 看门狗的文件名去哪里找?
请各位指教!
19 个解决方案
#1
OEMSWReset 在 BSP 里面找不到的话,你试试自己重载这个函数看看(我没试过,哈哈,不知道是否能成功!)~!!~!
看门狗重启是可以用的,你在驱动里面自己启动看门狗寄存器,
然后 while(1) 一直等待看门狗溢出即可~!
看门狗重启是可以用的,你在驱动里面自己启动看门狗寄存器,
然后 while(1) 一直等待看门狗溢出即可~!
#2
顶一下 我也不知道这个重启是怎么实现的。。
#3
这些函数,需要 OEM 厂家来实现。即 BSP 中需要增加功能,不是组件的问题。
因为 CE 电源管理部分是没有标准的。
因为 CE 电源管理部分是没有标准的。
#4
看门狗重启是可以用的,你在驱动里面自己启动看门狗寄存器,
然后 while(1) 一直等待看门狗溢出即可~!
驱动里面自己启动看门狗寄存器
这个在哪里启动?怎么启动?初拉乍到请多指教啊!
#5
驱动里面自己启动看门狗寄存器
这个在哪里启动?怎么启动?初拉乍到请多指教啊!
#6
得地层程序支持才行
#7
这个知道啊 但是需要怎么支持不知道啊 求教啊
#8
软重启的话,是需要看门狗支持的,因为这个是对CPU的软复位。
软重启在系统层已经拥有了接口,那么需要实现的是:如何在接收到reboot命令时对
CPU进行软复位和RAM等外围器件的复位操作。这部分都在底层实现
软重启在系统层已经拥有了接口,那么需要实现的是:如何在接收到reboot命令时对
CPU进行软复位和RAM等外围器件的复位操作。这部分都在底层实现
#9
比如在驱动或oal里面留一个接口,你调用接口就可以控制,机器重启
#10
http://blog.csdn.net/LoongEmbedded/article/details/5942326
BOOL OALIoCtlHalReboot(
UINT32 code,
VOID *pInpBuffer,
UINT32 inpSize,
VOID *pOutBuffer,
UINT32 outSize,
UINT32 *pOutSize
)
{
BOOL bPowerOn = FALSE;
UNREFERENCED_PARAMETER(inpSize);
UNREFERENCED_PARAMETER(pInpBuffer);
UNREFERENCED_PARAMETER(code);
UNREFERENCED_PARAMETER(pOutSize);
UNREFERENCED_PARAMETER(outSize);
UNREFERENCED_PARAMETER(pOutBuffer);
OALMSG(OAL_IOCTL&&OAL_FUNC, (L"+OALIoCtlHalReboot\r\n"));
// Perform a global SW reset
OALMSG(TRUE, (L"*** RESET ***\r\n"));
// Disable KITL
// #if (_WINCEOSVER<600)
// OALKitlPowerOff();
// #else
// KITLIoctl(IOCTL_KITL_POWER_CALL, &bPowerOn, sizeof(bPowerOn), NULL, 0, NULL);
// #endif
// Clear context registers//
// OUTREG32(&g_pContextRestore->BOOT_CONFIG_ADDR, 0);
// OUTREG32(&g_pContextRestore->PUBLIC_RESTORE_ADDR, 0);
// OUTREG32(&g_pContextRestore->SECURE_SRAM_RESTORE_ADDR, 0);
// OUTREG32(&g_pContextRestore->SDRC_MODULE_SEMAPHORE, 0);
// OUTREG32(&g_pContextRestore->PRCM_BLOCK_OFFSET, 0);
// OUTREG32(&g_pContextRestore->SDRC_BLOCK_OFFSET, 0);
// OUTREG32(&g_pContextRestore->OEM_CPU_INFO_DATA_PA, 0);
// OUTREG32(&g_pContextRestore->OEM_CPU_INFO_DATA_VA, 0);
// Flush the cache
// OEMCacheRangeFlush( NULL, 0, CACHE_SYNC_ALL );
// Do warm reset
// PrcmGlobalReset();
// Should never get to this point...
OALMSG(OAL_IOCTL&&OAL_FUNC, (L"-OALIoCtlHalReboot\r\n"));
OALCPUPowerReset();//我在这里增加了函数,可是编译不过???????
return TRUE;
}
BOOL OALIoCtlHalReboot(
UINT32 code,
VOID *pInpBuffer,
UINT32 inpSize,
VOID *pOutBuffer,
UINT32 outSize,
UINT32 *pOutSize
)
{
BOOL bPowerOn = FALSE;
UNREFERENCED_PARAMETER(inpSize);
UNREFERENCED_PARAMETER(pInpBuffer);
UNREFERENCED_PARAMETER(code);
UNREFERENCED_PARAMETER(pOutSize);
UNREFERENCED_PARAMETER(outSize);
UNREFERENCED_PARAMETER(pOutBuffer);
OALMSG(OAL_IOCTL&&OAL_FUNC, (L"+OALIoCtlHalReboot\r\n"));
// Perform a global SW reset
OALMSG(TRUE, (L"*** RESET ***\r\n"));
// Disable KITL
// #if (_WINCEOSVER<600)
// OALKitlPowerOff();
// #else
// KITLIoctl(IOCTL_KITL_POWER_CALL, &bPowerOn, sizeof(bPowerOn), NULL, 0, NULL);
// #endif
// Clear context registers//
// OUTREG32(&g_pContextRestore->BOOT_CONFIG_ADDR, 0);
// OUTREG32(&g_pContextRestore->PUBLIC_RESTORE_ADDR, 0);
// OUTREG32(&g_pContextRestore->SECURE_SRAM_RESTORE_ADDR, 0);
// OUTREG32(&g_pContextRestore->SDRC_MODULE_SEMAPHORE, 0);
// OUTREG32(&g_pContextRestore->PRCM_BLOCK_OFFSET, 0);
// OUTREG32(&g_pContextRestore->SDRC_BLOCK_OFFSET, 0);
// OUTREG32(&g_pContextRestore->OEM_CPU_INFO_DATA_PA, 0);
// OUTREG32(&g_pContextRestore->OEM_CPU_INFO_DATA_VA, 0);
// Flush the cache
// OEMCacheRangeFlush( NULL, 0, CACHE_SYNC_ALL );
// Do warm reset
// PrcmGlobalReset();
// Should never get to this point...
OALMSG(OAL_IOCTL&&OAL_FUNC, (L"-OALIoCtlHalReboot\r\n"));
OALCPUPowerReset();//我在这里增加了函数,可是编译不过???????
return TRUE;
}
#11
错误是 :warning treated as error - no 'object' file generated
#12
OALCPUPowerReset()函数需要你的BSP包实现的
#13
OALCPUPowerReset()函数需要你的BSP包实现的
首先非常感谢你能来帮助我,感激不尽
那么
OALCPUPowerReset()函数需要你的BSP包实现的
这个具体要怎么实现 比如要打包什么进去 还是要写个驱动之类的 我是新手 请多包涵了
#14
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
#15
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
没太懂
是在 reboot.C 头文件那里 写上这句话吗?
#16
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
大侠 汇编部分出现的未定义的错误 怎么定义 在哪定义啊 离成功越来越近啦现在
error A0051: unknown opcode: PhysicalStart
error A0051: unknown opcode: b1
error A0051: unknown opcode: b1
error A0051: unknown opcode: b1
error A0034: undefined symbol: SLEEPDATA_BASE_VIRTUAL
error A0034: undefined symbol: PhysicalStart
error A0034: undefined symbol: DCACHE_LINES_PER_SET
error A0034: undefined symbol: DCACHE_NUM_SETS
error A0034: undefined symbol: DCACHE_SET_INDEX_BIT
error A0034: undefined symbol: DCACHE_LINE_SIZE
#17
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
大侠 能否现身 继续帮忙一下呢 目前只有
error A0034: undefined symbol: SLEEPDATA_BASE_VIRTUAL
error A0034: undefined symbol: DCACHE_LINES_PER_SET
error A0034: undefined symbol: DCACHE_NUM_SETS
error A0034: undefined symbol: DCACHE_SET_INDEX_BIT
error A0034: undefined symbol: DCACHE_LINE_SIZE
这几个错误 我在整个WINCE600中都没有搜到定义, 是不是要自己定义呢 这几个变量都是什么含义 能说一下嘛
#18
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
大侠 能否现身 继续帮忙一下呢 目前只有
error A0034: undefined symbol: SLEEPDATA_BASE_VIRTUAL
error A0034: undefined symbol: DCACHE_LINES_PER_SET
error A0034: undefined symbol: DCACHE_NUM_SETS
error A0034: undefined symbol: DCACHE_SET_INDEX_BIT
error A0034: undefined symbol: DCACHE_LINE_SIZE
这几个错误 我在整个WINCE600中都没有搜到定义, 是不是要自己定义呢 这几个变量都是什么含义 能说一下嘛
我的QQ是597038165,你加我,我明天发给你
#19
非常感谢大家的帮助,特别感谢LoongEmbedded!!祝大家好人一生平安!!
#20
#1
OEMSWReset 在 BSP 里面找不到的话,你试试自己重载这个函数看看(我没试过,哈哈,不知道是否能成功!)~!!~!
看门狗重启是可以用的,你在驱动里面自己启动看门狗寄存器,
然后 while(1) 一直等待看门狗溢出即可~!
看门狗重启是可以用的,你在驱动里面自己启动看门狗寄存器,
然后 while(1) 一直等待看门狗溢出即可~!
#2
顶一下 我也不知道这个重启是怎么实现的。。
#3
这些函数,需要 OEM 厂家来实现。即 BSP 中需要增加功能,不是组件的问题。
因为 CE 电源管理部分是没有标准的。
因为 CE 电源管理部分是没有标准的。
#4
看门狗重启是可以用的,你在驱动里面自己启动看门狗寄存器,
然后 while(1) 一直等待看门狗溢出即可~!
驱动里面自己启动看门狗寄存器
这个在哪里启动?怎么启动?初拉乍到请多指教啊!
#5
OEMSWReset 在 BSP 里面找不到的话,你试试自己重载这个函数看看(我没试过,哈哈,不知道是否能成功!)~!!~!
看门狗重启是可以用的,你在驱动里面自己启动看门狗寄存器,
然后 while(1) 一直等待看门狗溢出即可~!
驱动里面自己启动看门狗寄存器
这个在哪里启动?怎么启动?初拉乍到请多指教啊!
#6
得地层程序支持才行
#7
得地层程序支持才行
这个知道啊 但是需要怎么支持不知道啊 求教啊
#8
软重启的话,是需要看门狗支持的,因为这个是对CPU的软复位。
软重启在系统层已经拥有了接口,那么需要实现的是:如何在接收到reboot命令时对
CPU进行软复位和RAM等外围器件的复位操作。这部分都在底层实现
软重启在系统层已经拥有了接口,那么需要实现的是:如何在接收到reboot命令时对
CPU进行软复位和RAM等外围器件的复位操作。这部分都在底层实现
#9
得地层程序支持才行
这个知道啊 但是需要怎么支持不知道啊 求教啊
比如在驱动或oal里面留一个接口,你调用接口就可以控制,机器重启
#10
http://blog.csdn.net/LoongEmbedded/article/details/5942326
BOOL OALIoCtlHalReboot(
UINT32 code,
VOID *pInpBuffer,
UINT32 inpSize,
VOID *pOutBuffer,
UINT32 outSize,
UINT32 *pOutSize
)
{
BOOL bPowerOn = FALSE;
UNREFERENCED_PARAMETER(inpSize);
UNREFERENCED_PARAMETER(pInpBuffer);
UNREFERENCED_PARAMETER(code);
UNREFERENCED_PARAMETER(pOutSize);
UNREFERENCED_PARAMETER(outSize);
UNREFERENCED_PARAMETER(pOutBuffer);
OALMSG(OAL_IOCTL&&OAL_FUNC, (L"+OALIoCtlHalReboot\r\n"));
// Perform a global SW reset
OALMSG(TRUE, (L"*** RESET ***\r\n"));
// Disable KITL
// #if (_WINCEOSVER<600)
// OALKitlPowerOff();
// #else
// KITLIoctl(IOCTL_KITL_POWER_CALL, &bPowerOn, sizeof(bPowerOn), NULL, 0, NULL);
// #endif
// Clear context registers//
// OUTREG32(&g_pContextRestore->BOOT_CONFIG_ADDR, 0);
// OUTREG32(&g_pContextRestore->PUBLIC_RESTORE_ADDR, 0);
// OUTREG32(&g_pContextRestore->SECURE_SRAM_RESTORE_ADDR, 0);
// OUTREG32(&g_pContextRestore->SDRC_MODULE_SEMAPHORE, 0);
// OUTREG32(&g_pContextRestore->PRCM_BLOCK_OFFSET, 0);
// OUTREG32(&g_pContextRestore->SDRC_BLOCK_OFFSET, 0);
// OUTREG32(&g_pContextRestore->OEM_CPU_INFO_DATA_PA, 0);
// OUTREG32(&g_pContextRestore->OEM_CPU_INFO_DATA_VA, 0);
// Flush the cache
// OEMCacheRangeFlush( NULL, 0, CACHE_SYNC_ALL );
// Do warm reset
// PrcmGlobalReset();
// Should never get to this point...
OALMSG(OAL_IOCTL&&OAL_FUNC, (L"-OALIoCtlHalReboot\r\n"));
OALCPUPowerReset();//我在这里增加了函数,可是编译不过???????
return TRUE;
}
BOOL OALIoCtlHalReboot(
UINT32 code,
VOID *pInpBuffer,
UINT32 inpSize,
VOID *pOutBuffer,
UINT32 outSize,
UINT32 *pOutSize
)
{
BOOL bPowerOn = FALSE;
UNREFERENCED_PARAMETER(inpSize);
UNREFERENCED_PARAMETER(pInpBuffer);
UNREFERENCED_PARAMETER(code);
UNREFERENCED_PARAMETER(pOutSize);
UNREFERENCED_PARAMETER(outSize);
UNREFERENCED_PARAMETER(pOutBuffer);
OALMSG(OAL_IOCTL&&OAL_FUNC, (L"+OALIoCtlHalReboot\r\n"));
// Perform a global SW reset
OALMSG(TRUE, (L"*** RESET ***\r\n"));
// Disable KITL
// #if (_WINCEOSVER<600)
// OALKitlPowerOff();
// #else
// KITLIoctl(IOCTL_KITL_POWER_CALL, &bPowerOn, sizeof(bPowerOn), NULL, 0, NULL);
// #endif
// Clear context registers//
// OUTREG32(&g_pContextRestore->BOOT_CONFIG_ADDR, 0);
// OUTREG32(&g_pContextRestore->PUBLIC_RESTORE_ADDR, 0);
// OUTREG32(&g_pContextRestore->SECURE_SRAM_RESTORE_ADDR, 0);
// OUTREG32(&g_pContextRestore->SDRC_MODULE_SEMAPHORE, 0);
// OUTREG32(&g_pContextRestore->PRCM_BLOCK_OFFSET, 0);
// OUTREG32(&g_pContextRestore->SDRC_BLOCK_OFFSET, 0);
// OUTREG32(&g_pContextRestore->OEM_CPU_INFO_DATA_PA, 0);
// OUTREG32(&g_pContextRestore->OEM_CPU_INFO_DATA_VA, 0);
// Flush the cache
// OEMCacheRangeFlush( NULL, 0, CACHE_SYNC_ALL );
// Do warm reset
// PrcmGlobalReset();
// Should never get to this point...
OALMSG(OAL_IOCTL&&OAL_FUNC, (L"-OALIoCtlHalReboot\r\n"));
OALCPUPowerReset();//我在这里增加了函数,可是编译不过???????
return TRUE;
}
#11
错误是 :warning treated as error - no 'object' file generated
#12
OALCPUPowerReset()函数需要你的BSP包实现的
#13
OALCPUPowerReset()函数需要你的BSP包实现的
首先非常感谢你能来帮助我,感激不尽
那么
OALCPUPowerReset()函数需要你的BSP包实现的
这个具体要怎么实现 比如要打包什么进去 还是要写个驱动之类的 我是新手 请多包涵了
#14
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
#15
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
没太懂
是在 reboot.C 头文件那里 写上这句话吗?
#16
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
大侠 汇编部分出现的未定义的错误 怎么定义 在哪定义啊 离成功越来越近啦现在
error A0051: unknown opcode: PhysicalStart
error A0051: unknown opcode: b1
error A0051: unknown opcode: b1
error A0051: unknown opcode: b1
error A0034: undefined symbol: SLEEPDATA_BASE_VIRTUAL
error A0034: undefined symbol: PhysicalStart
error A0034: undefined symbol: DCACHE_LINES_PER_SET
error A0034: undefined symbol: DCACHE_NUM_SETS
error A0034: undefined symbol: DCACHE_SET_INDEX_BIT
error A0034: undefined symbol: DCACHE_LINE_SIZE
#17
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
大侠 能否现身 继续帮忙一下呢 目前只有
error A0034: undefined symbol: SLEEPDATA_BASE_VIRTUAL
error A0034: undefined symbol: DCACHE_LINES_PER_SET
error A0034: undefined symbol: DCACHE_NUM_SETS
error A0034: undefined symbol: DCACHE_SET_INDEX_BIT
error A0034: undefined symbol: DCACHE_LINE_SIZE
这几个错误 我在整个WINCE600中都没有搜到定义, 是不是要自己定义呢 这几个变量都是什么含义 能说一下嘛
#18
实现OALIoCtlHalReboot的文件下面要包含extern void OALCPUPowerReset();
大侠 能否现身 继续帮忙一下呢 目前只有
error A0034: undefined symbol: SLEEPDATA_BASE_VIRTUAL
error A0034: undefined symbol: DCACHE_LINES_PER_SET
error A0034: undefined symbol: DCACHE_NUM_SETS
error A0034: undefined symbol: DCACHE_SET_INDEX_BIT
error A0034: undefined symbol: DCACHE_LINE_SIZE
这几个错误 我在整个WINCE600中都没有搜到定义, 是不是要自己定义呢 这几个变量都是什么含义 能说一下嘛
我的QQ是597038165,你加我,我明天发给你
#19
非常感谢大家的帮助,特别感谢LoongEmbedded!!祝大家好人一生平安!!