Review on Firmware

This paper presents a review on firmware and the process of firmware development including firmware development model, current trend in firmware development, task scheduling, debugging, documenting the source code and discussed some information related to embedded microcontroller. Firmware was introduced by Ascher Opler in 1967, to solve confusion on defining the software code residing in the hardware Read Only Memory (ROM). Moore's law (1965) is rumored to coming to an end, but undeniable it has been envisioning semiconductor industry for the past 5 decades. Improvement in semiconductor manufacturing technology for integrated chip has at least 10 to 100-folded in term of performance. Embedded device which was then resource-constrained is now capable to run full fledge operating system (O/S). Firmware had been used to define the software code reside in ROM for the Basic Input Output System (BIOS) in our computer motherboard used for initialization of the hardware peripheral. Firmware is also used to define the software code reside in microcontroller and embedded system. Embedded microcontroller is used in various application due to its low cost, small size, reliability, less power consumption and lighter weight. The improvement of technology in term of both hardware and software development had introduce microcontroller like Arduino to allow people to carry out firmware coding relatively ease compared with previously available embedded system. The increased capacity of embedded memory had allowed O/S stack to reside with the embedded system firmware which has blurred the border between firmware and software as how the software code stored in the hardware ROM happened back in 1967. The definition of firmware should be redefined over time to further avoid confusion. Although the borderline between firmware and software is rather blur, undoubtedly firmware is a piece of software with close relation to the hardware within. This paper gives an overview about firmware and provides a clearer view on firmware in personal computer and embedded systems.

[1]  Veit B. Kleeberger,et al.  Design & verification of automotive SoC firmware , 2015, 2015 52nd ACM/EDAC/IEEE Design Automation Conference (DAC).

[2]  Bill Greene Agile methods applied to embedded firmware development , 2004, Agile Development Conference.

[3]  Vincent Zimmer,et al.  Firmware Stacks for Embedded Systems , 2015 .

[4]  Abraham Silberschatz,et al.  Operating System Concepts , 1983 .

[5]  David Naccache,et al.  Alien vs. Quine , 2007, IEEE Security & Privacy.

[6]  Vincent Zimmer,et al.  Embedded Firmware Solutions: Development Best Practices for the Internet of Things , 2015 .

[7]  David Patterson,et al.  An Agile Approach to Building RISC-V Microprocessors , 2016, IEEE Micro.

[8]  Tomlinson Gene Rauscher,et al.  Microprogramming: A Tutorial and Survey of Recent Developments , 1980, IEEE Transactions on Computers.

[9]  Asher Opler Fourth - generation software , 1981 .

[10]  D. Kushner,et al.  The real story of stuxnet , 2013, IEEE Spectrum.

[11]  Quentin R. Skrabec The 100 Most Significant Events in American Business: An Encyclopedia , 2012 .

[12]  Sujeet Shenoi,et al.  Forensic Analysis of BIOS Chips , 2006, IFIP Int. Conf. Digital Forensics.

[13]  Edwin D. Reilly,et al.  Milestones in Computer Science and Information Technology , 2003 .

[14]  Moshe Y. Vardi,et al.  Validation of SoC firmware-hardware flows: Challenges and solution directions , 2014, 2014 51st ACM/EDAC/IEEE Design Automation Conference (DAC).

[15]  Pai H. Chou,et al.  Remote progressive firmware update for flash-based networked embedded systems , 2009, ISLPED.

[16]  R. Bannatyne,et al.  Introduction to microcontrollers , 1997, WESCON/97 Conference Proceedings.

[17]  Matthew Ferrens Microprogramming and Microarchitecture , 1996, Computer.

[18]  Bruce D. Shriver,et al.  An Overview of Firmware Engineering , 1978, Computer.

[19]  J. Mills Good programming in assembly language , 1980 .

[20]  B. Gruszczynski An overview of the current state of software engineering in embedded automotive electronics , 2006, 2006 IEEE International Conference on Electro/Information Technology.

[21]  Peter Patton,et al.  Design for Trustworthy Software: Tools, Techniques, and Methodology of Developing Robust Software , 2006 .

[22]  Dong Wu,et al.  A novel speed-up coding method in quadruple-level-cell 3D NAND flash memory , 2016, 2016 5th International Symposium on Next-Generation Electronics (ISNE).

[23]  Luigi Pomante,et al.  OATS: An automated test system for OpenOCD , 2015, 2015 IEEE 1st International Forum on Research and Technologies for Society and Industry Leveraging a better tomorrow (RTSI).