Welcome to the July 2018 edition of the Embedded Artistry Newsletter! This is a monthly newsletter of curated and original content to help you build superior embedded systems. This newsletter is intended to supplement the website and covers topics not mentioned there.
This month marks the one-year anniversary of our newsletter! In this edition, we’ll cover:
- Looking back at major developments over the past twelve months
- A new Intel vulnerability announcement
- C++ conference talks with an embedded focus
- The new I3C specification
- Maxim's new DARWIN MCU line
- Interesting links from around the web
- Embedded Artistry website updates and popular posts
We’ve been publishing our newsletter for one year. The past twelve months have been eventful for embedded systems. Here are some of the events that stood out to us:
- We saw multiple vulnerability announcements, including KRACK, BlueBorne, and Spectre/Meltdown
- The Voyager Mission celebrated its 40th Anniversary
- The Bluetooth 5 and Bluetooth Mesh specifications were released
- Amazon launched an FPGA cloud and took stewardship over FreeRTOS
- ARM launched the Platform Security Architecture to address inadequate embedded systems security
Intel Vulnerability Announcement
A new Intel vulnerability has been announced, dubbed "lazy floating-point (FP) state restore". This vulnerability affects all Intel Core-based microprocessors.
Intel provides a lazy floating-point state restore technique, which delays restoration of a processing state until an instruction operating on that state is executed by a new process. An attacker can take advantage of this technique to infer register values of a different process through a speculative execution side channel. This can be used to retrieve AES encryption keys, which are often stored in the floating-point unit (FPU) registers.
Intel recommends that developers use Eager FP state restore to prevent this vulnerability.
For more on lazy FP state restore:
- INTEL-SA-00145: Lazy FP State Restore
- Lazy FP State Restore Vulnerability Affects Most Intel Core CPUs
- Twitter thread from the Colin Percival
Embedded C++ Talks
A lot of great Embedded C++ conference talks have been published over the past few months. Here are some of our favorites:
- Modern C++ in Embedded Systems by Michael Caisse
- Microcontrollers in Micro-increments: A Test Driven C++ Workflow for Embedded Systems by Mike Ritchie
- Embedded DSLs for Embedded Programming by Simon Brand
- Developing High Performance Coroutines for ARMs by Kelemns Morgenstern
- Standardizing an OS-less Subset of C++ by Ben Craig
The I3C Specification
A typo led me to discover that the MIPI Alliance has announced the I3C Specification, the successor to I2C. I3C also intends to replace the SPI bus, which has no clearly defined standard and sports multiple implementations. Since GPIO availability is always contentious, many board designers will gladly switch to I3C's two-wire bus if it lives up to the hype. SPI will still maintain an advantage over I3C in high-speed point-to-point use cases, like SPI flash devices.
I3C is still a two-wire interface but unlike I2C, I3C will provide a minimum data rate of 10Mbps. I3C will also support multi-master, slave-initiated communication, dynamic addressing, and power management features (eg. sleep mode). A broadcast address is provided, allowing masters to send command codes to all slave devices at once. I3C lines will be push-pull instead of open-drain, enabling better power consumption per transferred bit. Most I2C slave devices will be able to operate on an I3C bus as long as they have a 50ns glitch filter and do not stall the clock.
I3C is brand new, so I have yet to find any sensors or processors that have shipped with I3C support. I expect we’ll start to see some devices announced later this year and more announced next year.
For more on I3C:
- MIPI I3C
- MIPI I3C FAQ
- MIPI I3C Host Controller Interface
- MIPI I3C Specification
- MIPI I3C Device Characteristic Register
Maxim's DARWIN MCUs Line
Maxim has historically been in the power-IC business, focusing on components such as regulators, fuel gauges, and PMICs. They recently announced a low-power processing line: DARWIN.
The DARWIN MCU line is split into two families:
- Generation U: Ultra-low power, with flash sizes from 256KB to 2MB, and SRAM sizes ranging from 96KB to 512KB
- Generation UP: Ultra-low-power + performance, with 3MB flash and 1MB SRAM
The Generation U MCUs feature a Cortex-M4 with an FPU and can be clocked up to 96MHz. Maxim is capitalizing on their power management specialty with their MCUs. The processors include an embedded PMU, provide flexible power modes, and support dynamic clocking (down to 4MHz on the processor clock).
The Generation UP MCU is also a Cortex-M4. The UP MCU can be clocked up to 120MHz and includes SPI execute-in-place (XIP) interfaces. A memory decryption integrity unit (MDIU) provides on-the-fly decryption of data stored in external flash. Power management capabilities are further extended by providing power control over individual SRAM banks.
The Darwin MCU line looks to be an interesting contender in the low-power microcontroller space.
For more on the DARWIN MCUs:
Around the Web
ITHare published A Useable C++ Dialect That is Safe Against Memory Corruption. This article covers using (Re)Actors to help ensure memory safety in our programs.
All About Circuits takes a look at IP tension in Who Really Owns Hardware: Property Rights vs Copyrights
Another great All About Circuits article was Do Engineers Design Anything Anymore? Electrical Engineering in the Age of ICs.
Atomera plans to breathe new life into older chip manufacturing with a technique that involves burying atom-thin layers of oxygen below the surface of a transistor's silicon. This technique reduces variability among transistors and enables designers to make use of larger process technologies.
We have done some major revamping of our website this month!
- We have a new Welcome page to help orient new visitors to the website
- The Archive has been restructured.
- We have a new archive sub-page to browse all of our articles by tag.
- Our About page features our company's story
- The blog now features a sidebar which provides search, recent posts, featured posts, and our article "categories"
- The newsletter archive also includes a sidebar featuring search and the five most recent newsletters.
- The Beginners, Hardware References, and Software References pages were updated with additional links.
The following articles were published on our website in June:
- How I Schedule My Day as a Consultant
- GitNStats: A git History Analyzer to Help Identify Code Hot Spots
- modm: Modular Object-Oriented Development for Microcontrollers
- Simulating Open-Drain GPIO in Software
- Foonathan/Memory: Simplifying the C++ Memory Allocator
- Demystifying Microcontroller GPIO Settings
These were our most popular articles in June:
- Circular Buffers in C/C++
- Jenkins: Configuring a Linux Slave Node
- Installing LLVM/Clang on OSX
- An Overview of C++ STL Containers
- Jenkins: Running Steps as sudo
- A Simple Consulting Services Agreement
- Implementing an Asynchronous Dispatch Queue
- C++ Casting, or: Oh No, They Broke Malloc!"
- Creating and Enforcing a Code Formatting Standard with clang-format
Thanks for Reading!
Have any feedback, questions, suggestions, interesting articles, or resources to recommend to other developers? Simply reply to this email!