💻 3 Strategies for Handling Errors in Embedded Software
It is very tempting to assume that a system will behave as perfectly in the field as it does on the engineering bench. During development, embedded software is written under the best of conditions.
The developer knows how the system is supposed to work and development usually proceeds smoothly. However, as thousands of devices start to get into the hands of users, the chances that the unexpected will happen becomes statistically more probable. In today’s post, let’s explore the strategies that developers need to write software that can handle unexpected errors.
The way that a developer approaches writing their software is what determines whether their system will recover from errors gracefully or whether it will blowup metaphorically in the user’s face. The key is having the right development attitude that considers what can go wrong and implementing the recovery mechanism while the software is being written.
More information...
#articles #software
It is very tempting to assume that a system will behave as perfectly in the field as it does on the engineering bench. During development, embedded software is written under the best of conditions.
The developer knows how the system is supposed to work and development usually proceeds smoothly. However, as thousands of devices start to get into the hands of users, the chances that the unexpected will happen becomes statistically more probable. In today’s post, let’s explore the strategies that developers need to write software that can handle unexpected errors.
The way that a developer approaches writing their software is what determines whether their system will recover from errors gracefully or whether it will blowup metaphorically in the user’s face. The key is having the right development attitude that considers what can go wrong and implementing the recovery mechanism while the software is being written.
More information...
#articles #software
💻 Green VS Brown Programming Languages
Interesting article about latest tendencies in software development and popularity of programming languages in particular.
The Stack Overflow Developer Survey results are a great source of information about how developers work. The survey results have rankings for The Most Dreaded Programming Languages and The Most Loved Programming Languages.
▫️ The TOP 15 Loved Programming Languages: Rust, TypeScript, Python, Kotlin, Go, Julia, Dart, C#, Swift, JavaScript, SQL, Shell, HTML, Scala, and Haskell.
▫️ The TOP 15 Dreaded Programming Languages: VBA, Objective-C, Perl, Assembly, C, PHP, Ruby, C++, Java, R, Haskell, Scala, HTML, Shell, and SQL.
Joel Spolsky: The reason that (developers) think the old code is a mess is because of a cardinal, fundamental law of programming: It’s harder to read code than to write it.
More information...
#articles #programming #software
Interesting article about latest tendencies in software development and popularity of programming languages in particular.
The Stack Overflow Developer Survey results are a great source of information about how developers work. The survey results have rankings for The Most Dreaded Programming Languages and The Most Loved Programming Languages.
▫️ The TOP 15 Loved Programming Languages: Rust, TypeScript, Python, Kotlin, Go, Julia, Dart, C#, Swift, JavaScript, SQL, Shell, HTML, Scala, and Haskell.
▫️ The TOP 15 Dreaded Programming Languages: VBA, Objective-C, Perl, Assembly, C, PHP, Ruby, C++, Java, R, Haskell, Scala, HTML, Shell, and SQL.
Joel Spolsky: The reason that (developers) think the old code is a mess is because of a cardinal, fundamental law of programming: It’s harder to read code than to write it.
More information...
#articles #programming #software
📄 Rust Language Cheat Sheet
Useful resource providing all the necessary information for Rust programming. The resource frequently updates and can be downloaded as a single .pdf document for offline programming.
More information...
#programming #software #rust
Useful resource providing all the necessary information for Rust programming. The resource frequently updates and can be downloaded as a single .pdf document for offline programming.
More information...
#programming #software #rust
💻 3 Ways to Improve Your Software Development Environment
Leverage a unit test harness
Over the last several years, software development process tools have made huge leaps forward to the point where even the smallest embedded software teams can benefit from using the tools. Test harnesses provide developers with the ability to perform automated regression testing to ensure that the code is working as expected and that no new additions interact with existing code.
Spend less time debugging
According to any number of surveys, and conference talks, the average developer spends about 40 percent of their time debugging. Recovering debug time can benefit by reducing project costs, helping teams deliver on time, reduce stress, and a myriad of other benefits.
Review and improve your processes
The key to sustained success is to have a balanced approach that allows for repeatability but maintains the development team’s flexibility and adaptability.
More information...
#articles #software
Leverage a unit test harness
Over the last several years, software development process tools have made huge leaps forward to the point where even the smallest embedded software teams can benefit from using the tools. Test harnesses provide developers with the ability to perform automated regression testing to ensure that the code is working as expected and that no new additions interact with existing code.
Spend less time debugging
According to any number of surveys, and conference talks, the average developer spends about 40 percent of their time debugging. Recovering debug time can benefit by reducing project costs, helping teams deliver on time, reduce stress, and a myriad of other benefits.
Review and improve your processes
The key to sustained success is to have a balanced approach that allows for repeatability but maintains the development team’s flexibility and adaptability.
More information...
#articles #software
This media is not supported in your browser
VIEW IN TELEGRAM
💻 CanoPy
Canopy is a visualization tool for plotting CAN bus message payloads
A basic PC CAN interface simply dumps the bus’s message traffic into the terminal, while more sophisticated tools organize messages by the address of their intended recipients. Both of these approaches digitally lift the hood and let you examine what your car is thinking, but the wall-of-numbers approach makes finding the patterns that hold the keys to reverse engineering difficult.
Automatically plotting the data with CanoPy makes finding correlations much easier, after which the text-based tools can be used to focus in on a few specific addresses.
More information...
#projects #software #python
Canopy is a visualization tool for plotting CAN bus message payloads
A basic PC CAN interface simply dumps the bus’s message traffic into the terminal, while more sophisticated tools organize messages by the address of their intended recipients. Both of these approaches digitally lift the hood and let you examine what your car is thinking, but the wall-of-numbers approach makes finding the patterns that hold the keys to reverse engineering difficult.
Automatically plotting the data with CanoPy makes finding correlations much easier, after which the text-based tools can be used to focus in on a few specific addresses.
More information...
#projects #software #python
🚀 Exploring the SpaceX software
The actual work of software development by vehicle engineers is largely done using C++, which has been the mainstay of the company’s code since its early days. The software reads text-based configuration files. “We invented simple domain specific languages to express those things, such that other engineers in the company who are not software engineers can maybe configure it.”
Flight software for rockets at SpaceX is structured around the concept of a control cycle. “You read all of your inputs: sensors that we read in through an ADC, packets from the network, data from an IMU, updates from a star tracker or guidance sensor, commands from the ground,” explains Gerding. “You do some processing of those to determine your state, like where you are in the world or the status of the life support system. That determines your outputs – you write those, wait until the next tick of the clock, and then do the whole thing over again.”
More information...
#articles #software
The actual work of software development by vehicle engineers is largely done using C++, which has been the mainstay of the company’s code since its early days. The software reads text-based configuration files. “We invented simple domain specific languages to express those things, such that other engineers in the company who are not software engineers can maybe configure it.”
Flight software for rockets at SpaceX is structured around the concept of a control cycle. “You read all of your inputs: sensors that we read in through an ADC, packets from the network, data from an IMU, updates from a star tracker or guidance sensor, commands from the ground,” explains Gerding. “You do some processing of those to determine your state, like where you are in the world or the status of the life support system. That determines your outputs – you write those, wait until the next tick of the clock, and then do the whole thing over again.”
More information...
#articles #software
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 How SpaceX lands Starship (optimal trajectory)
As part of a personal push to learn more about non-linear control, I have been playing around with a pretty powerful method known as trajectory optimization. Once the base code is set up, it’s fairly easy to go apply to various systems.
While waiting for Starship SN15 to launch (it was in fact scrubbed, sad), I decided to pull together an estimate for some of it’s dynamics and see if I could get my toy 2D simulation to perform that epic flip and land itself.
To my excitement, after some finessing, it worked quite well. But what really surprised me was when I played the output side by side with actual landing footage: it lined up very very well.
To me, this means one of two things: either I got incredibly lucky, or SpaceX is running a very similar optimization on their actual system. I think both are true.
More information...
#articles #control #software
As part of a personal push to learn more about non-linear control, I have been playing around with a pretty powerful method known as trajectory optimization. Once the base code is set up, it’s fairly easy to go apply to various systems.
While waiting for Starship SN15 to launch (it was in fact scrubbed, sad), I decided to pull together an estimate for some of it’s dynamics and see if I could get my toy 2D simulation to perform that epic flip and land itself.
To my excitement, after some finessing, it worked quite well. But what really surprised me was when I played the output side by side with actual landing footage: it lined up very very well.
To me, this means one of two things: either I got incredibly lucky, or SpaceX is running a very similar optimization on their actual system. I think both are true.
More information...
#articles #control #software
This media is not supported in your browser
VIEW IN TELEGRAM
💻 Embedded GUI implementation with Knowcode
GUI implementation is really time consuming. Sometimes it takes longer than the embedded system project itself.
That’s why a group of engineers is creating a technology called KnowCode, which aims to automate GUI implementation based on artificial intelligence technologies.
They are building a software development tool to help embedded engineers speed up GUI implementation through computer vision which automates the time consuming and dull stuff.
The purpose of KnowCode is not to replace drag-and-drop tools, because engineers will always need this kind of tool to fine tune the GUI elements and add events or transitions. The main purpose is to automate the dull task of adding and positioning every element.
More information...
#software #gui
GUI implementation is really time consuming. Sometimes it takes longer than the embedded system project itself.
That’s why a group of engineers is creating a technology called KnowCode, which aims to automate GUI implementation based on artificial intelligence technologies.
They are building a software development tool to help embedded engineers speed up GUI implementation through computer vision which automates the time consuming and dull stuff.
The purpose of KnowCode is not to replace drag-and-drop tools, because engineers will always need this kind of tool to fine tune the GUI elements and add events or transitions. The main purpose is to automate the dull task of adding and positioning every element.
More information...
#software #gui
💻 Useful Tips For Learning Embedded Programming
Good article for beginning in embedded programming with clean explanations, examples with pieces of code, etc.
The list is oriented to programmers like the girl/guy writing their very first lines of code up to experienced programmers from other remote galaxies like web developers. It may be useful to you if you are starting to develop for embedded systems, that go from the simplest Arduino board up to custom boards.
Most of the topics in the list are about the area I cover, that is, the microcontroller/bare-metal area of embedded programming (no high level languages or operating systems), a little on microelectronics and some other non-programming topics worth mentioning.
More information...
#articles #programming #software #beginner
Good article for beginning in embedded programming with clean explanations, examples with pieces of code, etc.
The list is oriented to programmers like the girl/guy writing their very first lines of code up to experienced programmers from other remote galaxies like web developers. It may be useful to you if you are starting to develop for embedded systems, that go from the simplest Arduino board up to custom boards.
Most of the topics in the list are about the area I cover, that is, the microcontroller/bare-metal area of embedded programming (no high level languages or operating systems), a little on microelectronics and some other non-programming topics worth mentioning.
More information...
#articles #programming #software #beginner
📥 Embox - configurable operating system for embedded systems
Embox main idea is using Linux software everywhere including MCUs.
Imagine, you need a single application in the embedded system, but you want to use some libraries (Qt, OpenCV, etc). In the Linux case, you need high-performance hardware. In Embox case you can use the software as bare-metal including the only required system parts.
In other words, Embox is util which allows creating a special distributive for your exact purpose. Although there are kernel, network, file system, standard POSIX library etc. you can accurately configure every module. Therefore it will include only those parts that you wish.
Embox allows you to:
▫️ use low power hardware
▫️ use boards with small resources
▫️ use existing software
▫️ develop your software on Linux
▫️ care less about security because static linking disables executing external software
More information...
#operating_systems #software
Embox main idea is using Linux software everywhere including MCUs.
Imagine, you need a single application in the embedded system, but you want to use some libraries (Qt, OpenCV, etc). In the Linux case, you need high-performance hardware. In Embox case you can use the software as bare-metal including the only required system parts.
In other words, Embox is util which allows creating a special distributive for your exact purpose. Although there are kernel, network, file system, standard POSIX library etc. you can accurately configure every module. Therefore it will include only those parts that you wish.
Embox allows you to:
▫️ use low power hardware
▫️ use boards with small resources
▫️ use existing software
▫️ develop your software on Linux
▫️ care less about security because static linking disables executing external software
More information...
#operating_systems #software
📥 Building a Linux system for the STM32MP1
Series of articles that describes how to build an embedded Linux device based on the STM32MP1 platform, using the Buildroot build system.
Buildroot is a set of Makefiles and script that automates the process of download the source code of the different software components, extract them, configure them, build them and install them.
The hardware platform used in these articles is the STM32MP157-DK2.
More information...
#articles #linux #operating_systems #software #stm32
Series of articles that describes how to build an embedded Linux device based on the STM32MP1 platform, using the Buildroot build system.
Buildroot is a set of Makefiles and script that automates the process of download the source code of the different software components, extract them, configure them, build them and install them.
The hardware platform used in these articles is the STM32MP157-DK2.
More information...
#articles #linux #operating_systems #software #stm32
Use customizable layouts to arrange interactive visualizations,
and quickly understand what your robot is doing.
Foxglove Studio comes with a rich suite of built-in panels that can be arranged into the perfect layout for your task:
▫️ Display your robot in a 3D scene—complete with point clouds, TFs, and a world map.
▫️ Display images from multiple camera feeds, and overlay relevant bounding boxes and labels.
▫️ Plot message values over time, or plot an array of values at each timestamp.
▫️ Track and detect changes in your robot's state.
▫️ Inspect incoming ROS messages in tabular format.
▫️ Drill down into your ROS messages to better understand and debug the state of your robot.
#robots #software
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 Dlib - modern open-source machine learning toolkit written in C++
Dlib is a toolkit containing machine learning algorithms and tools for creating complex software to solve real world problems.
It is used in both industry and academia in a wide range of domains including robotics, embedded devices, mobile phones, and large high performance computing environments. Dlib's open source licensing allows you to use it in any application, free of charge.
Main features:
▫️ Documentation - provides complete and precise documentation for every class and function
▫️ High Quality Portable Code
▫️ Huge Variety of Machine Learning Algorithms
▫️ Image Processing capabilities, such as high quality face recognition
▫️ Graphical User Interfaces
Can be easily implemented on microcontrollers, such as Raspberry Pi - example: video, github.
More information...
#software #machine_learning
Dlib is a toolkit containing machine learning algorithms and tools for creating complex software to solve real world problems.
It is used in both industry and academia in a wide range of domains including robotics, embedded devices, mobile phones, and large high performance computing environments. Dlib's open source licensing allows you to use it in any application, free of charge.
Main features:
▫️ Documentation - provides complete and precise documentation for every class and function
▫️ High Quality Portable Code
▫️ Huge Variety of Machine Learning Algorithms
▫️ Image Processing capabilities, such as high quality face recognition
▫️ Graphical User Interfaces
Can be easily implemented on microcontrollers, such as Raspberry Pi - example: video, github.
More information...
#software #machine_learning
💻 F Prime - Flight Software & Embedded Systems Framework
F Prime is a software framework for the rapid development and deployment of embedded systems and spaceflight applications.
Originally developed at NASA’s Jet Propulsion Laboratory, F´ is open-source software that has been successfully deployed for several space applications.
It has been used for but is not limited to, CubeSats, SmallSats, instruments, and deployable. Framework runs on a wide range of processors, from microcontrollers to multi-core computers.
F´ has the following features:
▫️ Component architecture with well-defined interfaces
▫️ C++ framework providing core capabilities like queues, threads, and operating-system abstraction
▫️ Tools for designing systems and automatically generating code from systems design
▫️ A standard library of flight-worthy components
▫️ Testing tools for unit and system-level testing
More information:
Key features
Official website
GitHub repository
#software #libraries
F Prime is a software framework for the rapid development and deployment of embedded systems and spaceflight applications.
Originally developed at NASA’s Jet Propulsion Laboratory, F´ is open-source software that has been successfully deployed for several space applications.
It has been used for but is not limited to, CubeSats, SmallSats, instruments, and deployable. Framework runs on a wide range of processors, from microcontrollers to multi-core computers.
F´ has the following features:
▫️ Component architecture with well-defined interfaces
▫️ C++ framework providing core capabilities like queues, threads, and operating-system abstraction
▫️ Tools for designing systems and automatically generating code from systems design
▫️ A standard library of flight-worthy components
▫️ Testing tools for unit and system-level testing
More information:
Key features
Official website
GitHub repository
#software #libraries
👍8
📃 Are You Ready for These 2023 Embedded Software Trends?
This post will explore several embedded software trends that will be prevalent in 2023 and that you should keep tabs on.
In particular, the post describes the following aspects:
▫️ Container Adoption
▫️ Reignition of the Programming Language Wars
▫️ A Focus on Security
▫️ Adoption of Agile Methodologies
▫️ Multicore Microcontrollers
These trends come from a generic perspective of the embedded software industry. Our industry, though, is not isolated. Where embedded software goes in the future depends on where the business pressures and the more significant software industry is going. In addition, different teams will have various needs.
More information...
#articles #software #programming
This post will explore several embedded software trends that will be prevalent in 2023 and that you should keep tabs on.
In particular, the post describes the following aspects:
▫️ Container Adoption
▫️ Reignition of the Programming Language Wars
▫️ A Focus on Security
▫️ Adoption of Agile Methodologies
▫️ Multicore Microcontrollers
These trends come from a generic perspective of the embedded software industry. Our industry, though, is not isolated. Where embedded software goes in the future depends on where the business pressures and the more significant software industry is going. In addition, different teams will have various needs.
More information...
#articles #software #programming
👍13👎1
💻 5 Visual Studio code tips for embedded developers
You might have heard a lot of buzz around Visual Studio Code lately. Visual Studio Code has become a popular development environment within the general software industry over the last few years. It’s a bare-bones environment that can be easily customized using extensions and tweaks to the default configuration.
Visual Studio Code is an exciting environment for embedded software developers looking to decouple themselves from their microcontroller vendors’ toolchains and ease integration with CI/CD processes. This post will explore five Visual Studio Code tips to help embedded software developers get the most out of it.
More information...
#articles #programming #software
You might have heard a lot of buzz around Visual Studio Code lately. Visual Studio Code has become a popular development environment within the general software industry over the last few years. It’s a bare-bones environment that can be easily customized using extensions and tweaks to the default configuration.
Visual Studio Code is an exciting environment for embedded software developers looking to decouple themselves from their microcontroller vendors’ toolchains and ease integration with CI/CD processes. This post will explore five Visual Studio Code tips to help embedded software developers get the most out of it.
More information...
#articles #programming #software
👍5
Explore the nuances of firmware static analysis with CodeChecker! Delve into the familiar challenges of C programming, from undefined behavior to memory leaks. This article introduces CodeChecker, an open-source tool built on clang's static analyzer. Uncover the simplicity of integrating CodeChecker into firmware projects to catch bugs before they reach end-users. Navigate false positives with practical strategies like adding assertions and CodeChecker-specific comments. Join the conversation on static analysis tools in the comments and anticipate insights on running analysis in CI. Elevate your coding practices with CodeChecker, bolstering your code's resilience against potential vulnerabilities.
#articles #programming #software #tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👌3
This article offers a detailed walkthrough on establishing a modern development environment tailored for C/C++ projects utilizing Docker containers. It addresses challenges in setting up environments from scratch and provides solutions for efficient development workflows.
What You Will Learn:
The step-by-step guide empowers developers to establish robust development environments, enhancing productivity and code quality in your projects.
Finally, the article equips readers with a practical resource — a special repository containing the components discussed in the article. With its help, developers can explore and implement the concepts presented in the text effectively.
More information:
#projects #articles #software #tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24👌5
CMake, an open-source and cross-platform tool, allows for efficient control over the software compilation process through platform-independent configuration files, generating native makefiles suitable for any compiler environment. This versatility makes CMake a valuable tool for managing complex build environments.
Implementing these tips can streamline the build process for embedded software, making development faster, more efficient, and better suited to modern development practices.
#programming #cmake #software
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14👌4
Hardware often arrives late in product development, but embedded systems engineers can use simulation techniques to test and validate software without physical hardware. These methods accelerate development and improve product reliability.
Implementing these techniques enhances development efficiency, accelerates time to market, and reduces costs by identifying and fixing issues early in the development cycle. Start with basic simulations like functional and behavioral approaches to maximize ROI and project success.
#articles #design #software
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20