❶ AVR单片机中看门狗(WDT)都有哪些作用
其实看门狗就是一个定时器,单片机里面有关于看门狗的设置。
其实看门狗就是一个防止程序跑飞的工具。
如果你设置了看门狗,在你程序开始跑,他就开始计时,如果一段时间内,你没有去清理标志位(看门狗设置了标志位),那就会自动系统复位。所以一般人叫清理标志位形象的为喂狗。
所以一般编程中还有一个概念就是“禁止看门狗”,就是说不要看门狗的功能了,就禁止掉
c51中看门狗的设置时在寄存器PCA0MD中
❷ 关于单片机内部看门狗的问题
单片机内部看门狗的使用,就是对看门狗寄存器初始化,即启动看门狗,在主循环程序中不停的刷新看门狗,俗称喂狗。一般都有一个看门狗专用寄存器,因不同单片机,寄存器不同,启动方法和刷新也稍有不同。查看一下技术手册,都有说明,也有例程。
❸ 单片机加密狗是什么技术
加密狗 加密狗是由彩虹天地公司首创,后来发展成如今的一个软件保护的通俗行业名词,"加密狗"是一种插在计算机并行口上的软硬件结合的加密产品(新型加密狗也有usb口的)。一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的狗内部还包含了单片机。软件开发者可以通过接口函数和软件狗进行数据交换(即对软件狗进行读写),来检查软件狗是否插在接口上;或者直接用软件狗附带的工具加密自己EXE文件(俗称"包壳")。这样,软件开发者可以在软件中设置多处软件锁,利用软件狗做为钥匙来打开这些锁;如果没插软件狗或软件狗不对应,软件将不能正常执行。
加密狗通过在软件执行过程中和加密狗交换数据来实现加密的.加密狗内置单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗.加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数,如DogConvert(1)=17345、DogConvert(A)=43565。
加密狗是为软件开发商提供的一种智能型的软件保护工具,它包含一个安装在计算机并行口或 USB 口上的硬件,及一套适用于各种语言的接口软件和工具软件。加密狗基于硬件保护技术,其目的是通过对软件与数据的保护防止知识产权被非法使用。
加密狗的工作原理:
加密狗通过在软件执行过程中和加密狗交换数据来实现加密的.加密狗内置单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗.加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数,如DogConvert(1)=17345、DogConvert(A)=43565。下面,我们举个例子说明单片机算法的使用。 比如一段程序中有这样一句:A=Fx(3)。程序要根据常量3来得到变量A的值。于是,我们就可以把原程序这样改写:A=Fx(DogConvert(1)-12342)。那么原程序中就不会出现常量3,而取之以DogConvert(1)-12342。这样,只有软件编写者才知道实际调用的常量是3。而如果没有加密狗,DogConvert函数就不能返回正确结果,结果算式A=Fx(DogConvert(1)-12342)结果也肯定不会正确。这种使盗版用户得不到软件使用价值的加密方式,要比一发现非法使用就警告、中止的加密方式更温和、更隐蔽、更令解密者难以琢磨。此外,加密狗还有读写函数可以用作对加密狗内部的存储器的读写。于是我们可以把上算式中的12342也写到狗的存储器中去,令A的值完全取决于DogConvert()和DogRead()函数的结果,令解密难上加难。不过,一般说来,加密狗单片机的算法难度要低于一些公开的加密算法,如DES等,因为解密者在触及加密狗的算法之前要面对许多难关
[编辑本段]目前最新的硬件加密原理
随着解密技术的发展,单片机加密狗由于其算法简单,存储空间小,容易被硬复制等原因,正逐渐被市场所淘汰。以北京彩虹天地信息技术股份有限公司为首的国内加密狗厂商研发出稳定性更好、存储空间更大(最大为64K)、有效防止硬克隆的第四代加密狗——“智能卡”加密狗以其独创的“代码移植”原理,已经被国内大型商业软件开发商如金蝶、用友、CAXA、广联达、神机妙算、鲁班……所采用。
以世界上第一款智能卡加密锁——宏狗为例,简单介绍一下“代码移植”原理。
“代码移植”加密原理为一种全新的、可信的软件保护模型,工作原理为:软件中部分代码经过编译,“移植”到加密锁硬件内部,软件中没有该段代码的副本。
在这套软件保护方案中,PC端应用软件的关键的代码和数据“消失”了,被安全地移植到精锐IV型加密锁的硬件中保护起来。在需要使用时,应用软件可以通过功能调用引擎来指令精锐IV运行硬件中的关键代码和数据并返回结果,从而依然可以完成整个软件全部的功能。由于这些代码和数据在PC端没有副本存在,因此解密者无从猜测算法或窃取数据,从而极大程度上保证了整个软件系统的安全性。简言之,精锐IV提供了一套可信的解决方案,从理论上保证软件加密的安全。
加密狗技术的运用案例
1、广联达造价软件
2、清华斯维尔造价软件
3、神机妙算造价软件
4、鲁班造价软件
使用加密狗进行加密的一些策略
现在的解密技术排除法律和道德因素,就从学术角度来说是门科学。它与加密技术一样是相辅相成不断提高。
以下就针对使用加密狗(加密锁)进行硬件保护谈谈几点心得:
针对于使用加密狗的解密有什么方法?
1、硬件复制
复制硬件,即解密者复制Sentinel Superpro相同的加密锁。由于加密锁采用了彩虹公司专用的ASIC芯片技术,因此复制该加密锁非常困难,且代价太大。
2、监听
解密者利用并口监听程序,进行解密,其工作机制是:
监听程序,记录应用程序对并口发的查询串和加密锁发回的响应串。当移去加密锁时,如果程序再对并口发查询串确认身份时,监听程序返回所记录的响应串。程序认为加密锁仍然在并口上,是合法用户继续运行,应用程序也就被解密了。
3、 打印机共享器
将加密锁插在打印机共享器上,多台计算机共同使用打印机共享器上的一把加密锁。(后面简述对抗策略)
4、 DEBUG
解密者DEBUG等反编译程序,修改程序源代码或跳过查询比较。应用程序也就被解密了。
对于以上的几种解密方法加密者可以考虑使用以下几种加密策略:
1、针对上述监听和DEBUG问题解密方法,本人推荐充分利用加密狗开发商的API函数调用的加密策略:
a、 针对并口监听程序
1)对加密锁进行算法查询
Ø 正确的查询响应验证
用户生成大量查询响应对,如200对。在程序运行过程中对激活的加密算法单元随机的发送在200对之中的一对“345AB56E”―――“63749128”。查询串“345AB56E”,哪么算法单元返回的下确的响应串应该是“63749128”,若是,则程序认为加密锁在并口上,是合法用户,继续运行,反之终止程序。
Ø 随机非激活算法验证
我们对非激活的加密锁算法单元发随机生成的查询串,如:“7AB2341”,非激活算法单元只要是有查询就会有响应串。因此返回响应串“7AB2341”,在程序中判断响应串与查询串是否相同,如果相同,则证明我们的加密锁仍然在口上。继续运行程序。
Ø 随机激活算法验证
假设监听程序了解了上面的机制。即对非激活的加密算法我们发什么查询串则返回相同的响应串。哪么我也有对策。对激活的加密算法单元发随机生成的查询串,如:“345AB56E”由于是激活算法响应串肯定与查询串肯定不等。所以假如返回响应串“7253ABCD”,在程序中判断响应串与查询串是否不同,如果不同,则证明我们的加密锁仍然在并口上,继续运行程序。
上面三种加密策略在程序同时使用,相符相承,相互补充。即使监听程序记录下来我们的部分查询响应。
2) 分时查询
用户把查询响应对分组,如120对分为4组。每30对一组。头三个月使用第一组,第二个月三个月使用第二组以此类推,监听程序就算记录了头三个月。第二个月三个月以后程序仍然无法使用。
也可以再生成100对“临时委员”,每次运行随意抽出1对与以上分组结合使用。使记录程序在三个月内也无法记录完全。程序也无法使用。
3) 随机读写存储单元
为了防监听程序。我们的策略是:程序在启动时,我们利用随机函数随机生成的一个数,假设是“98768964”。我们在指定的18#单元写入这个数。哪么我们在程序运行中,每调用一个功能程序前读取18#单元,数判定是否是我们写入的数“98768964”。因为每次写入的数是随机生成的,所以监听程序记录不到当次启动时写入的随机数,它返回的数肯定是一个不匹配的数。我们就可以就此判定是否是合法用户。Sentinel Superpro加密锁可以重复写10万次以上。也就是说每天写三次也可以使用一百年。
2、 针对打印共享器的加密策略
为了防打印共享器。我们的策略是:程序在启动时,我们利用随机函数随要生成的一个数,假设是“7762523A”。我们在指定的34#单元写入这个数。哪么在程序运行中,每调用一个功能程序前读取34#单元,以判定是否是我们写入的数“7762523A”。以此判定是否是合法用户。因为每次写入的数随机生成的,同时使用打印共享器的其他非法用户的程序一进入也会写入一个不同的随机数。那么第一个用户的程序在校验是否是第一个用户写入的数时,就会被认为是非法的用户。所以在一个阶段也只是一个程序使用。(例如RAINBOW公司开的Sentinel Superpro加密锁可以重复10万次以上。也就是说每天写三次也就可以使用一百年。)
3、 针对DEBUG跟踪的加密锁的安全策略
1)分散法
针对DEBUG跟踪。在调用每个重要功能模块前,我们建议要对加密锁进行查询,校验身份。如果只在程序开始部分校验身份,DEBUG跟踪程序部分可以轻易的跳过校验部分,而一些不良用户可以在验证后可以将加密锁拔下用在其它计算机。
2)延时法
针对某一具体查询校验,都有三步骤:
Ø 查询得到响应串
Ø 比较响应串和查询串是否匹配
Ø 执行相应的步骤
我们建议以上三个步骤要延时执行。最好鼗三步骤相互远离些,甚至放到不同的子程序或函数中。例如:我们执行“查询得到响应串” 后,相隔50执行“比较响应串和查询串是否匹配”。假如程序需要调用一个函数。哪么我们就在这个函数里执行“执行相应的步骤”。这样程序更难于被破解。
3)整体法
将响应串作为程序中数据使用。
例如:我们有返回值“87611123”,而我们程序需要“123”这个数。我们可以让“87611123”减去“8761000”得到“123”。这样以来任何对加密程序的修改都会使程序紊乱。
4)迷惑法
一般情况下我们的程序执行相应的验证步骤。验证是非法用户就会退出。这样很容易被发现代码特征。我们知道是非法用户后继续执行一些无用的操作使程序紊乱。以迷惑解密者。
以上为现如今软件开发商使用硬件加密狗(加密锁)进行软件保护时可以使用的几种切实可行的几种加密策略。
❹ 为什么PIC单片机的看门狗都必须关闭啊看门狗是个什么东西啊
如果不关闭的话,你编程的时候就要编写“喂狗”程序,才能使程序正常运行,看门狗就是单片机做的一个能够保证保证程序出现死循环的时候,经过一段时间没有“喂狗”程序运行的时候,单片机自动重新执行程序的功能。
❺ 单片机中的看门狗是什么东西,有什么作用
看门狗(WDT)是一个定时器。看门狗是用来防止万一单片机程序出错造成重大损失的。防错的原理很简单,它在硬件上就是一个定时器,当它溢出的时候就会让单片机强制复位使程序重新开始执行。
正常的情况下是不能让它溢出的,所以在程序上每隔一段时间要给他置一次值(俗称喂狗),只要程序中正常给它喂他就不会溢出。
一旦程序跑飞了,有干扰或者进入死循环之类的情况时,不能正常执行程序了,那么就永远执行不到喂狗的指令了,但此时定时器是硬件控制的,仍然会走,所以溢出了,单片机就复位了。
一般安全性要求比较高的,系统跑飞了会造成重大事故的都会加一个“狗”保安全。
通常,看门狗的溢出时间越短越灵敏,跑飞之后复位的时间越短,也就越安全,但是,喂狗的操作也要更频繁。
(5)单片机里的狗扩展阅读:
看门狗工作原理:
使用时,WDT将递增直到溢出或“超时”。 除非处于休眠或空闲模式,否则WDT超时将强制器件复位。 为避免WDT超时复位,用户必须使用PWRSAV或CLRWDT指令定期清除看门狗定时器。 如果WDT在休眠或空闲模式下超时。
器件将唤醒并从执行PWRSAV指令的位置继续执行代码。 在以上两种情况下,WDTO位(RCON <4>)将被置1,表明器件复位或唤醒事件是由WDT超时引起的。
如果WDT将CPU从睡眠或空闲模式唤醒,则还将置位“睡眠”状态位(RCON <3>)或“空闲”状态位(RCON <2>),表明该设备先前已上电。 保存模式。
在正常操作期间,WDT超时将产生设备复位。 当设备处于睡眠状态时,WDT超时将唤醒设备以继续正常操作(称为WDT唤醒)。 清零WDTE设置位可以永久关闭WDT。 后分频器分配完全由软件控制,也就是说,可以在程序执行期间随时更改它。
为避免不可预测的器件复位,当从Timer0预分频器分配更改为WDT后分频器分配时,必须执行以下指令序列。 即使禁止了WDT,也必须执行该指令序列。
❻ 51单片机里面是不是没有看门狗
单片机程序中每隔一段时间就向狗喂食,如果超过一定时间狗没有吃到,就表示死机了,狗就出发单片机复位。
❼ 单片机 看门狗电路中,喂狗信号是什么求比较详细通俗的解释,谢谢了!
看门狗(WDT)有内置的也有外置的,其实就是个定时器。
看门狗的作用是:当程序在某种意外情况下跑飞了,这时就没办法去”喂狗“,一旦持续某个门槛时间(比如20ms)还没有”喂狗“,那么看门狗就把单片机复位。
喂狗信号就是在上面说的20ms之内,去清WDT定时器。
❽ avr单片机中看门狗(WDT)都有哪些做用
WDT其实就是一个
定时器
,只是这个定时器的
中断向量
是指到复位地址,产生中断后
芯片
就复位了,但也有些
单片机
看门狗
溢出后有专门的中断向量。既然它的中断向量指向复位地址,那么芯片要正常运行,我们肯定要避免它溢出,即
喂狗
。有些单片机的WDT定时器可以读,所以有人拿WDT来做定时器用的。
单片机一般要有个死循环,不断地执行各个
子程序
,如果把清WDT定时器(喂狗)的指令放到这个死循环里,那么就会循环一次清(喂狗)一次,WDT不会溢出。但是当
程序
出错,跑飞时,不会再这样循环,喂狗指令不会再被执行,那么WDT必然会溢出,芯片复位,即相当于重新上电运行。
清狗指令不能放定时器中断里,因此不管程序飞跑到
哪里
,执行哪里,中断产生后都会执行中断
函数
,所以在定时器里的清狗指令会使WDT起不到作用(失效)。
❾ 单片机的看门狗怎么用
首先,你要知道什么是看门狗?在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。其次,看门狗的工作原理是什么?在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗(俗称喂狗)。下面这段程序是我成功调试过了的,看门狗寄存器的各位的具体的意义,你可以自己去看下单片机的PDF文档,里面有详细的介绍.#include52系列单片机头文件#defineucharunsignedchar#defineuintunsignedintsfrWDT_CONTR=0xe1;/*看门狗寄存器声明*/sbitled1=P1^0;/*接发光二极管*/voiddelayms(uintxms)/*延时函数*/{uinti,j;for(i=xms;i>0;i--)/*i=xms即延时约xms毫秒*/for(j=110;j>0;j--);}voidmain(){WDT_CONTR=0x35;led1=0;delayms(500);led1=1;while(1){delayms(1000);//WDT_CONTR=0x35;/*喂狗,如果这句话不加的话单片机就会一直复位,看到的现象是发光二极管闪烁,加上这句的话,发光二极管一直亮着,所以在实际工程应用的时候通常要在程序里面调用比较频繁的函数内部写上这句话*/}}/*******************************************************************喂狗的技巧:如果一个大循环少于看门狗益处时间,放在while(1)哪个地方都可以啊,如果大于,看下哪个地方停顿时间长就放哪*********************************************************************/
❿ 请教一个关于单片机看门狗的问题
是的,刚开始需要初始化,配置分频系数和触发功能等等。
之后在主循环的适当位置放置喂狗的语句。某些易超时的任务/进程中也需要适当放置喂狗语句。原则上禁止在中断里放置喂狗语句。
当程序真的在某些地方死循环的时候,狗狂吠,单片机产生复位。
在某些特殊应用场合,还可以在startup中添加复位源的判断,对于看门狗产生的复位进行一些额外的操作(例如在后台向远端设备通讯报警,或者在Data Flash部分写入error log等等)。