【转载】DSP看门狗定时器

简介:
1 工作方式      
         在数字信号处理器的工作过程中有时会发生一些异常情况,这可能是在软件执行时发生错误,如堆栈溢出、内存溢出等软件编写时没有预料到的错误,也可能是DSP在运行时受到外界干扰而使得程序运行不正常,在这些情况下将会发生不可预测的错误。为了防止出现这种情况,使用看门狗定时器是一种很好的解决方法。
        看门狗定时器实际上是一个定时器,该定时器需要处理器周期性的执行一些特定操作,当处理器运行正常时,这些操作会正常执行,而当出现异常时这些操作将被打断,看门狗定时器计数会计到0而发生超时,这时定时器将输出一个低脉冲,这个输出可以触发中断或引起DSP复位(可以触发不可屏蔽中断或看门狗定时器中断,如果看门狗定时器的输出连接到硬件复位端将引起DSP复位)。
         看门狗定时器有一个16位计数器和一个16位预计数器,使得计数器动态范围达到32位。复位状态后,看门狗定时器是关闭的,且允许软件在将其使能之前,对其进行配置。看门狗定时器正常工作后,当定时器计到0时,会触发看门狗定时器中断,并将WDFLAG位置1,之后计数器和预计数器将会被重新载入,而超时事件将会从看门狗定时器的输出端输出。看门狗定时器正常工作时会在计数状态、服务状态和超时状态之间转换,接着给出了看门狗定时器的状态转换过程。
        如果看门狗定时器被使能,不能通过软件直接禁止,但可以通过看门狗超时事件或硬件复位禁止看门狗定时器。当软件陷入死循环或发生软件错误时,看门狗定时器会产生超时事件,强迫DSP进行异常处理。
       看门狗的时钟是直接来自时钟产生器,因此即使处理器处于休眠状态中仍将继续计数。
2 寄存器
          看门狗定时器主要有4个寄存器——即看门狗计数寄存器(WDTIM)、看门狗周期寄存器(WDPRD)、看门狗控制寄存器(WDTCR)和看门狗控制寄存器2(WDTCR2)。
        看门狗计数寄存器和看门狗周期寄存器都是16位寄存器,它们协同工作完成计数功能。
        看门狗周期寄存器WDPRD存放计数的初始值,当计数寄存器的值减到0后,将把周期寄存器中的数载入到计数寄存器中。当控制寄存器中的PSC位减到0之前或看门狗计数器被复位时,计数寄存器将进行减1计数。
3 配置看门狗定时器
   初始化和使能看门狗定时器的步骤:
   1.将主计数器周期PRD装入看门狗周期寄存器WDPRD
   2.设置看门狗定时器控制寄存器WDTCR的模式bit(WDOUT,SOFT和FREE),以及TDDR里的预定标控制值
   3.往看门狗定时器的控制寄存器2(WDTCR2)中的WDKEY写入关键值5C6H,使看门狗定时器进入预激活状态
   4.写关键值A7EH到WDKEY中,置位WDEN,将预定标模式bit(PREMD)的值写到WDTCR2中。这第二个值完成了关键值序列,表示一个实际的服务序列,WDEN = 1使能看门狗定时器,
3 看门狗定时器的应用
应用看门狗定时器的芯片支持函数首先要包含csl_wdtim.h头文件,接下来定义看门狗定时器的配置结构:
WDTIM_Config MyConfig = {
0x0060, /* Counter */
0x1000, /* Period */
0x0000, /* Control */
0x1000 /* Secondary control */
};
配置看门狗定时器需要调用看门狗配置函数:
WDTIM_config(&MyConfig);
在配置好看门狗定时器后调用开始函数,该函数的作用是将看门狗定时器控制寄存器2的WDEN位置成1:
WDTIM_start();
在运行看门狗开始函数后,看门狗开始递减计数,在计数器减到0之前需要周期性地向WDKEY字段写入A5C5h和A7Eh,否则看门狗定时器将会发生超时事件从而触发中断或复位,该操作可以通过调用WDTIM_service()函数来完成。
WDTIM_service();
目录
相关文章
|
存储 运维 监控
“df -i” 以inode模式来显示磁盘使用情况--这是什么意思?
“df -i” 以inode模式来显示磁盘使用情况--这是什么意思?
561 0
|
前端开发 JavaScript Java
JavaScript的运行原理
JavaScript 的运行原理包括代码输入、解析、编译、执行、内存管理和与浏览器交互几个步骤。当打开网页时,浏览器加载 HTML、CSS 和 JavaScript 文件,并通过 JavaScript 引擎将其解析为抽象语法树(AST)。接着,引擎将 AST 编译成字节码或机器码,并在执行阶段利用事件循环机制处理异步操作,确保单线程的 JavaScript 能够高效运行。同时,JavaScript 引擎还负责内存管理和垃圾回收,以减少内存泄漏。通过与 DOM 的交互,JavaScript 实现了动态网页效果,提供了灵活且高效的开发体验。
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
290 0
WK
|
机器学习/深度学习 算法 决策智能
什么是粒子群算法
粒子群算法(PSO)是一种元启发式优化算法,通过模拟鸟群或鱼群行为进行优化搜索。1995年由Kennedy和Eberhart提出,基于鸟类群体行为建模。算法通过粒子在搜索空间中移动,不断更新位置和速度,逐步逼近最优解。其流程包括初始化、评估、更新最佳位置及速度,直至满足终止条件。该算法具有简单性、全局搜索能力和良好收敛性,并广泛应用于函数优化、神经网络训练等多个领域。为克服局部最优和收敛速度慢的问题,已有多种改进策略。
WK
499 0
|
Java 调度
线程池如何知道一个线程的任务已经执行完成
线程池如何知道一个线程的任务已经执行完成
786 0
|
安全 新能源
碳捕获与封存技术:减排的有效途径
【9月更文挑战第29天】全球气候变化日益严峻,碳捕获与封存技术(CCS)作为减排新兴技术,通过捕集、运输和封存三个环节,有效减少二氧化碳排放。本文详细探讨了CCS的技术原理、应用前景及挑战,指出其在减缓气候变化、促进低碳经济和多样化场景中的重要作用,并提出了技术成熟度提升、成本降低及安全性监管等方面的解决方案。
|
存储 监控 安全
云存储的安全性:保护你的数据的技术探索
【8月更文挑战第8天】云存储的安全性是保障用户数据安全的重要基础。通过数据加密、访问控制、多副本备份、网络安全和物理安全等多种技术手段,云存储服务提供商能够为用户提供安全可靠的存储服务。然而,用户也需要加强自身的安全意识和管理措施,共同维护云存储环境的安全稳定。
|
关系型数据库 MySQL Linux
MySQL安装『适用于 CentOS 7』
MySQL安装『适用于 CentOS 7』
498 1
|
存储 关系型数据库 MySQL
TiDB与MySQL、PostgreSQL等数据库的比较分析
【2月更文挑战第25天】本文将对TiDB、MySQL和PostgreSQL等数据库进行详细的比较分析,探讨它们各自的优势和劣势。TiDB作为一款分布式关系型数据库,在扩展性、并发性能等方面表现突出;MySQL以其易用性和成熟性受到广泛应用;PostgreSQL则在数据完整性、扩展性等方面具有优势。通过对比这些数据库的特点和适用场景,帮助企业更好地选择适合自己业务需求的数据库系统。
2191 4