this post was submitted on 14 Jul 2023
2586 points (97.9% liked)
Technology
59653 readers
3247 users here now
This is a most excellent place for technology news and articles.
Our Rules
- Follow the lemmy.world rules.
- Only tech related content.
- Be excellent to each another!
- Mod approved content bots can post up to 10 articles per day.
- Threads asking for personal tech support may be deleted.
- Politics threads may be removed.
- No memes allowed as posts, OK to post as comments.
- Only approved bots from the list below, to ask if your bot can be added please contact us.
- Check for duplicates before posting, duplicates may be removed
Approved Bots
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
This is the most accurate description in this thread so far. You're just missing bootcode, which is more like the step between hardware and software mentioned in the OP. It's functionally like software (written in assembly and/or a programming language like C, compiled, assembled, and linked into an executable), but it's stored in a ROM, which makes it like hardware. Unless there's a patching system built in to the bootcode, you can't modify it without a respin of the hardware (which is expensive and time consuming).
The microprocessor (mp) it runs on is hard-coded to load bootcode's entry point when the mp is brought out of hard reset, and the code itself does the essential initialization of the SoC. It can handle things like enabling performance features, setting up default interrupt handlers, training links, bringing various other parts of the chip out of hard reset, repairing internal SRAM, setting up the chip to properly handle the parts that are and aren't fused off, etc. Once it finishes, it starts the bios on CPUs (which is basically the bootcode for the motherboard, though it isn't hard-coded but usually stored in a flash chip so it can be updated), or if it's an embedded mp it can start firmware or just wait for an interrupt.
The bios sets up the motherboard and then starts the bootloader, which is located on a boot partition of a storage drive. The bootloader will then select and start the OS, which loads the drivers and provides the framework for software to find the relevant ones.