-
What we've been reading in January
Happy New Year! Here are the articles, videos, and tools we’ve been excited about this past month.
-
Managing Developer Environments with Conda
This post gives an introduction to what Conda is, explains why you should care about keeping your developer environments in sync, and finally provides a walk-through on getting started with Conda to set up a GCC based developer environment.
-
From Zero to main(): Bare metal Rust
by James MunnsSince 2015, Rust has been redefining what it means to combine the best-in-class aspects of performance, correctness, and developer convenience into one language, without compromise. In this post, we’ll bootstrap a Rust environment on a Cortex-M microcontroller from scratch, and explain a few of the language concepts you might not have seen before.
-
Reproducible Firmware Builds
In this article we will discuss what a Reproducible Build is, walk through the process of updating a firmware project so the build is reproducible, and explore how we can leverage what we have learned for other aspects of development.
-
What we've been reading in November (2019)
Starting this month, we will be sharing with you what we have been reading at the end of each month. This will include blog posts, videos, tools, and libraries that we found insightful or useful.
-
How to debug a HardFault on an ARM Cortex-M MCU
In this article, we explain how to debug faults on ARM Cortex-M based devices. In the process, we learn about fault registers, how to automate fault analysis, and figure out ways to recover from some faults without rebooting the MCU. We include practical examples, with a step by step walk-through on how to investigate them.
-
From Zero to main(): Bootstrapping libc with Newlib
In this post, we will add RedHat’s Newlib to our firmware and highlight some of its features. We will implement syscalls, learn about constructors, and finally print out “Hello, World”! We will also learn how to replace parts or all of the standard C library.
-
Using Asserts in Embedded Systems
By using asserts proactively in embedded systems on debug and production builds, developers can both prevent more bugs before shipping and quickly surface and fix them after shipping. Proper assert handling is also the safest way to handle issues and undefined behavior that occur in production. In this post, we’ll go over best practices with asserts, when to use asserts, and then come up with a production ready custom assert implementation for an ARM Cortex-M device, all while keeping the code size usage to a minimum.