I see the word "strap" in some low-level hardware programming document from time to time. For example:
...to check if these straps are consistently programmed... if not then firmware re-programs the straps...
...currently this IP doesn’t have this mapping register but have a strap to program the target ID...
...each sub-ip will have a set of integration straps and it is SoC team’s responsibility to provide proper strap value per sub-ip...
AFAIK, the interface between hardware and software are registers. So software should interact with hardware through registers.
I looks up the word "strap" in dictionary and it says something like "a strip to bind things together", which seems not quite fit in such context.
So what does "strap" mean?
ADD 1 - 8:54 PM 2/24/2021
Below are some of my thought.
Software/firmware runs in some processor (probably but not necessarily CPU). Software can only use the ways supported by the processor architecture to interact with the platform/board. For example, for X86 processor, software can leverage memory access or IO access, which use memory address space and IO address space respectively. From above quotations, a strap seems different from a register.
If it is not a register, what is it?
And how is it accessed by software/firmware? Is it also accessed through memory or IO addresses in the context of X86 architecture?
(BTW, I will keep collecting more snippet to show more context.)
ADD 2 - 4:33 PM 2/25/2021
I had some discussion with some of my colleagues, they say straps are some non-volatile storage, and ultimately CPLD or fuse. They can be accessed indirectly through some IP's interface. We communicate with some delegate IP, and this IP's firmware will access the strap/CPLD for us.
From here, I see this:
HDD Status : 0A30 MEFW Version : 184.108.40.2064 System Straps : 00000F00 BE036FF1 B2EB6E8F <--------------------Straps! Hardware Anchor : F01001R06.0116f365a2012-07-17 Certificate : 946944F17906C95E
It seems straps are just another name of some system stored value.
But why call it strap rather than some more explicit name?