In this episode, guest Phillip Johnston, an embedded developer and consultant, discusses remote monitoring and debugging of internet-connected devices, storage of data in embedded systems, the cost of implementing features in-house vs using a solution, implementing firmware updates and ensuring device safety, the role of humans in automated systems, and the tension between automation and manual control in IoT.
Automating software quality enforcement practices in embedded systems is crucial, especially for IoT devices, and requires efficient remote monitoring and debugging capabilities.
Effective storage requirements for remote monitoring vary based on device criticality and cost, and careful consideration should be given to optimize storage usage and choose the right memory type to avoid issues like wear-out.
Deep dives
Building a System for Automated Software Quality Enforcement
The podcast episode discusses the importance of automating software quality enforcement practices in embedded systems. The guest, Philip Johnston, founder of Embedded Artistry, emphasizes the need for efficient remote monitoring and debugging of devices, particularly in the context of Internet of Things (IoT) devices. The discussion highlights the various types of information that can be collected from devices, such as debug logs, crash dumps, and metrics on device behavior and usage. It also delves into the key components required for effective remote monitoring, including device capabilities, communication links, and central monitoring services. The episode further explores the benefits of automated issue reporting, deduplication, and prioritization, along with the value of obtaining real-time feedback to make informed decisions. Overall, the podcast underscores the importance of collecting and utilizing device data to improve software quality and make informed development decisions.
Storage Considerations in Remote Monitoring
This segment focuses on the storage requirements for effective remote monitoring of devices. It differentiates storage needs based on device criticality, cost, and information priority. For safety-critical devices, having sufficient storage to collect and store detailed information such as crash dumps and debug logs is crucial. In contrast, cost-sensitive connected devices may have limited storage capacity, requiring prioritization of information and the use of techniques like rolling log files. The discussion emphasizes the need to carefully consider storage options, especially in devices with limited memory sizes. It highlights strategies to optimize storage usage, including the replacement of strings with numeric identifiers and the use of RAM for temporary data storage. Additionally, the importance of choosing the right memory type to avoid issues like wear-out is mentioned. The segment concludes by stressing the significance of allocating development resources for designing and managing effective storage capabilities.
Communication Links and Data Transfer Considerations
This part of the podcast episode delves into communication links and the challenges associated with transferring data from devices to central monitoring services. It distinguishes between wired and wireless connections, including common radio protocols like Wi-Fi, Bluetooth, LORA, Thread, and Zigbee. It highlights the need to ensure sufficient communication bandwidth to gather data such as debugging information, crash dumps, and metrics from embedded systems. The episode also covers cellular and satellite communications, which present limitations in terms of lower bandwidth and higher communication costs. Strategies like compressing data and prioritizing critical information are recommended for devices operating in these constraints. The segment emphasizes the need to consider factors like data transmission costs and occurrence rates when designing communication strategies and emphasizes the trade-off between storage and connectivity requirements.
Choosing between Building or Buying an Automated Solution
This segment discusses the decision-making process of whether to build or buy an automated solution for remote monitoring and quality enforcement. It explains the benefits of using existing service providers like Memfault, Goliath, or Mender, who offer comprehensive solutions with SDKs and server infrastructure. It highlights the cost and time considerations involved in self-developing such capabilities in-house. The discussion emphasizes the advantages of purchasing a service offering, which provides immediate access to critical functionalities, ongoing support, and the ability to scale the solution to handle large fleets of devices. A cautionary advice against underestimating the effort and costs associated with building an in-house solution is provided. It further highlights that larger companies with multiple product lines might choose to develop their own internal version of such solutions, whereas startups or smaller companies would find it more beneficial to leverage existing service providers.