At the lowest level, the hardware is the software. Computer instructions are built into how the CPU is physically connected to the bus, and thus the memory and other devices.
These connections are selected based on a code that you can give to the CPU. When designing the software, they take these codes and use them to create the machine language for that architecture.
Once you know how the codes work, you can then put a list of these codes and their parameters onto a device that allows long term storage. Either a hard drive or some form of flash memory. When the computer turns on, it has a boot loader that always runs and has a set number of instructions designed to load the first level of software, which then has just enough power and ability to load the next, and so on. This happens until eventually your Operating system is loaded.
Two ways to do that. 1. Program flash storage before soldering it to the main board. 2. Program via JTAG. JTAG allows to connect an external computer to the board, put the CPU into standby mode before it executes a single instruction, and talk to other components like flash storage or RAM on the board. The flash storage must have a JTAG TAP controller integrated into it to understand JTAG protocol. The protocol was deliberately made very simple to implement in hardware only. JTAG TAP controller does not require any software. It’s just a few hundred logic gates. Once flash storage with an integrated JTAG TAP controller is manufactured it understands JTAG protocol.
Next time the board is powered on the CPU reads the instructions from the flash storage.
Latest Answers