Low Power Firmware Design in Embedded Systems
Mishin, Konstantin (2018)
Mishin, Konstantin
Metropolia Ammattikorkeakoulu
2018
Creative Commons Attribution-NonCommercial-ShareAlike 1.0 Finland
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201805219364
https://urn.fi/URN:NBN:fi:amk-201805219364
Tiivistelmä
This thesis analyzes a low-level embedded C-based approach to firmware design for a new I/O device that is to serve as an interface for an existing sensor array. A strong emphasis was given to investigating ways to reduce device power consumption while maintaining the same level of functionality.
The system implemented communications by USART with DMA in an interrupt-driven program flow, centered around an external input interrupt that recurred every 25ms. All hardware initializations and processes were implemented with register-level code, following the MCU reference manual closely.
The required functionality was achieved successfully, and the resulting device fulfills all the demanded functionality and somewhat more: the projected characteristics of the device allowed for application of many power saving methods, e.g running the entire program from RAM, and lowering system clocks to the kHz range. A mechanism that automatically corrects and recovers from communication errors was also implemented, and thus the device is more robust and may run for long periods of time reliably.
The system implemented communications by USART with DMA in an interrupt-driven program flow, centered around an external input interrupt that recurred every 25ms. All hardware initializations and processes were implemented with register-level code, following the MCU reference manual closely.
The required functionality was achieved successfully, and the resulting device fulfills all the demanded functionality and somewhat more: the projected characteristics of the device allowed for application of many power saving methods, e.g running the entire program from RAM, and lowering system clocks to the kHz range. A mechanism that automatically corrects and recovers from communication errors was also implemented, and thus the device is more robust and may run for long periods of time reliably.