"The scientist is not a person who gives the right answers, he's one who asks the right questions." --Claude Lévi-Strauss (of no relation to your pants!)
In this issue:
- Don't Follow these 5 Dangerous Coding Standard Rules
- Retake Control of Your Embedded Project Schedule
- Embedded Systems and Cybersecurity
- TechTalk: CRCs and Checksums
- ARM-based "Embedded Software Training in a Box"
- Industry News That's Not Boring
Firmware Update is a free, monthly-ish newsletter by embedded systems expert Michael Barr. Firmware Update is a trademark and this issue is Copyright ©2019. You may forward whole issues to colleagues that design embedded systems. No other uses are permitted.
Don't Follow these 5 Dangerous Coding Standard Rules
A while back I happened across a brief blog post by another firmware developer in which he presented his ten C coding rules for better embedded C code. I had an immediate strong negative reaction to several of his rules and dislike a few more as I thought more about his advice. This month I’m going to describe what I don’t like about each piece of advice from "Mr. BadAdvice."
I hope that if you have followed rules like the five below my comments will persuade you to move away from those in favor of a better set of embedded C coding rules that keep bugs out.
Retake Control of Your Embedded Project Schedule
Is your embedded systems design project falling behind schedule? Staffed with experienced embedded hardware and firmware engineers, Barr Group provides embedded systems design assistance and expert guidance to engineering teams and their managers.
Barr Group's design team augmentation services include:
- Product Development Assistance
- System/Software Architecture Consulting
- Process Improvement Consulting
With a perpetual focus on helping teams get back on schedule and budget, our engineers regularly help companies complete the development of products including: medical devices, automotive systems, cloud-connected IoT products, industrial automation equipment, and mobile/communications gear.
Need temporary staff augmentation? Struggling to find specific expertise? Need help with development tool configuration? Want an independent design/code review? Whatever's stressing you out... we can help with that!
Reach out: https://barrgroup.com/contact-us
Embedded Systems and Cybersecurity
I was recently interviewed about securing Internet-connected embedded systems. As compared to desktop computers, embedded systems are typically much harder to defend against attacks as well as upgrade (to augment their security over time). As I discuss, the challenges are greater for a number of reasons. However, though there may never exist a "silver bullet", there are definitely best practices for designing security into embedded systems.
Read transcript: esc-boston-dangerous-flaws-safety-critical-device-design
TechTalk: CRCs and Checksums
A checksum is a numerical check value calculated from a larger set of data. A checksum is most often used when sending a packet of data over a network or other communications channel. One checksum formula is a simple addition wherein the bytes of the packet are added together into a variable of a fixed size/width (say, 16 bits) as they are sent. The checksum is typically sent at the end of the packet and used at the receiving end to confirm the integrity of the preceding data.
A CRC (or cyclic redundancy check) is based on division instead of addition. The error detection capabilities of a CRC make it a much stronger checksum and, therefore, often worth the price of additional computational complexity. Should you need to implement a CRC in your software, we've put together several free resources, which include articles, downloadable CRC source code (in C), and an overview video for beginners.
Watch video: https://youtu.be/aoJTFvjUp2U
ARM-based "Embedded Software Training in a Box"
For a limited time you can save 10% when you buy an Embedded Software Training in a Box™ kit.
Based on Barr Group’s Embedded Software Boot Camp®, this do-it-yourself training kit allows you to learn from the valuable content of this popular hands-on live training without the need to take a week away from the office and/or travel.
Featured in this kit are an ARM-Cortex microcontroller board from STMicro along with a full set of training materials that includes a series of exercise instructions and solutions. In brief, you get everything the live course attendees do except the instructor.
Use coupon code "KIT_SAVE_50" to receive your 10% discount. This offer ends June 30, 2019!
Industry News That's Not Boring
How the Boeing 737 Max Disaster Looks to a Software Developer https://spectrum.ieee.org/aerospace/aviation/how-the-boeing-737-max-disaster-looks-to-a-software-developer
A powerful, NSA-developed disassembler and software reverse engineering tool for binary analysis ("Ghidra") is now available (legally!) for free download on the Internet: https://ghidra-sre.org
Security researchers have found a way to trick the Tesla autopilot (including driving it into oncoming traffic!) with easily-deployed "stickers": https://keenlab.tencent.com/en/whitepapers/Experimental_Security_Research_of_Tesla_Autopilot.pdf
A New Accident Model for Engineering Safer Systems http://sunnyday.mit.edu/accidents/safetyscience-single.pdf
Billionaires aim to free humanity from our computer simulated prison: https://www.sciencealert.com/two-billionaires-want-scientists-help-to-break-humans-out-of-the-computer-simulation
More news: https://twitter.com/embeddedbarr
Quick Links to Useful Stuff
- Free Book: Embedded C Coding Standard
- Free Code: Fast Accurate Memory Test in C
- Embedded Linux Training in a Box <-- NEW!
How to Contact the Author
I'm always interested in hearing from embedded systems designers and happy to take a few minutes to help you find the resources to get a design done right. Send me an email anytime. And be sure to also connect with me on Twitter (@embeddedbarr) and LinkedIn (https://linkedin.com/in/embeddedbarr).