WINCE6.0+S3C6410 watchdog重新启动
发布日期:2021-06-30 21:55:02
浏览次数:2
分类:技术文章
本文共 1659 字,大约阅读时间需要 5 分钟。
// File: watchdog_sw_rst.c
//// Samsung SMDK6410 SW_RST using watchdog timer support code.//#include <windows.h>#include <ceddk.h>#include <oal.h>#include <s3c6410.h>// WTCON - control register, bit specifications#define WTCON_PRESCALE(x) (((x)&0xff)<<8) // bit 15:8, prescale value, 0 <= (x) <= 27#define WTCON_ENABLE (1<<5) // bit 5, enable watchdog timer#define WTCON_CLK_DIV16 (0<<3)#define WTCON_CLK_DIV32 (1<<3)#define WTCON_CLK_DIV64 (2<<3)#define WTCON_CLK_DIV128 (3<<3)#define WTCON_INT_ENABLE (1<<2)#define WTCON_RESET (1<<0)// WTCNT - watchdog counter register#define WTCNT_CNT(x) ((x)&0xffff)// WTDAT - watchdog reload value register#define WTDAT_CNT(x) ((x)&0xffff)// WTCLRINT - watchdog interrupt clear register#define WTCLRINT_CLEAR (1<<0)// Watchdog Clock// PCLK : 66MHz// PCLK/PRESCALER : 66/66 = 1MHz// PCLK/PRESCALER/DIVIDER : 1MHz/128 = 7.812 KHz// MAX Counter = 0xffff = 65535// Period = 65535/7812 =~ 8.4 sec#define WD_PRESCALER (66-1)//------------------------------------------------------------------------------//// Function: _OEMSWReset//// This is the function to reset S3C6410 using watchdog timer.//void _OEMSWReset(void){ volatile S3C6410_WATCHDOG_REG *pWTDogReg = NULL; // VA for Watchdog base pWTDogReg = (S3C6410_WATCHDOG_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_WATCHDOG, FALSE); if (!pWTDogReg) { OALMSG (OAL_ERROR, (L"Address of Watch Dog Base Not Defined, WatchDog not enabled!/r/n")); } else { pWTDogReg->WTCON = WTCON_PRESCALE(WD_PRESCALER) | WTCON_CLK_DIV128 | WTCON_RESET; pWTDogReg->WTDAT = WTDAT_CNT(0x1); pWTDogReg->WTCNT = WTCNT_CNT(0x1); pWTDogReg->WTCON |= WTCON_ENABLE; }}相关帖子:转载地址:https://loongembedded.blog.csdn.net/article/details/5950996 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年05月05日 20时53分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python 开发者都会遇到的错误:UnboundLocalError
2019-05-01
用 Python 送“爱心”
2019-05-01
理解HTTPS为什么安全前,先看看这些东西
2019-05-01
最通俗易懂地解释:正向代理与反向代理
2019-05-01
代码这样写不止于优雅(Python版)
2019-05-01
一份来自掘金社区的开发者报告
2019-05-01
Python是怎么火起来的
2019-05-01
一本书搞定Python入门到实践
2019-05-01
20-40k+期权,蚂蚁金服招 Python 开发工程师
2019-05-01
2017半年文章合集(建议收藏)
2019-05-01
简析 __init__、__new__、__call__ 方法
2019-05-01
程序员如何优雅地写公众号
2019-05-01
@classmethod与@staticmethod的区别
2019-05-01
只有1%的程序员搞懂过浮点数陷阱
2019-05-01
衡量代码质量的唯一有效标准:WTF/min
2019-05-01
一个网络请求的历险之旅
2019-05-01
Google 为什么把几十亿行代码放在一个库
2019-05-01
Erlang 之父 Joe Armstrong 去世
2019-05-01
来不及了,世界读书日,送10本书
2019-05-01
速来,上期中奖名单
2019-05-01