往往我们发现的HWT看门狗问题:都是CPU间共享资源互锁造成的(即R 状态死锁),所以后续当发现HWT问题时,不要只是关注具体直接导致HWT对应的那个CPU核的堆栈信息,我们必须要查看每一个CPU堆栈信息。---------------其实往往此种问题是由于其它cpu核访问资源异常时死在了锁里,而等待获取资源的cpu核(直接报问题的核)由于长时间不能等到锁被释放造成被看门狗复位。
死锁概念
死锁是指多个进程(线程)因为长久等待已被其他进程占有的的资源而陷入阻塞的一种状态。当等待的资源一直得不到释放,死锁会一直持续下去。死锁一旦发生,程序本身是解决不了的,只能依靠外部力量使得程序恢复运行,例如重启,开门狗复位等。
Linux 提供了检测死锁的机制,主要分为 D 状态死锁和 R 状态死锁。
D 状态死锁 进程等待 I/O 资源无法得到满足,长时间(系统默认配置 120 秒)处于 TASK_UNINTERRUPTIBLE 睡眠状态,这种状态下进程不响应异步信号(包括 kill -9)。如:进程与外设硬件的交互(如 read),通常使用这种状态来保证进程与设备的交互过程不被打断,否则设备可能处于不可控的状态。对于这种死锁的检测 Linux 提供的是 hung task 机制,MTK 也提供 hang detect 机制来检测 Android 系统 hang 机问题。触发该问题成因比较复杂多样,可能因为 synchronized_irq、mutex lock、内存不足等。D 状态死锁只是局部多进程间互锁,一般来说只是 hang 机、冻屏,机器某些功能没法使用,但不会导致没喂狗,而被狗咬死。
R 状态死锁 进程长时间(系统默认配置 60 秒)处于 TASK_RUNNING 状态垄断 CPU 而不发生切换,一般情况下是进程关抢占或关中断后长时候执行任务、死循环,此时往往会导致多 CPU 间互锁,整个系统无法正常调度,导致喂狗线程无法执行,无法喂狗而最终看门狗复位的重启。该问题多为原子操作,spinlock 等 CPU 间并发操作处理不当造成。本文所介绍的 Lockdep 死锁检测工具检测的死锁类型就是 R 状态死锁。
常见错误
AA: 重复上锁
ABBA: 曾经使用 AB 顺序上锁,又使用 BA 上锁
ABBCCA: 这种类型是 ABBA 的扩展。AB 顺序 , AB 顺序,CA 顺序。这种锁人工很难发现。
多次 unlock
下面举一个ABBA死锁类型的例子:
假设有两处代码(比如不同线程的两个函数 thread_P 和 thread_Q)都要获取两个锁(分别为 lockA 和 lockB),如果 thread_P 持有 lockA 后再去获取 lockB,而此时恰好由 thread_Q 持有 lockB 且它也正在尝试获取 lockA,那么此时就是处于死锁的状态,这是一个最简单的死锁例子,也即所谓的 AB-BA 死锁
thread_P()
{
......
spin_lock(&lockA);
spin_lock(&lockB);
spin_unlock(&lockA);
spin_unlock(&lockB);
......
}
thread_Q()
{
......
spin_lock(&lockB);
spin_lock(&lockA);
spin_unlock(&lockB);
spin_unlock(&lockA);
......
}
当线程Q使用B锁的时候其实是解不了锁的,因为线程P就没有把B锁释放掉。-------切记:一定要注意顺序。
关键字:看门狗 深度解析
引用地址:
看门狗深度解析
推荐阅读最新更新时间:2024-03-16 16:18
深度解析—IMEC对EUV工艺未来的思考
2019年,EUV光刻(EUVL)将达到一个重要的里程碑。经过多年的等待,先进光刻技术终于进入大批量生产。EUVL将率先用于7nm节点(IMEC N8或代工厂N7)逻辑后段(BEOL)的最关键金属层和通孔。与此同时,研究中心正在探索未来技术节点的选择,这些节点将逐步纳入更多的EUVL印刷结构。在本文的第一部分,imec的干法蚀刻研发工程师Stefan Decoster比较了在N3及更先进技术节点下,不同的多重图形化方案的优缺点。 与过去相比,研究人员现在已经将EUVL作为存储器关键结构的图形化工艺的一个选项,例如DRAM的柱体结构及STT-MRAM的MTJ。在本文的第二部分,IMEC的研发工程师Murat Pak提出了几种S
[半导体设计/制造]
基于复杂可编程逻辑器件技术的看门狗电路设计
随着现代电子技术的发展,带有各种微处理的现代电子设备已广泛应用于国民生产的各行各业中。但随着设备功能越来越强大,程序结构越来越复杂,指令代码越来越长,加之现场工作环境的干扰,设备失控,程序“走飞”,各功能模块“死机”的概率也同样成倍地增加。对此,常见的解决方法是在电路设计时放置一片硬件看门狗(Watchdog)电路,其目的是在系统“走死”后能强制系统复位并返回初始化程序。随着CPLD器件被广泛应用于各种仪器、仪表设备的设计中,而且CPLD几乎可模拟任何一种逻辑电路,所以,现在在设计时已完全没有必要再放置一片独立的看门狗器件,而完全可以将硬件看门狗电路整合于CPLD器件中,从而节省成本,降低系统的设计风险。下面具体介绍这种基于C
[单片机]
STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)
stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号) 。 看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。 具体的实现步骤:开启看门狗,设置减计数的初始值,当计数值达到超时值时,产生MCU复位,此时本来运行的程序终止重新启动单片机(发生了故障)。在使用了看门狗
[单片机]
STM8 配置看门狗的坑
首先祭出正确的打开方式。。 void IWDG_Init(void) //配置并启动看门狗 { IWDG- KR = 0xcc;//启动独立看门狗 IWDG- KR = 0x55;//写入解锁 IWDG- PR = 0x06;//256分频 IWDG- RLR = 0xff;//设置重载寄存器 IWDG- KR = 0xaa;//锁定并刷新 } void IWDG_Feed(void)//喂狗 { IWDG- KR = 0xaa; }
[单片机]
深度解析:新能源充电桩平台如何与代理商、物业公司分账?
为解决新能源汽车/电动自行车充电问题,近年来国家将充电基础设施纳入“新基建”,全国主要省份和直辖市等推出了充电桩建设和运营补贴政策,有效促进了充电基础设施的发展。至此,新能源充电桩市场也呈现出一片欣欣向荣的景象。
众所周直,新能源充电桩产业链上游为相关部件以及设备的重要制造环节,在中游则是充电运营环节。充电桩下游撮合了代理商、物业公司以及相关参与者,在经营的过程中通常都会面临充电平台收款分账的问题。尤其是在新能源汽车/电动自行车市场不断扩大的大背景下,如何才能提高收款结算效率、实现各合作参与者的分成;优化平台方自身税务成本,降低税务压力,切实保障资金安全,已成为众多充电桩平台运营者关注的重点。
本文
[新能源]
03-S3C2440学习之自己写bootloader
最简单bootloader包含以下几个内容 第一阶段: (1)关看门狗 (2)设置时钟 (3)初始化SDRAM (4)重定位:bootloader可能大于4K, 把flash中的bootloader拷贝到SDRAM中。 (5)跳转到main 第二阶段: (6)初始化串口,内核启动打印参数 (7)设置启动参数,供内核启动时解析使用 (8)跳转启动内核 一.编写第1阶段 1、 bootloader目标:启动内核。 那么bootloader应该具备: (1)从flash把内核读入内存 能操作flash、初始化内存、初始化时钟及其他资源 (2)启动内核 设置参数(bootloader与内核约定好地址,存放一些内核启动的参数,供内核启动
[单片机]
单片机微处理器看门狗监控电路
在微处理器的工作过程中,如遇到来自电源或外界的干扰,有可能使读出的指令或程序指针地址发生错误,在这种情形下,将使微处理器错误地执行指令,或者到错误的地址去取指令,以至发生混乱,使整个系统无法正常地工作。微处理器监控电路实际上是一个复位电路,其作用是及时地发现上述情况,并向微处理器发出复位信号,以控制系统重新工作。常用的监控电路具有两个功能,一个功能是对电源电压的监控,通过对电源电压波动范围的设置,此电路通过电压比较器监视电源电压,一旦电源电压低于设定值,比较器的输出控制产生复位电路,使系统重新工作。监控电路的另一个功能是对执行程序的监视,此电路的框图如图1所示,它由一个计数器和复位电路构成,当计数器计数溢出时,将控制复位电路产生
[单片机]
高压看门狗定时器提高车载系统安全性
汽车设计中,越来越多的电子系统正在逐步替代机械功能——从引擎定时控制到刹车、方向盘控制,而电子系统相对容易发生故障,这就需要谨慎考虑系统的安全性,确保系统具备较高的故障容限。不应该在发生单点故障时将司机或乘客至于危险处境,至少能够使汽车“跛行”到大路以外或最近的维修站。当电子设备发生故障时,为确保汽车的安全行驶需要利用监控电路开启备份电路,安全地接管系统操作。 在纯机械系统的汽车时代,引擎依照机械方式产生的信号点燃空气燃料混合器。机械分配器则选择适当的火花塞,沿线传递信号。刹车系统则将作用在踏板上的压力通过刹车轴、刹车总泵、液压管传送到制动钳。离合器和油门只是简单地受控于连接在踏板上的一条钢缆。方向盘通过一个金属舵轮、
[汽车电子]