Embedded Systems
12.2K subscribers
962 photos
201 videos
1 file
649 links
News, articles, guides, analytics, projects and startups from the embedded industry.

Topics of the channel:
◽️ machine learning
◽️ internet of things
◽️ embedded software
◽️ advanced electronics
◽️ new engineering ideas

⤵️ Share and subscribe!
Download Telegram
🧠 Flashlight: Fast and flexible machine learning in C++

Flashlight is a new open source machine learning (ML) library, written entirely in C++, that was built by FAIR to power groundbreaking research by enabling teams to rapidly and easily modify deep and ML frameworks to better fit their needs.

More information...

#articles #machine_learning #software #programming #artificial_intelligence #cpp #libraries
💻 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
💻 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
📄 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
💻 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
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
🚀 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
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
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
💻 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
📥 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
📥 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
💻 Foxglove Studio - open source visualization & debugging tool for robotics

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.

More information...

#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
💻 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
📃 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
💻 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
✍️ Firmware Static Analysis with CodeChecker

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.

More information...

#articles #programming #software #tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Modern C Development Environment

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:
➡️ Setting up 👩‍💻 Docker containers for C/C++ development.
➡️ Integrating 👩‍💻 Visual Studio Code with Docker containers.
➡️ Establishing build systems and performing code formatting/static analysis using clang tools.
➡️ Implementing unit testing with Unity and Ceedling.
➡️ Configuring 😹 GitHub workflows for continuous integration.

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:
🔗 The main article
😹 The GitHub repository

#projects #articles #software #tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🚥 3 tips for using CMake with embedded software

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.

☑️Use Toolchain Files to Simplify Build Configuration:
➡️Different build types (Debug On-Target, Release On-Target, Simulation, Test, and Code Analysis) need specific configurations.
➡️Toolchain files help manage these variations, facilitating cross-compilation and implementation swaps.
➡️Typically, two toolchain files (host and on-target builds) are sufficient.

☑️Automate Build Commands with Custom Scripts:
➡️Avoid memorizing long CMake commands by encapsulating them in scripts.
➡️Custom scripts simplify the build process and reduce errors.
➡️Scripts can include parameters for toolchain files, build types, and other settings, making them useful in CI/CD systems.

☑️Pair CMake with Ninja for Faster Builds:
➡️Ninja is a high-speed build system focused on efficiency.
➡️Using Ninja with CMake can result in x4 to x6 times faster compilation times compared to traditional tools like Make.
➡️Simple setup commands integrate Ninja into the build process, significantly reducing build times and improving development efficiency.

Implementing these tips can streamline the build process for embedded software, making development faster, more efficient, and better suited to modern development practices.

More information...

#programming #cmake #software
Please open Telegram to view this post
VIEW IN TELEGRAM