Layered architecture firstly introduced to make the application independent of hardware , which mean that same code for a certain application can run on multiple targets "AVR, PIC, ARM etc....". In Layered architecture we have 3 main layers: MCAL: Microcontroller Abstraction Layer. here we have the firmware for all microcontroller peripherals like DIO, ADC, Timer, Interrupt etc.. HAL: Hardware Abstraction Layer. here we have the device driver for all hardware not inside the microcontroller itself like Keypad, LCD etc.. Application. here we write the code related to our application. Each layer can only communicate with the layer below, so if we change the target we only need to change the MCAL layer.
First step into your career