Continue reading "Practicalities of Co-locating Tests with Source Code"
Secondary Uses of Manufacturing Tests
31 May 2023 by Phillip JohnstonManufacturing tests and manufacturing firmware aren’t only useful on the production line. Your test stations, test scripts, and firmware can be leveraged to support additional activities without further burdening your software team. Here are additional uses to consider: Collecting Design Data Repair, RMA, and EFFA Processes Reliability Testing Certification Support Quality Assurance Collecting Design Data Your manufacturing tests are a prime data collection resource, and you should take advantage of that. You can get design data for every unit that you build. This allows you to look at performance/behavioral characteristics and distributions across your entire …
Continue reading “Secondary Uses of Manufacturing Tests”
Basic Manufacturing Test Process
31 May 2023 by Phillip JohnstonManufacturing test flows are unique to every device, but there is a common, basic pattern that can be used as a foundation to build from. Basic Test Flow Testing is often broken into two distinct “sections” on the manufacturing line: Board-level testing (“SMT”) Assembled device (“FATP” for “Final Assembly, Test, and Packout”) SMT After SMA, PCBs are typically flashed with manufacturing firmware as a complete “panel” or as individual PCBs. At this time, basic information is provisioned, such as a PCB serial number. Following flashing, the PCBs will go through one or more test steps. …
Continue reading “Basic Manufacturing Test Process”
Manufacturing Devices
31 May 2023 by Phillip Johnston • Last updated 9 September 2024We don’t just design the software and hardware for an embedded device – we need to figure out how to build and sell them at scale, too. This entry collects all of our resources related to the manufacturing process. Table of Contents: Sub-topics Concepts Templates Recommended Reading/Viewing Embedded Artistry Articles on Manufacturing Devices Sub-topics New Product Introduction Process Manufacturing Test Manufacturing Firmware Provisioning Design for Manufacturing Concepts Crash Course on Manufacturing Yield Additional Manufacturing Reporting Concepts Templates Embedded Artistry’s Development Build Inventory Templates for SMA and FATP Test Issue …
Continue reading “Manufacturing Devices”
Memory Testing
27 January 2023 by Phillip Johnston Memory testing is a common activity performed during design, manufacturing, and Power-on Self Testing. Table of Contents: Problems Identified by Memory Testing Memory Testing Techniques Analysis References Problems Identified by Memory Testing Design Identify improper wiring for external memory Identify whether the code to interface with external memory has been implemented correctly Manufacturing Identify improper soldering for external memory Identify failed chips Power-on Self Testing Identify failed hardware and prevent booting Run-time Identify soft memory failures, such as those triggered by radiation Memory Testing Techniques Run as Early as Possible Naive Moving Ones Validating …
Continue reading “Memory Testing”
Minimize Time to Defect Discovery
24 October 2022 by Phillip Johnston • Last updated 26 February 2024 A core axiom of our software engineering philosophy is that we want to minimize time to defect discovery. We have observed that the longer an error remains in a program, the harder it is to fix. The best time to fix an error is immediately after you introduced it. You have the full context loaded into your mind. You understand what you’re trying to do, why you just wrote the code the way you wrote it, and what the target behavior is. The defect is often obvious – …
Continue reading “Minimize Time to Defect Discovery”
Change One Thing at a Time
6 October 2022 by Phillip Johnston • Last updated 10 October 2022 A useful operational rule, especially if you are attempting to employ scientific mindset, is to change only one thing at a time. It doesn’t matter if you are debugging a problem, implementing new code, or following a test driven development (TDD) process – changing one thing at a time is the sanest way to work. The reason is that you are minimizing the surface area for introducing a problem. If something goes wrong and you’ve only changed one thing, you immediately know the source of the problem. If …
Continue reading “Change One Thing at a Time”
When Updating an Untested Module, Take the Opportunity to Add Tests
Continue reading "When Updating an Untested Module, Take the Opportunity to Add Tests"
Mathematical Bug in the Advanced Radiation Detection Capability Data Unit
10 September 2020 by Phillip Johnston • Last updated 15 August 2023 Valarie Aurora related a story about fixing a bug in one of the U.S.’s systems for detecting nuclear explosions, the Advanced Radiation Detection Capability Data Unit (ARDU). The ARDU software was written in Ada in the 1990s, and Valarie notes that this project was about average in its understandability and quality of documentation. Some of the code looked like assembly, some like a series of logic truth tables, and much of it had zero comments. Everyone who had originally written the software had moved on, leaving the maintenance …
Continue reading “Mathematical Bug in the Advanced Radiation Detection Capability Data Unit”
A Case Study on Finding, Fixing, and Testing a Firmware Bug Without Hardware
Continue reading "A Case Study on Finding, Fixing, and Testing a Firmware Bug Without Hardware"
