Member-only story

Where Firmware Begins— SSD Firmware Development — Part 9

Lan D. Phan
5 min readJan 13, 2019

--

Application software generally executes on an environment that had already been “booted” from a system, typically with an operation system. For those already familiar with software application development, the main function is, in general, where everything starts. For firmware development, developers need to be aware of the boot process, from the time of power-on. So where does it all begin?

An SoC will have at least 1 CPU and various hardware components that are initiated upon power-on. The hardware components initially will run according to the rules defined by the design and generally changes behavior based on settings from firmware, via registers (see Part 4). For the CPU (at least the main one), there is a starting point. The starting point could vary based on the specification of the SoC, but there is a pre-defined instruction address that the CPU will start executing from. For example, a CPU could start executing at instruction address 0x00000000. So the next question anyone would ask is, how do we put code there?

Firmware developers may be familiar with something called the ROM(read-only memory) code. This code is developed along side with the hardware design and ultimately gets “burned” into the SoC itself, hence read-only. Being read-only is a key reality that really warrants a good and careful design for the ROM…

--

--

No responses yet