1
\$\begingroup\$

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?

Thanks!

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 : 6.0.50.1244
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?

\$\endgroup\$
6
  • 3
    \$\begingroup\$ smwikipedia - Hi, Please can you add a link to the document(s) you are quoting? This might be terminology specific to those devices. I haven't seen the word "strap" used in that way, as a kind of programmable connection. Thanks. \$\endgroup\$ – SamGibson Feb 24 at 1:58
  • 1
    \$\begingroup\$ FWIW, I've occasionally seen "strap" used to mean "directly connected to VCC or ground" (cf. "pull" which usually involves a resistor). e.g. "The /FOO pin should be strapped to ground." \$\endgroup\$ – Alex Hajnal Feb 24 at 3:10
  • \$\begingroup\$ @SamGibson Thanks. But this is some proprietary document so I cannot share the full text. I will try to share more snippet. \$\endgroup\$ – smwikipedia Feb 24 at 3:52
  • \$\begingroup\$ @AlexHajnal - Hi, Yes that's exactly what I usually see when the word "strap" is used, but that's not a programmable connection as the quoted text states. We can guess the intended meaning, but this might be manufacturer-specific jargon. \$\endgroup\$ – SamGibson Feb 24 at 15:01
  • \$\begingroup\$ Your quote "this IP" suggests that this is some type of core that can be instantiated inside of an FPGA. In that case, there may be a separate dedicated logic input port for these "strapped" values, instead of using the normal register interface. \$\endgroup\$ – Justin Feb 24 at 15:15
2
\$\begingroup\$

Fused links or jumpers or "soft, firm or hard" registers are "straps" to indicate status with logic levels, such as read by BIOS for configuration of RAM and may be hard-coded in flash memory.

\$\endgroup\$
5
  • \$\begingroup\$ Thanks! Could you elaborate more about "soft, firm or hard" registers? I have always been thinking registers as hardware. \$\endgroup\$ – smwikipedia Feb 25 at 8:44
  • \$\begingroup\$ Think software, firmware, hardware but not cash \$\endgroup\$ – Tony Stewart EE75 Feb 25 at 8:45
  • \$\begingroup\$ I have seen registers created from various gates. I cannot image how software or firmware can create registers. Or am I imaging the wrong way? Or I mis-interpreted the concept of "register" ? \$\endgroup\$ – smwikipedia Feb 25 at 8:58
  • \$\begingroup\$ btw, I am not a native English speaker. But how could it be related to cash (I mean in the sense of money)? \$\endgroup\$ – smwikipedia Feb 28 at 3:27
  • \$\begingroup\$ Not Cash registers (Lol) \$\endgroup\$ – Tony Stewart EE75 Feb 28 at 4:52
2
\$\begingroup\$

The slightly more elaborate and concise term is "configuration strap", a method of configuring a device by pulling a pin up or down, for instance to override its internal default pull-up/down.

To "strap" means, in general, to fasten or secure in a specified place or position with a belt. In our case that could be to configure at a specified voltage level with a resistor or a DIP switch.

You may be more familiar with the related term "to tie down" an input pin, whereby tying and strapping have similar meanings.

From http://ww1.microchip.com/downloads/en/AppNotes/00002577A.pdf

CONFIGURATION STRAPS The configuration strap option is a hardware method to configure the switch where pull-up or pull-down resistors are used to set the logic level high or low on strapping pins of the switch. For example, the KSZ9896C has several strapping pins with internal weak pull-up or pull-down resistors which allow the switch to operate in the unmanaged mode. A user can add 1KΩ to 10KΩ external pull-up resistors on non-LED pins, or 750Ω to 1KΩ pull-down resistors on LED strapping pins to override the effect of the weak internal resistors. The strapping pins exhibit very high impedance when the device is in reset. They are internally sampled at the rising edge of the reset pin, RESET_N. Once the RESET_N pin is high, all of these pins become driven outputs. The user must be aware that the internal pull-up/pull-down resistors are weak. Therefore, if the application board uses any external pull-up or pull-down resistors, care must be taken. If an external processor is connected with a switch, the processor should also be checked for internal pull-ups or pull-downs, and it may be necessary to add an external resistor to reinforce the default internal resistor of the Microchip switch. The KSZ9xxx family’s datasheet lists all the strapping pins, their functionalities and default values.

\$\endgroup\$
2
\$\begingroup\$

The term has been used in different ways but typically means a setting (one or more bits) that could be implemented as a latch, switch, jumper etc. in the early days it might have been a wire with a banana plug on each end. My assumption is that it derives from electrical engineering where one would strap something to ground by attaching a metal strap around a water pipe.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ +1 for the history background. Very informative. \$\endgroup\$ – smwikipedia Feb 24 at 23:06
0
\$\begingroup\$

Without seeing the full document (and perhaps not even then), only educated guesses remain about the exact implementation details (unless someone has experience with a device whose documentation used that exact jargon for a programmable connection, and can write an answer from that experience). As mentioned above, I have seen "strap" used only for physical connections outside a device.

From the snippet of text given, this seems similar to what Atmel do when they use the word "fuse" (really EEPROM, see also here) for a programmable setting, which isn't really what most people think of as a fuse!

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.