3 ms·
>strapping Bootstrapping? Is that a hardware people thing?
by benj111 3y ago
>strapping
Bootstrapping?
Is that a hardware people thing?
- numpad0 3y agoStrapping in circuits is figuratively tying a thing by strings so it stays in vicinity of voltage/current/circuit constants. In this case, the chip has pins that can be used to change operating modes by strapping high or low, called strapping pins. Similar to but slightly different from pull-up/pull-down. Boot strapping in circuits usually refers to passive parts that provide power needed locally for switching parts.
- benj111 3y ago>Similar to but slightly different from pull-up/pull-down In what way? I've only ever come across pull up and pull down. Edit: Wikipedia seems to equate strapping with setting a jumper. I can't seem to find any other references except related to esp devices.
- CableNinja 3y agoStrapping pins internally have a pullup or pulldown resistor. At startup these control what state some part of the system is in, (like the example mentioned elsewhere, flash voltage). These are controllable by applying your own resistor at startup, like a normal i/o pin would be. The difference is that these pins are multipurpose. At power-on, the early bios reads the bootstrapping pins, sets its state, and then releases them to the actual OS, so that they can be used for other things (sometimes). As useful as they are, imo they are a bit problematic, because of that mixed-use state. You have to be able to setup that pin for your hardware configuration, and then during operation use it for your needs. Most of these also have an internal fuse you can burn to force the state permanently, which is where the "slightly different" comes in. The fuse sets the permanent internal pull state, so you dont have to deal with the setup phase, except, that you need to make sure anything you use that pin for in your application defaults to the state you want, as you can still externally modify that pin at power-on.
- numpad0 3y agoThere's little more to that - current can be "strapped" too. It's more polysemic than pullups
- brotchie 3y agoAs an example: By default, on bootup, an ESP32 uses the value of pin IO12 to determine SPI Flash chip voltage. It has an internal pull-down so defaults to low (3.3V flash chip). If held high during bootup, then ESP32 treats Flash Chip voltage as 1.8V. If you an input (say DIP switches) with pull-ups on IO12 and the dip switch is "off", i.e. disconnecting the ground circuit / pulled-up. Then, at boot, the ESP32 thinks it need to use 1.8V to talk with the flash chip, instantly crashing boot. The use-case is to signal to the chip (since it's going to be booting off flash) what voltage to use (if you're using a 1.8V logic chip). Luckily (on the ESP32 at least) there's a bunch of internal fuses you can blow to stop it from sampling certain strapping pins at boot, and hard coding certain settings (in a irreversible way). $ espefuse.py --do-not-confirm --port /dev/ttyUSBx set_flash_voltage 3.3V Blows this fuse so you can use IO12 normally again.
- xobs 3y agoIn software, you pass configuration on the command line or in environment variables. In hardware, you "strap" pins to a particular value when the chip powers on. You can strap them high (tie them to the power source), strap them low (tie them to GND), or sometimes they do something fancier and tie them high or low via a particular resistor (for more fine-grained configurations like timing patterns, power selection, or I2C address selection in pin-constrained environments). Usually you can reuse the pins for something else after power on. Often there are efuse bits you can blow after manufacture in order to override the strapping values and use the pins as normal IOs.