第一部分
硬件复位:顾名思义通过硬件给系统一个复位,比如在电路板上设计一复位电路,通 过按下按键就可以给系统实现一个复位,而无论系统在执行什么样的程序
复位启动以后需要重新加载加载FPGA、DSP等,也有可能在这个操作之前初始化化CPU,加载系统文件等操作,具体视需要而定,然后初始化一些配置芯片。
硬件复位的作用区域一般是全局的。
软件复位:是通过软件给系统一个复位信号,如低电平或许是高电平(具体看系统设置)来实现复位操作
复位启动不需要进行FPGA、DSP等的加载,只是一些配置芯片的初始化
软件复位一般是一些块结构。
上电复位:系统在上电的瞬间就执行复位操作, 上电复位里面包括硬件复位和软复位的操作,硬件复位和软复位是从上电复位里面的某点开始的启动操作
复位需要初始化CPU系统,包括CPU和内存等,并加载系统,加载初始化操作系统以及FPGA、配置芯片的初始化,是一个完成的过程。
第二部分
软件复位方法:
1)用看门狗的复位方法;
(watchingtimer看门狗防止程序发生死循环,或者说程序跑飞), 但不是所有的单片机都有看门狗的功能。
2)自己程序控制的复位方法(本文方法,叫软件复位)。
1)首先声明一个函数指针,指向复位后要开始执行指令的位置: void (*app_start)(void) = 0x0000;
可以根据具体微处理器复位后的位置,修改后边的地址。
2)之后,在自己的程序中想复位的地方调用app_start(); 也就是跳到0x0000位置执行指令。
3)可以根据不同微处理器复位的地址,修改上边的地址(0x0000)。实现上你可以跳到任何位置执行,或调用函数执行。
硬件和软件复位流程图
第三部分
复位电路设计:
复位电路有的CPU内置, 有的需要外接。 外接的情况下, 低成本的是 RC 复位电路, 不计成本的是专用的复位芯片, 可以将所有电路上需要统一时序的IC的复位都接在一起,这样不会导致上电时序的滞后问题, 很多软件都会出现这种现象而出现BUG。