Types of resets in embedded systems

A reset as the name suggests, sets back everything in an embedded system to an initial state. All the modules are initialised again and the devices starts from beginning.

Types of Reset:


Hardware Reset and Software Reset:

1.) Hardware Reset:

Most of the micro controllers or microprocessors in use in embedded systems have a reset line, which upon setting high or low(depending upon specs) will reset the device. This usually clears all the CPU registers and sets Program Counter to an initial address which starts the program from beginning. 

i.) Power On Reset: This occurs when the device is powered up. The clocks are initialised, memory gets filled up with all the required variable, Program Counter is set to an initial address and the system is started.

ii.) Voltage Drop: All the devices inside an embedded system have a specified voltage range. If the voltage drops below that specified threshold, the system gets reset. This can happen if a device in the system is consuming lots of power, which drops the voltage level down. For example, the GSM modules can consume currents in the Ampere range and can drop down the whole system voltage level if proper power supply is not present.

2.) Software Reset:

A software reset is a condition which when met, does the same thing as the hardware reset does. It clears all the CPU registers and initialise the Program Counter with a starting address.

i.) WatchDog Timer Reset: This is most widely used software reset and is available in most of the embedded systems. A Watchdog Timer resets the whole system after a fixed time interval. The application running has to keep resetting this timer. If the timer isn't reset, this usually means the device is stuck and a reset occurs.

ii.) Reset Instruction: Some micro controllers or microprocessors provide a Reset Instruction, which when used, behave the same as a hardware reset and reinitialise everything. 
For example, on an ARM Cortex-M device, a system reset can be triggered using the SYSRESETREQ bit in the Application Interrupt and Reset Control Register (AIRCR), or by using the C function NVIC_SystemReset(void).

Comments