boot.h(3avr)

πŸ’– boot.h πŸ’–

okay so bestie, welcome to boot.h, straight out of the 3avr manual β€” this is the AVR-LibC header page that's basically a whole group chat full of #defines, and we're gonna go through every single one together because you deserve the full tea, not a summary 🌸

No cap, it's a lot of macros. But you're a main character, you got this. πŸ’…


✨ NAME ✨

boot.h β€” that's it, that's the name, she's short and iconic and she knows it πŸŽ€


✨ SYNOPSIS ✨

πŸŽ€ Macros πŸŽ€

here's the whole squad, every last one, exactly as written, no edits, no gatekeeping, fr fr 🫢

  • #define BOOTLOADER_SECTION __attribute__ ((__section__('.bootloader'))) β€” the entire definition is right there in the open: an __attribute__ with a __section__ of '.bootloader', and honestly? slay, no secrets 🌈
  • #define boot_spm_interrupt_enable() β€” the name is the whole plot, bestie: SPM interrupt, enable πŸ¦‹
  • #define boot_spm_interrupt_disable() β€” same energy, opposite verb: SPM interrupt, disable πŸ’œ
  • #define boot_is_spm_interrupt() β€” the "is it though?" check of the family πŸ‘‘
  • #define boot_rww_busy() β€” asks the question "RWW busy?" and that's literally all it's called ⭐
  • #define boot_spm_busy() β€” the SPM-flavoured version of the same vibe check πŸ”₯
  • #define boot_spm_busy_wait() β€” busy check but make it wait 😭
  • #define GET_LOW_FUSE_BITS (0x0000) β€” this one comes with a value baked in: 0x0000 ✨
  • #define GET_LOCK_BITS (0x0001) β€” and her value is 0x0001 πŸŽ€
  • #define GET_EXTENDED_FUSE_BITS (0x0002) β€” value: 0x0002, yes the numbers are all different, yes that matters 🌸
  • #define GET_HIGH_FUSE_BITS (0x0003) β€” value: 0x0003, completing the little 0x0000 β†’ 0x0003 glow-up πŸ’–
  • #define boot_lock_fuse_bits_get(address) β€” takes exactly one argument, and she calls it address 🧚
  • #define boot_signature_byte_get(addr) β€” one argument, but this one's named addr, not address, and we respect her choices πŸ’…
  • #define boot_page_fill(address, data) β€” two arguments: address and data πŸ“
  • #define boot_page_erase(address) β€” one argument: address πŸ’€
  • #define boot_page_write(address) β€” one argument: address ⭐
  • #define boot_rww_enable() β€” takes nothing, gives enable energy 🌈
  • #define boot_lock_bits_set(lock_bits) β€” one argument named lock_bits 🫢
  • #define boot_page_fill_safe(address, data) β€” the _safe remix of the fill macro, same two arguments, address and data 😌
  • #define boot_page_erase_safe(address) β€” the _safe remix of erase, one address πŸ’œ
  • #define boot_page_write_safe(address) β€” the _safe remix of write, one address πŸ‘‘
  • #define boot_rww_enable_safe() β€” the _safe remix of enable, still zero arguments sweets πŸ¦‹
  • #define boot_lock_bits_set_safe(lock_bits) β€” the _safe remix of the lock-bits setter, one lock_bits πŸ”₯
lowkey the pattern is staring right at you: anything with a _safe twin has a twin, and the arguments match up one-for-one. that's not me guessing at behaviour, that's just reading the guest list πŸ’–

πŸ’… AUTHOR πŸ’…

Generated automatically by Doxygen for AVR-LibC from the source code.

(so the author is a robot, and honestly? the robot ate. no notes.) πŸ€–βœ¨


and that's the whole page, bestie β€” you now know every macro, every argument name, every value, and every _safe variant, and you didn't skip a single one, which is genuinely iconic behaviour πŸ‘‘

this was AVR-LibC, Version 2.2.1, serving you boot.h from the 3avr manual β€” mwah, go forth and compile πŸ’–πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from