Top all-time · #1360
Interrupt
Company blog · interrupt.memfault.comhardwareprogramming
Interrupt is the company blog at interrupt.memfault.com, writing about hardware and programming. Since 2019, 51 different Hacker News readers have linked it 171 times, most often “Demystifying Firmware Linker Scripts”. It is still writing: the last post was on 2026-08-13, and you can follow it by feed.
A community and blog for embedded software makers
Most-linked posts?
- Demystifying Firmware Linker Scripts5 people · 5 mentions · first linked 2019-06-25
- From zero to main(): A series on how MCUs boot4 people · 5 mentions · first linked 2019-05-14
- Measuring Stack Usage the Hard Way (2023)3 people · 3 mentions · first linked 2023-06-14
- From zero to main(): How to write a bootloader from scratch3 people · 3 mentions · first linked 2019-08-14
- How to Debug a HardFault on ARM Cortex-M3 people · 3 mentions · first linked 2019-11-20
- Emulating a Raspberry Pi in QEMU3 people · 3 mentions · first linked 2023-06-21
- C Structure Padding Initialization3 people · 3 mentions · first linked 2022-03-02
- Asynchronous Rust on Cortex-M Microcontrollers3 people · 3 mentions · first linked 2023-07-19
- Considerations when building embedded databases3 people · 3 mentions · first linked 2024-07-24
- C++17’s Useful Features for Embedded Systems2 people · 2 mentions · first linked 2023-05-17
What Hacker News says?
It’s primarily about the number of hours. At Pebble, we’d be able to get a pretty good gauge on battery life with about 10-20 devices and about 24 hours worth of data. We recorded the battery’s percentage drop over the course of each hour, averaged all samples together, and then used that to estimate how long the battery charge would last. This strategy is covered here: https://interrupt.memfault.com/blog/device-hea…
Comment linking /blog/device-heartbeat-metrics
on “Success and Failure at Pebble”Submitted I2C in a Nutshell as a story · 375 points
HN discussionThis whole website is really great; it has been a fantastic resource for me. https://interrupt.memfault.com/blog/cortex-m-fault-debug in particular was really great.
Comment linking /blog/cortex-m-fault-debug
on “From zero to main(): How to write a bootloader from scratch”Submitted From zero to main(): How to write a bootloader from scratch as a story · 332 points
HN discussionThis is part of the spec for ARM MCUs: the vector table starts at 0x0, and the first two words in it are the initial stack pointer and the entrypoint. We go into this in details (with references) in our earlier post: https://interrupt.memfault.com/blog/zero-to-main-1
Comment linking /blog/zero-to-main-1
on “From Zero to Main(): Bare Metal Rust”Submitted From Zero to Main(): Bare Metal Rust as a story · 293 points
HN discussionHere are some that I've been following why working on my newsletter ( https://weeklyrobotics.com/ ). These will be mostly robotics oriented, and some of them might be inactive: * [Robots&Chisel]( http://www.robotandchisel.com/blog/ ) - a blog by Michael Ferguson, he did a very nice series of posts on restoring a UBR-1 robot and implementing ROS-2 on it * [Mike Isted]( https://mikeisted.wordpress.com/ ) - at one poin…
Comment linking /
on “Ask HN: What are some great engineering blogs?”Submitted How to write a bootloader from scratch (2019) as a story · 189 points
HN discussionThanks for the link! That’s got a lot of goodies. One of us from Memfault also wrote a post about tips with Binutils, and this approach is covered in it. https://interrupt.memfault.com/blog/gnu-binutils#objcopy
Comment linking /blog/gnu-binutils
on “Embedding Binary Objects in C”Submitted Defensive Programming as a story · 106 points
HN discussionGDB is happy to deal with separate debug info files from the executable code - and has been approximately "always", as far as I'm aware. But it's not particularly common / well-understood how to actually achieve it. Some info here on how to configure GDB to use it: https://sourceware.org/gdb/current/onlinedocs/gdb.html/Separ... The old-school way appears to be to extract the debug information from the binaries after…
Comment linking /blog/dealing-with-large-symbol-files
on “How to build highly-debuggable C++ binaries”Submitted A Practical Guide to Watchdogs for Embedded Systems as a story · 104 points
HN discussionAlso see the "From Zero to main()" series: https://interrupt.memfault.com/blog/zero-to-main-1
Comment linking /blog/zero-to-main-1
on “A general overview of what happens before main() (2019)”Submitted The Best and Worst Microcontroller SDKs as a story · 101 points
HN discussionthis look at hw/sw breakpoints for arm stuff.. the int3 is a exception provided by the architecture, which coders leverage. so hence its not available on arm, but there's other breakpoint / debug functionality since arm devs also need to debug stuff :> happy hacking! https://interrupt.memfault.com/blog/cortex-m-breakpoints
Comment linking /blog/cortex-m-breakpoints
on “Two handy GDB breakpoint tricks”Submitted Debugging Firmware with GDB as a story · 98 points
HN discussionFor Cortex-M embedded topics, memfault's blog is simply one of the best out there. Consistently great posts even though they are written by a bunch of different authors. I go back to https://interrupt.memfault.com/blog/cortex-m-fault-debug all the time when debugging hard faults on different systems. Even if you regularly write embedded code for Cortex-M MCUs, scroll through their list of posts and you'll find sever…
Comment linking /blog/cortex-m-fault-debug
on “How to write a bootloader from scratch (2019)”Submitted A Practical Guide to Bluetooth Low Energy (BLE) Throughput as a story · 88 points
HN discussionEmbedded is a PIA, its not web development and shouldn't be treated as such. Printf isn't re-entrant, and they are calling it from multiple threads. There are solutions with trade offs: https://interrupt.memfault.com/blog/printf-on-embedded Everything in embedded is a tradeoff of space, performance, or cost. If you come at it as web development with IO you are going to have a very bad time.
Comment linking /blog/printf-on-embedded
on “Moving to a RTOS on the RP2040”Submitted Better Firmware with LLVM/Clang (2020) as a story · 74 points
HN discussion> If I understand correctly, when an initializer is provided the padding bits are set to 0. https://interrupt.memfault.com/blog/c-struct-padding-initial... looks at this (albeit a bit outdated; clang 13 and GCC 11) and claims to see undefined values even when initializers are given, at higher optimization levels > Additionally, setting the whole chunk of memory to 0 w/ memset would work. This seems to be the only th…
Comment linking /blog/c-struct-padding-initialization
on “Show HN: A portable hash map in C”Submitted Considerations when building embedded databases as a story · 68 points
HN discussionProject/Article turned out very well. It was more of a proof of concept with the code open-sourced so people can have something to start with to track firmware binary sizes on a commit-by-commit basis. https://interrupt.memfault.com/blog/code-size-deltas Unsure if their minds were blown, but I at least know that mine would have been if I showed it to myself a couple of years ago. During that time, I had never touche…
Comment linking /blog/code-size-deltas
on “Show HN: Pantry – Free JSON Storage for Personal Projects”Submitted Measuring Stack Usage the Hard Way (2023) as a story · 39 points
HN discussion> Async Rust (by default) can allocate memory For bare-metal Rust firmware, you would always use no-std, which excludes a default allocator. I understand from what you're saying that the principal difference between embassy-rs and what you'd expect from an RTOS is the choice of scheduling; as far as I can see, embassy-rs'es cooperative scheduler is even defended as highly intended. The advantage of cooperative sched…
Comment linking /blog/embedded-async-rust
on “Using the Rust standard library with the NuttX RTOS”Submitted How to implement and use .noinit RAM as a story · 35 points
HN discussionI like the monthly round up of articles here. https://interrupt.memfault.com/
Comment linking /
on “Ask HN: HN but for embedded hardware and software”Submitted Improving Compilation Time of C/C++ Projects as a story · 33 points
HN discussionIn theory, Rust can completely replace C for AVR development. Based on what shepmaster said, certain Rust features may not work yet. I'm also a Rust newbie. This article is a great intro to Rust for microcontrollers (but it's for ARM Cortex): https://interrupt.memfault.com/blog/zero-to-main-rust-1
Comment linking /blog/zero-to-main-rust-1
on “AVR support merged into Rust nightly”Submitted Asynchronous Rust on Cortex-M Microcontrollers as a story · 32 points
HN discussion