Hardware-Independent Embedded Firmware Architecture Framework





Embedded Systems, Firmware Architecture, Development Guidelines


Unlike other forms of development, the way firmware development is designed is somewhat outdated. It is not unusual to come across whole systems implemented in a cross-dependent monolithic way. In addition, the software of many implementations is hardware-dependent. Hence, significant hardware changes may result in extensive firmware implementation reviews that can be time-consuming and lead to low-quality ports, which may represent an important problem for Internet of Things (IoT) applications that evolve very frequently. To address this problem, this study proposes an embedded firmware development framework that allows reuse and portability while improving the firmware development life cycle. In addition, the typical mistakes of a novice software developer can be reduced by employing this methodology. An embedded IoT system project was refactored for this framework model to validate this proposal. Finally, a comparison was made between a legacy and framework project to demonstrate that the proposed framework can make a substantial improvement in portability, reuse, modularity, and other firmware factors.


Download data is not yet available.


Anjos, J. C. S., Gross, J. L. G., Matteussi, K. J., González, G. V., Leithardt, V. R. Q., and Geyer, C. F. R. (2021). An Algorithm to Minimize Energy Consumption and Elapsed Time for IoT Workloads in a Hybrid Architecture. Sensors, 21(9):1–20. DOI: 10.3390/s21092914.

Arnold, S. (2022). Cccc. Available at: [link] .

Beningo, J. (2017). Reusable Firmware Development: A Practical Approach to APIs, HALs and Drivers. Apress. DOI: 10.1007/978-1-4842-3297-2.

Brooks, F. P. and Bullet, N. S. (1987). Essence and accidents of software engineering. IEEE computer, 20(4):10-19. Available online [link].

Clements, A. A., Carpenter, L., Moeglein, W., and Wright, C. M. (2021). Is your firmware real or re-hosted?. Technical report, Sandia National Lab.(SNL-NM), Albuquerque, NM (United States). Available:[link].

Clements, A. A., Gustafson, E., Scharnowski, T., Grosen, P., Fritz, D., Kruegel, C., Vigna, G., Bagchi, S., and Payer, M. (2020). HALucinator: Firmware re-hosting through abstraction layer emulation. In 29th USENIX Security Symposium (USENIX Security 20), pages 1201-1218. Available online [link].

Connectivity Standards Alliance (2024). Matter. Available online [link] Acessed in: 2024-02-12.

Dano, E. B. (2019). Importance of reuse and modularity in system architecture. In 2019 International Symposium on Systems Engineering (ISSE), pages 1-8. IEEE. DOI: 10.1109/ISSE46696.2019.8984472.

Douglass, B. P. (2010). Design patterns for embedded systems in C: an embedded software engineering toolkit. Elsevier. Book.

Fahmideh, M., Ahmad, A., Behnaz, A., Grundy, J., and Susilo, W. (2022). Software engineering for internet of things: The practitioners' perspective. IEEE Transactions on Software Engineering, 48(8):2857-2878. DOI: 10.1109/TSE.2021.3070692.

Farina, M. D., dos Anjos, J. C., and de Freitas, E. P. (2023). Real-time auto calibration for heterogeneous wireless sensor networks. Journal of Internet Services and Applications, 14(1):1-9. DOI: 10.5753/jisa.2023.2739.

Feng, B., Mera, A., and Lu, L. (2020). P2IM: Scalable and hardware-independent firmware testing via automatic peripheral interface modeling. In 29th USENIX Security Symposium (USENIX Security 20), pages 1237-1254. Available online [link].

Fowler, M. (2012). Patterns of Enterprise Application Architecture: Pattern Enterpr Applica Arch. Addison-Wesley. Book.

Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995). Design patterns: elements of reusable object-oriented software. Pearson Deutschland GmbH. DOI: 10.1007/3-540-47910-4_21.

Gustafson, E., Muench, M., Spensky, C., Redini, N., Machiry, A., Fratantonio, Y., Balzarotti, D., Francillon, A., Choe, Y. R., Kruegel, C., et al. (2019). Toward the analysis of embedded firmware through automated re-hosting. In 22nd International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2019), pages 135-150. Available online [link].

Hubalovsky, S. and Sedivy, J. (2010). Mistakes in object oriented programming. In 2010 2nd International Conference on Information Technology,(2010 ICIT), pages 113-116. IEEE. Available online [link].

Jia, M., Sha, E. H.-M., Zhuge, Q., and Gu, S. (2022). Transient computing for energy harvesting systems: A survey. Journal of Systems Architecture, 132:102743. DOI: 10.1016/j.sysarc.2022.102743.

Marcondes, H., Hoeller, A. S., Wanner, L. F., and Frohlich, A. A. M. (2006). Operating systems portability: 8 bits and beyond. In 2006 IEEE conference on emerging technologies and factory automation, pages 124-130. IEEE. DOI: 10.1109/ETFA.2006.355371.

Martin, R. C. (2017). Clean architecture: A craftsman's guide to. Available online [link].

Martins Gomes, R. and Baunach, M. (2021). A study on the portability of iot operating systems. Tagungsband des FG-BS Frühjahrstreffens 2021. DOI: 10.18420/fgbs2021f-01.

McCabe, T. J. (1976). A complexity measure. IEEE Transactions on software Engineering, (4):308-320. DOI: 10.1109/TSE.1976.233837.

Motogna, S., Vescan, A., and cSerban, C. (2023). Empirical investigation in embedded systems: Quality attributes in general, maintainability in particular. Journal of Systems and Software, 201:111678. DOI: 10.1016/j.jss.2023.111678.

Neser, M. and van Schoor, G. (2009). Object-oriented embedded c. SAIEE Africa Research Journal, 100(4):90-96. DOI: 10.23919/SAIEE.2009.8531856.

Quantum Leaps, LLC (2020). Object-oriented programming in c. Available online [link] Accessed in: 2022-09-26.

Schmidt, D. C., Gokhale, A., and Natarajan, B. (2004). Leveraging application frameworks: why frameworks are important and how to apply them effectively. Queue, 2(5):66-75. DOI: 10.1145/1016998.1017005.

Sommerville, I. (2015). Software engineering. 10th. Book Software Engineering. 10th, Series Software Engineering, 10. Book.

Spray, J. and Sinha, R. (2018). Abstraction layered architecture: Writing maintainable embedded code. In European conference on software architecture, pages 131-146. Springer. Book.

Stewart, D. B. (1999). Twenty-five most common mistakes with real-time software development. In Proceedings of the 1999 Embedded Systems Conference (ESC’99), volume 141. Available online [link].

Sun, L., Li, Y., and Memon, R. A. (2017). An open iot framework based on microservices architecture. China Communications, 14(2):154-162. DOI: 10.1109/CC.2017.7868163.

Systems, E. (2017). Esp-wroom-32 datasheet. Available online [link].

Tremaroli, N. J. (2023). Adaptive Firmware Framework for Microcontroller Development. PhD thesis, Virginia Tech. Available online [link].

Willocx, M., Bohé, I., Vossaert, J., and Naessens, V. (2018). Developing maintainable application-centric iot ecosystems. In 2018 IEEE International Congress on Internet of Things (ICIOT), pages 25-32. IEEE. DOI: 10.1109/ICIOT.2018.00011.

Yuan, C., Liu, Z., Wang, X., and Yuan, F. (2021). A component development framework for embedded software. In 2021 IEEE International Conference on Information Communication and Software Engineering (ICICSE), pages 71-75. IEEE. DOI: 10.1109/ICICSE52190.2021.9404109.

Zaddach, J., Bruno, L., Francillon, A., Balzarotti, D., et al. (2014). Avatar: A framework to support dynamic security analysis of embedded systems' firmwares. In NDSS, volume 14, pages 1-16. Available online [link].

Zheng, X., Liang, S., and Xiong, X. (2021). A hardware/software partitioning method based on graph convolution network. Design Automation for Embedded Systems, 25(4):325-351. DOI: 10.1007/s10617-021-09255-9.




How to Cite

Farina, M. . D. O., Pohren, D. H., Roque, A. dos S., Silva, A., da Costa, J. P. J., Fontoura, L. M., Anjos, J. C. S. dos, & Freitas, E. P. de. (2024). Hardware-Independent Embedded Firmware Architecture Framework. Journal of Internet Services and Applications, 15(1), 14–24. https://doi.org/10.5753/jisa.2024.3634



Research article