The idea for this posting started when I read New approaches to dominate in embedded development article. Then I found some ther related articles and here is the result: long article.
Embedded devices, or embedded systems, are specialized computer systems that constitute components of larger electromechanical systems with which they interface. The advent of low-cost wireless connectivity is altering many things in embedded development: With a connection to the Internet, an embedded device can gain access to essentially unlimited processing power and memory in cloud service – and at the same time you need to worry about communication issues like breaks connections, latency and security issues.
Those issues are espcecially in the center of the development of popular Internet of Things device and adding connectivity to existing embedded systems. All this means that the whole nature of the embedded development effort is going to change. A new generation of programmers are already making more and more embedded systems. Rather than living and breathing C/C++, the new generation prefers more high-level, abstract languages (like Java, Python, JavaScript etc.). Instead of trying to craft each design to optimize for cost, code size, and performance, the new generation wants to create application code that is separate from an underlying platform that handles all the routine details. Memory is cheap, so code size is only a minor issue in many applications.
Historically, a typical embedded system has been designed as a control-dominated system using only a state-oriented model, such as FSMs. However, the trend in embedded systems design in recent years has been towards highly distributed architectures with support for concurrency, data and control flow, and scalable distributed computations. For example computer networks, modern industrial control systems, electronics in modern car,Internet of Things system fall to this category. This implies that a different approach is necessary.
Companies are also marketing to embedded developers in new ways. Ultra-low cost development boards to woo makers, hobbyists, students, and entrepreneurs on a shoestring budget to a processor architecture for prototyping and experimentation have already become common.If you look under the hood of any connected embedded consumer or mobile device, in addition to the OS you will find a variety of middleware applications. As hardware becomes powerful and cheap enough that the inefficiencies of platform-based products become moot. Leaders with Embedded systems development lifecycle management solutions speak out on new approaches available today in developing advanced products and systems.
Traditional approaches
C/C++
Tradionally embedded developers have been living and breathing C/C++. For a variety of reasons, the vast majority of embedded toolchains are designed to support C as the primary language. If you want to write embedded software for more than just a few hobbyist platforms, your going to need to learn C. Very many embedded systems operating systems, including Linux Kernel, are written using C language. C can be translated very easily and literally to assembly, which allows programmers to do low level things without the restrictions of assembly. When you need to optimize for cost, code size, and performance the typical choice of language is C. Still C is today used for maximum efficiency instead of C++.
C++ is very much alike C, with more features, and lots of good stuff, while not having many drawbacks, except fror it complexity. The had been for years suspicion C++ is somehow unsuitable for use in small embedded systems. At some time many 8- and 16-bit processors were lacking a C++ compiler, that may be a concern, but there are now 32-bit microcontrollers available for under a dollar supported by mature C++ compilers.Today C++ is used a lot more in embedded systems. There are many factors that may contribute to this, including more powerful processors, more challenging applications, and more familiarity with object-oriented languages.
And if you use suitable C++ subset for coding, you can make applications that work even on quite tiny processors, let the Arduino system be an example of that: You’re writing in C/C++, using a library of functions with a fairly consistent API. There is no “Arduino language” and your “.ino” files are three lines away from being standard C++.
Today C++ has not displaced C. Both of the languages are widely used, sometimes even within one system – for example in embedded Linux system that runs C++ application. When you write a C or C++ programs for modern Embedded Linux you typically use GCC compiler toolchain to do compilation and make file to manage compilation process.
Most organization put considerable focus on software quality, but software security is different. When the security is very much talked about topic todays embedded systems, the security of the programs written using C/C++ becomes sometimes a debated subject. Embedded development presents the challenge of coding in a language that’s inherently insecure; and quality assurance does little to ensure security. The truth is that majority of today’s Internet connected systems have their networking fuctionality written using C even of the actual application layer is written using some other methods.
Java
Java is a general-purpose computer programming language that is concurrent, class-based and object-oriented.The language derives much of its syntax from C and C++, but it has fewer low-level facilities than either of them. Java is intended to let application developers “write once, run anywhere” (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation.Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of computer architecture. Java is one of the most popular programming languages in use, particularly for client-server web applications. In addition to those it is widely used in mobile phones (Java apps in feature phones, ) and some embedded applications. Some common examples include SIM cards, VOIP phones, Blu-ray Disc players, televisions, utility meters, healthcare gateways, industrial controls, and countless other devices.
Some experts point out that Java is still a viable option for IoT programming. Think of the industrial Internet as the merger of embedded software development and the enterprise. In that area, Java has a number of key advantages: first is skills – there are lots of Java developers out there, and that is an important factor when selecting technology. Second is maturity and stability – when you have devices which are going to be remotely managed and provisioned for a decade, Java’s stability and care about backwards compatibility become very important. Third is the scale of the Java ecosystem – thousands of companies already base their business on Java, ranging from Gemalto using JavaCard on their SIM cards to the largest of the enterprise software vendors.
Although in the past some differences existed between embedded Java and traditional PC based Java solutions, the only difference now is that embedded Java code in these embedded systems is mainly contained in constrained memory, such as flash memory. A complete convergence has taken place since 2010, and now Java software components running on large systems can run directly with no recompilation at all on design-to-cost mass-production devices (consumers, industrial, white goods, healthcare, metering, smart markets in general,…) Java for embedded devices (Java Embedded) is generally integrated by the device manufacturers. It is NOT available for download or installation by consumers. Originally Java was tightly controlled by Sun (now Oracle), but in 2007 Sun relicensed most of its Java technologies under the GNU General Public License. Others have also developed alternative implementations of these Sun technologies, such as the GNU Compiler for Java (bytecode compiler), GNU Classpath (standard libraries), and IcedTea-Web (browser plugin for applets).
My feelings with Java is that if your embedded systems platform supports Java and you know hot to code Java, then it could be a good tool. If your platform does not have ready Java support, adding it could be quite a bit of work.
Increasing trends
Databases
Embedded databases are coming more and more to the embedded devices. If you look under the hood of any connected embedded consumer or mobile device, in addition to the OS you will find a variety of middleware applications. One of the most important and most ubiquitous of these is the embedded database. An embedded database system is a database management system (DBMS) which is tightly integrated with an application software that requires access to stored data, such that the database system is “hidden” from the application’s end-user and requires little or no ongoing maintenance.
There are many possible databases. First choice is what kind of database you need. The main choices are SQL databases and simpler key-storage databases (also called NoSQL).
SQLite is the Database chosen by virtually all mobile operating systems. For example Android and iOS ship with SQLite. It is also built into for example Firefox web browser. It is also often used with PHP. So SQLite is probably a pretty safe bet if you need relational database for an embedded system that needs to support SQL commands and does not need to store huge amounts of data (no need to modify database with millions of lines of data).
If you do not need relational database and you need very high performance, you need probably to look somewhere else.Berkeley DB (BDB) is a software library intended to provide a high-performance embedded database for key/value data. Berkeley DB is written in Cwith API bindings for many languages. BDB stores arbitrary key/data pairs as byte arrays. There also many other key/value database systems.
RTA (Run Time Access) gives easy runtime access to your program’s internal structures, arrays, and linked-lists as tables in a database. When using RTA, your UI programs think they are talking to a PostgreSQL database (PostgreSQL bindings for C and PHP work, as does command line tool psql), but instead of normal database file you are actually accessing internals of your software.
Software quality
Building quality into embedded software doesn’t happen by accident. Quality must be built-in from the beginning. Software startup checklist gives quality a head start article is a checklist for embedded software developers to make sure they kick-off their embedded software implementation phase the right way, with quality in mind
Safety
Traditional methods for achieving safety properties mostly originate from hardware-dominated systems. Nowdays more and more functionality is built using software – including safety critical functions. Software-intensive embedded systems require new approaches for safety. Embedded Software Can Kill But Are We Designing Safely?
IEC, FDA, FAA, NHTSA, SAE, IEEE, MISRA, and other professional agencies and societies work to create safety standards for engineering design. But are we following them? A survey of embedded design practices leads to some disturbing inferences about safety.Barr Group’s recent annual Embedded Systems Safety & Security Survey indicate that we all need to be concerned: Only 67 percent are designing to relevant safety standards, while 22 percent stated that they are not—and 11 percent did not even know if they were designing to a standard or not.
If you were the user of a safety-critical embedded device and learned that the designers had not followed best practices and safety standards in the design of the device, how worried would you be? I know I would be anxious, and quite frankly. This is quite disturbing.
Security
The advent of low-cost wireless connectivity is altering many things in embedded development – it has added to your list of worries need to worry about communication issues like breaks connections, latency and security issues. Understanding security is one thing; applying that understanding in a complete and consistent fashion to meet security goals is quite another. Embedded development presents the challenge of coding in a language that’s inherently insecure; and quality assurance does little to ensure security.
Developing Secure Embedded Software white paper explains why some commonly used approaches to security typically fail:
MISCONCEPTION 1: SECURITY BY OBSCURITY IS A VALID STRATEGY
MISCONCEPTION 2: SECURITY FEATURES EQUAL SECURE SOFTWARE
MISCONCEPTION 3: RELIABILITY AND SAFETY EQUAL SECURITY
MISCONCEPTION 4: DEFENSIVE PROGRAMMING GUARANTEES SECURITY
Some techniques for building security to embedded systems:
Use secure communications protocols and use VPN to secure communications
The use of Public Key Infrastructure (PKI) for boot-time and code authentication
Establishing a “chain of trust”
Process separation to partition critical code and memory spaces
Leveraging safety-certified code
Hardware enforced system partitioning with a trusted execution environment
Plan the system so that it can be easily and safely upgraded when needed
Flood of new languages
Rather than living and breathing C/C++, the new generation prefers more high-level, abstract languages (like Java, Python, JavaScript etc.). So there is a huge push to use interpreted and scripting also in embedded systems. Increased hardware performance on embedded devices combined with embedded Linux has made the use of many scripting languages good tools for implementing different parts of embedded applications (for example web user interface). Nowadays it is common to find embedded hardware devices, based on Raspberry Pi for instance, that are accessible via a network, run Linux and come with Apache and PHP installed on the device. There are also many other relevant languages
One workable solution, especially for embedded Linux systems is that part of the activities organized by totetuettu is a C program instead of scripting languages (Scripting). This enables editing operation simply script files by editing without the need to turn the whole system software again. Scripting languages are also tools that can be implemented, for example, a Web user interface more easily than with C / C ++ language. An empirical study found scripting languages (such as Python) more productive than conventional languages (such as C and Java) for a programming problem involving string manipulation and search in a dictionary.
Scripting languages have been around for a couple of decades Linux and Unix server world standard tools. the proliferation of embedded Linux and resources to merge systems (memory, processor power) growth has made them a very viable tool for many embedded systems – for example, industrial systems, telecommunications equipment, IoT gateway, etc . Some of the command language is suitable for up well even in quite small embedded environments.
I have used with embedded systems successfully mm. Bash, AWK, PHP, Python and Lua scripting languages. It works really well and is really easy to make custom code quickly .It doesn’t require a complicated IDE; all you really need is a terminal – but if you want there are many IDEs that can be used. High-level, dynamically typed languages, such as Python, Ruby and JavaScript. They’re easy—and even fun—to use. They lend themselves to code that easily can be reused and maintained.
There are some thing that needs to be considered when using scripting languages. Sometimes lack of static checking vs a regular compiler can cause problems to be thrown at run-time. But it is better off practicing “strong testing” than relying on strong typing. Other ownsides of these languages is that they tend to execute more slowly than static languages like C/C++, but for very many aplications they are more than adequate. Once you know your way around dynamic languages, as well the frameworks built in them, you get a sense of what runs quickly and what doesn’t.
Bash and other shell scipting
Shell commands are the native language of any Linux system. With the thousands of commands available for the command line user, how can you remember them all? The answer is, you don’t. The real power of the computer is its ability to do the work for you – the power of the shell script is the way to easily to automate things by writing scripts. Shell scripts are collections of Linux command line commands that are stored in a file. The shell can read this file and act on the commands as if they were typed at the keyboard.In addition to that shell also provides a variety of useful programming features that you are familar on other programming langauge (if, for, regex, etc..). Your scripts can be truly powerful. Creating a script extremely straight forward: It can be created by opening a separate editor such or you can do it through a terminal editor such as VI (or preferably some else more user friendly terminal editor). Many things on modern Linux systems rely on using scripts (for example starting and stopping different Linux services at right way).
The most common type of shell script is a bash script. Bash is a commonly used scripting language for shell scripts. In BASH scripts (shell scripts written in BASH) users can use more than just BASH to write the script. There are commands that allow users to embed other scripting languages into a BASH script.
There are also other shells. For example many small embedded systems use BusyBox. BusyBox providesis software that provides several stripped-down Unix tools in a single executable file (more than 300 common command). It runs in a variety of POSIX environments such as Linux, Android and FreeeBSD. BusyBox become the de facto standard core user space toolset for embedded Linux devices and Linux distribution installers.
Shell scripting is a very powerful tool that I used a lot in Linux systems, both embedded systems and servers.
Lua
Lua is a lightweight cross-platform multi-paradigm programming language designed primarily for embedded systems and clients. Lua was originally designed in 1993 as a language for extending software applications to meet the increasing demand for customization at the time. It provided the basic facilities of most procedural programming languages. Lua is intended to be embedded into other applications, and provides a C API for this purpose.
Lua has found many uses in many fields. For example in video game development, Lua is widely used as a scripting language by game programmers. Wireshark network packet analyzer allows protocol dissectors and post-dissector taps to be written in Lua – this is a good way to analyze your custom protocols.
There are also many embedded applications. LuCI, the default web interface for OpenWrt, is written primarily in Lua. NodeMCU is an open source hardware platform, which can run Lua directly on the ESP8266 Wi-Fi SoC. I have tested NodeMcu and found it very nice system.
PHP
PHP is a server-side HTML embedded scripting language. It provides web developers with a full suite of tools for building dynamic websites but can also be used as a general-purpose programming language. Nowadays it is common to find embedded hardware devices, based on Raspberry Pi for instance, that are accessible via a network, run Linux and come with Apache and PHP installed on the device. So on such enviroment is a good idea to take advantage of those built-in features for the applications they are good – for building web user interface. PHP is often embedded into HTML code, or it can be used in combination with various web template systems, web content management system and web frameworks. PHP code is usually processed by a PHP interpreter implemented as a module in the web server or as a Common Gateway Interface (CGI) executable.
Python
Python is a widely used high-level, general-purpose, interpreted, dynamic programming language. Its design philosophy emphasizes code readability. Python interpreters are available for installation on many operating systems, allowing Python code execution on a wide variety of systems. Many operating systems include Python as a standard component; the language ships for example with most Linux distributions.
Python is a multi-paradigm programming language: object-oriented programming and structured programming are fully supported, and there are a number of language features which support functional programming and aspect-oriented programming, Many other paradigms are supported using extensions, including design by contract and logic programming.
Python is a remarkably powerful dynamic programming language that is used in a wide variety of application domains. Since 2003, Python has consistently ranked in the top ten most popular programming languages as measured by the TIOBE Programming Community Index. Large organizations that make use of Python include Google, Yahoo!, CERN, NASA. Python is used successfully in thousands of real world business applications around globally, including many large and mission-critical systems such as YouTube.com and Google.com.
Python was designed to be highly extensible. Libraries like NumPy, SciPy and Matplotlib allow the effective use of Python in scientific computing. Python is intended to be a highly readable language. Python can also be embedded in existing applications and hasbeen successfully embedded in a number of software products as a scripting language. Python can serve as a scripting language for web applications, e.g., via mod_wsgi for the Apache web server.
Python can be used in embedded, small or minimal hardware devices. Some modern embedded devices have enough memory and a fast enough CPU to run a typical Linux-based environment, for example, and running CPython on such devices is mostly a matter of compilation (or cross-compilation) and tuning. Various efforts have been made to make CPython more usable for embedded applications.
For more limited embedded devices, a re-engineered or adapted version of CPython, might be appropriate. Examples of such implementations include the following: PyMite, Tiny Python, Viper. Sometimes the embedded environment is just too restrictive to support a Python virtual machine. In such cases, various Python tools can be employed for prototyping, with the eventual application or system code being generated and deployed on the device. Also MicroPython and tinypy have been ported Python to various small microcontrollers and architectures. Real world applications include Telit GSM/GPRS modules that allow writing the controlling application directly in a high-level open-sourced language: Python.
Python on embedded platforms? It is quick to develop apps, quick to debug – really easy to make custom code quickly. Sometimes lack of static checking vs a regular compiler can cause problems to be thrown at run-time. To avoid those try to have 100% test coverage. pychecker is a very useful too also which will catch quite a lot of common errors. The only downsides for embedded work is that sometimes python can be slow and sometimes it uses a lot of memory (relatively speaking). An empirical study found scripting languages (such as Python) more productive than conventional languages (such as C and Java) for a programming problem involving string manipulation and search in a dictionary. Memory consumption was often “better than Java and not much worse than C or C++”.
JavaScript and node.js
JavaScript is a very popular high-level language. Love it or hate it, JavaScript is a popular programming language for many, mainly because it’s so incredibly easy to learn. JavaScript’s reputation for providing users with beautiful, interactive websites isn’t where its usefulness ends. Nowadays, it’s also used to create mobile applications, cross-platform desktop software, and thanks to Node.js, it’s even capable of creating and running servers and databases! There is huge community of developers. JavaScript is a high-level language.
Its event-driven architecture fits perfectly with how the world operates – we live in an event-driven world. This event-driven modality is also efficient when it comes to sensors.
Regardless of the obvious benefits, there is still, understandably, some debate as to whether JavaScript is really up to the task to replace traditional C/C++ software in Internet connected embedded systems.
It doesn’t require a complicated IDE; all you really need is a terminal.
JavaScript is a high-level language. While this usually means that it’s more human-readable and therefore more user-friendly, the downside is that this can also make it somewhat slower. Being slower definitely means that it may not be suitable for situations where timing and speed are critical.
JavaScript is already in embedded boards. You can run JavaScipt on Raspberry Pi and BeagleBone. There are also severa other popular JavaScript-enabled development boards to help get you started: The Espruino is a small microcontroller that runs JavaScript. The Tessel 2 is a development board that comes with integrated wi-fi, an ethernet port, two USB ports, and companion source library downloadable via the Node Package Manager. The Kinoma Create, dubbed the “JavaScript powered Internet of Things construction kit.”The best part is that, depending on the needs of your device, you can even compile your JavaScript code into C!
JavaScript for embedded systems is still in its infancy, but we suspect that some major advancements are on the horizon.We for example see a surprising amount of projects using Node.js.Node.js is an open-source, cross-platform runtime environment for developing server-side Web applications. Node.js has an event-driven architecture capable of asynchronous I/O that allows highly scalable servers without using threading, by using a simplified model of event-driven programming that uses callbacks to signal the completion of a task. The runtime environment interprets JavaScript using Google‘s V8 JavaScript engine.Node.js allows the creation of Web servers and networking tools using JavaScript and a collection of “modules” that handle various core functionality. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world. Modern desktop IDEs provide editing and debugging features specifically for Node.js applications
JXcore is a fork of Node.js targeting mobile devices and IoTs. JXcore is a framework for developing applications for mobile and embedded devices using JavaScript and leveraging the Node ecosystem (110,000 modules and counting)!
Why is it worth exploring node.js development in an embedded environment? JavaScript is a widely known language that was designed to deal with user interaction in a browser.The reasons to use Node.js for hardware are simple: it’s standardized, event driven, and has very high productivity: it’s dynamically typed, which makes it faster to write — perfectly suited for getting a hardware prototype out the door. For building a complete end-to-end IoT system, JavaScript is very portable programming system. Typically an IoT projects require “things” to communicate with other “things” or applications. The huge number of modules available in Node.js makes it easier to generate interfaces – For example, the HTTP module allows you to create easily an HTTP server that can easily map the GET
method specific URLs to your software function calls. If your embedded platform has ready made Node.js support available, you should definately consider using it.
Future trends
According to New approaches to dominate in embedded development article there will be several camps of embedded development in the future:
One camp will be the traditional embedded developer, working as always to craft designs for specific applications that require the fine tuning. These are most likely to be high-performance, low-volume systems or else fixed-function, high-volume systems where cost is everything.
Another camp might be the embedded developer who is creating a platform on which other developers will build applications. These platforms might be general-purpose designs like the Arduino, or specialty designs such as a virtual PLC system.
This third camp is likely to become huge: Traditional embedded development cannot produce new designs in the quantities and at the rate needed to deliver the 50 billion IoT devices predicted by 2020.
Transition will take time. The enviroment is different than computer and mobile world. There are too many application areas with too widely varying requirements for a one-size-fits-all platform to arise.
Sources
Most important information sources:
New approaches to dominate in embedded development
A New Approach for Distributed Computing in Embedded Systems
New Approaches to Systems Engineering and Embedded Software Development
Embracing Java for the Internet of Things
Embedded Linux – Shell Scripting 101
Embedded Linux – Shell Scripting 102
Embedding Other Languages in BASH Scripts
PHP Integration with Embedded Hardware Device Sensors – PHP Classes blog
JavaScript: The Perfect Language for the Internet of Things (IoT)
Anyone using Python for embedded projects?
JavaScript: The Perfect Language for the Internet of Things (IoT)
MICROCONTROLLERS AND NODE.JS, NATURALLY
Node.JS Appliances on Embedded Linux Devices
The smartest way to program smart things: Node.js
Embedded Software Can Kill But Are We Designing Safely?
DEVELOPING SECURE EMBEDDED SOFTWARE
1,686 Comments
Tomi Engdahl says:
Give your Arduino project a chatGPT AI brain – for free
https://www.youtube.com/watch?v=dv9cyqVv0CI
This Arduino lesson was created by Programming Electronics Academy. We are an online education company who seeks to help people learn about electronics and programming through the ubiquitous Arduino development board.
**We have no affiliation whatsoever with Arduino LLC, other than we think they are cool.**
00:00 Introduction
00:12 Project Overview
00:35 Project Map
01:23 Actual Demo
02:09 We’ve made contact…
02:48 Existential AI fear…
03:08 Software Overview
04:08 Library Specifics
04:50 Earn 1 Gold Coin $$
05:19 Best Arduino Video yet…
Tomi Engdahl says:
Answering the Question: Does a Refrigerator Light Go Out When Door Closes?
March 31, 2023
A student project uses basic sensors and a microcontroller to verify if the light really goes out when the door closes.
https://www.mwrf.com/technologies/test-measurement/article/21262460/microwaves-rf-answering-the-question-does-a-refrigerator-light-go-out-when-door-closes?utm_source=RF+MWRF+Wireless+for+Consumers&utm_medium=email&utm_campaign=CPS230328125&o_eid=7211D2691390C9R&rdx.identpull=omeda|7211D2691390C9R&oly_enc_id=7211D2691390C9R
Tomi Engdahl says:
For new hardware companies, waiting is the hardest part
https://www.techspot.com/news/97992-new-hardware-companies-waiting-hardest-part.html
Software can be patched in real-time, but once hardware goes out the door there is no way to fix it
In context: The biggest difference between building hardware and software is the amount of time it takes to get to first revenue. There are no easy ways to shorten this, but there are ways to adapt and ease the path to revenue growth.
We obviously have strong biases when it comes to the benefits of investing in hardware versus investing in software. And we have some strong opinions on the investment cases for each being much more similar than the common wisdom holds. Nonetheless, there are obvious differences between the two, and we want to explore those differences with the end goal of finding ways to de-risk hardware investing, or the least, finding accommodations to level out long-term outcomes.
Tomi Engdahl says:
PCIe For Hackers: Extracting The Most
https://hackaday.com/2023/03/30/pcie-for-hackers-extracting-the-most/
So, you now know the basics of approaching PCIe, and perhaps you have a PCIe-related goal in mind. Maybe you want to equip a single-board computer of yours with a bunch of cheap yet powerful PCIe WiFi cards for wardriving, perhaps add a second NVMe SSD to your laptop instead of that Ethernet controller you never use, or maybe, add a full-size GPU to your Raspberry Pi 4 through a nifty adapter. Whatever you want to do – let’s make sure there isn’t an area of PCIe that you aren’t familiar of.
Tomi Engdahl says:
Why SOSA® is driving the future course of embedded military electronics
https://www.mrcy.com/resourcehub/mercury-systems-blog/why-sosa-is-driving-the-future-course-of-embedded-military-electronics?utm_campaign=pla_mixed_signal&utm_medium=print&utm_source=collateral&utm_term=MAE_ED_MRF_personify&utm_content=Why-SOSA-is-driving-the-future-course-of-embedded-military-electronics
In 2013, the U.S. Department of Defense (DoD) issued a mandate to incorporate Open Systems Architecture principles within procurement requirements for defense hardware and software. OSA requires the use of existing open standards for well-defined, modular hardware and software components that can be sourced from multiple vendors. OSA hardware platforms should be reusable for quick-reaction mission needs, feature upgrades and new technology insertion. These advantages reduce development risks and help ensure significantly longer operational lifecycles.
How did DoD services respond to the OSA mandate?
Three U.S. services (Army, Navy and Air Force) began developing standards that embraced OSA principles to meet future procurement needs of deployed systems for their respective services. The Army’s CCDC (Combat Capabilities Development Command) developed CMOSS (C4ISR/EW Modular Open Suite of Standards), which is based on other open standards, including OpenVPX, MORA, VICTORY, REDHAWK and SCA.
NAVAIR (Naval Air Systems Command) created HOST (Hardware Open Systems Technology) for airborne and ground vehicle mission systems. It divides hardware into three tiers: 1) the platform (airframe, vehicle, etc.), 2) the system enclosure and, 3) boards, with the latter two tiers being subsets of OpenVPX.
The Air Force’s OMS (Open Mission Systems) initiative incorporates open standards, including SOA, UCI, and FACE, all for standardizing messages, command and control mission information for avionics systems.
What led to SOSA?
While each service made significant progress in advancing OSA principles, they did so through different initiatives that often shared many common open standards like OpenVPX, and mandates tailored for service-specific platform requirements.
After recognizing this common ground, the DoD and each of the services acknowledged a strong need to promote a single, common initiative to define acquisition activities across all three armed services. In early 2017, the DoD issued an SBIR solicitation for Sensor Open Systems Architecture (SOSA) Architectural Research. This resulted in the formation of the SOSA Consortium managed by The Open Group, a large organization with strict and well-defined practices, policies and procedures for standards development efforts.
Who participates in SOSA?
A primary mandate of the SOSA Consortium is broad participation, commitment and contribution from the DoD, Army, Navy and Air Force, as well as industry, academia and other government organizations. As of this writing, SOSA membership is headed by 11 sponsor organizations including eight from the Army, Navy and Air Force, plus three prime contractors.
What are the objectives and benefits of SOSA?
Major objectives include development and adoption of open systems architecture standards for C4ISR to provide a common, multi-purpose backbone for radar, EO/IR, SIGINT, EW and countermeasure systems. The follow-on benefits of SOSA include platform affordability, rapid fielding, re-configurability, easier insertion of new technology, extended lifecycles and re-purposing of hardware, firmware and software.
The initial significant byproduct of the SOSA Technical Working Group is the SOSA Technical Standard 1.0, released in September 2021, that documents the SOSA Architecture. This is a modular system structure, with tight integration within modules for encapsulating functionality and behaviors, yet well-defined interfaces. These modules must be based on open, published standards with consensus-based influence stakeholders directing the evolution and a strict conformance validation process.
The SOSA technical standard 1.0 is here, what’s next?
Now that SOSA 1.0 is here and products are being developed in alignment with it, the next step is establishing a conformance program
Meet the new 8257A SOSA aligned development system
https://www.mrcy.com/resourcehub/mercury-systems-blog/meet-the-new-8257a-sosa-aligned-development-system?utm_campaign=pla_mixed_signal&utm_medium=print&utm_source=collateral&utm_term=MAE_ED_MRF_personify&utm_content=Meet-the-new-8257A-SOSA-aligned-development-system
Get to know the new 8257A SOSA aligned development system, debuted live at the 59th Annual AOC International Symposium. This single-slot 3U VPX development chassis features SMA connectors and two NPO connectors for two 100 GigE optical interfaces on the front panel, and connectors for the 10 GigE, the 40 GigE, and the 1 GigE signals both in copper and in optical on the rear panel.
Vodcast Highlights
What is SOSA?
SOSA is now a new DOD initiative that’s intended to make insertion of new technology very easy in defense applications. It’s intended to reduce costs for the military and to extend the life cycle of equipment.
What other SOSA aligned cards does Mercury support?
Two from the RFSOC family – the Model 5550 and the 5553 – and two from the Vertex UltraScale+ family – the Model numbers 5585 and 5586. Plus the new Model 5560 that has a versatile HBM FPGA processor.
Tomi Engdahl says:
Delivering RF signal processing solutions to the edge with MOSA
https://www.mrcy.com/company/blogs/delivering-rf-signal-processing-solutions-edge-mosa?utm_campaign=pla_mixed_signal&utm_medium=print&utm_source=collateral&utm_term=MAE_ED_MRF_personify&utm_content=Delivering-RF-signal-processing-solutions-to-the-edge-with-MOSA
Today’s pace of technology development means the traditional approach of custom-designed modules and subsystems is too slow, but Modular Open System Architecture (MOSA) approaches can deliver on system demands without sacrificing performance or scalability.
Customers are trying to acquire and to generate signals in the range of 2 GHz to 18 GHz and do that with an instantaneous bandwidth throughout that range of 2 GHz. They also need to perform signal processing on the received signal before it gets sent out as a transmit signal. Usually that’s done in an FPGA. The time it takes between the input and the output has to be extremely short, which means low latency.
Distributed processing at the edge: Mercury talks RF at the 2022 International Microwave Symposium
https://www.mrcy.com/company/blogs/distributed-processing-edge-mercury-talks-rf?utm_campaign=pla_mixed_signal&utm_medium=print&utm_source=collateral&utm_term=MAE_ED_MRF_personify&utm_content=Distributed-processing-at-the-edge:-Mercury-talks-RF
Tomi Engdahl says:
https://www.uusiteknologia.fi/2023/04/05/nykyelektroniikan-suunnittelukoulu-osa-2-kohti-protoa-piireista-moduuleihin-ja-ohjelmointiin/
Tomi Engdahl says:
mail2code
https://hackaday.io/project/190612-mail2code
Mail your code to my microcontroller and see what happens via webcam.
One hardware setup for many students, availability: Worldwide 24/7
All you need to teach or study how to write code for a microcontroller is:
1.) A computer that can be used to write and save simple text files
2.) A microcontroller.
Wait! Instead of buying a microcontroller, you can use mine even though I live thousands of miles away. All you have to do is:
1.) Mail the text file with your code to my server
2.) Wait until the resulting video appears automatically on my server’s page.
The project teaches old technologies new tricks to teach new students how to do coding.
Details
My setup is as follows:
An Arduino UNO (could be any microcontroller that can be programmed via command line tools) is connected to a Raspberry Pi (could be any computer running a Debian based Linux).
The Raspberry Pi looks for new mail in fixed intervals (2 minutes or so) with “fetchmail”.
If an Email with an attached *.ino file is detected, the attachment is compiled and the resulting hex file is uploaded to the Arduino UNO.
In parallel with uploading the code, a webcam is started.
After a given interval (1min), the recording it stopped and the resulting video file is stored on the Raspberry Pi
The Raspberry Pi connects to my Internet server to upload the video file, the original code file and the updated webpage.
Done!
On the website you can now (process takes about 5 to 10 minutes) watch what your code does on my Arduino UNO.
To try it out, visit:
http://h1i1.de/mail2code/ArduinoUno/ArduinoUno.html
Tomi Engdahl says:
https://hackaday.com/2023/04/18/linux-fu-reading-your-memorys-memory/
Tomi Engdahl says:
https://hackaday.com/2022/11/03/m-2-for-hackers-connectors/
Tomi Engdahl says:
Creating Bug-Free Embedded Software
April 24, 2023
Editor Bill Wong talks about tools for creating reliable embedded software applications in this Electronic Design TechXchange webinar.
https://www.electronicdesign.com/resources/webinars/article/21264567/creating-bugfree-embedded-software
Summary
Programmers would love to deliver bug-free code. I know I would. The challenge is in the details. If it was easy, then we would not have a need for the Common Vulnerabilities and Exposures (CVE) program to track bugs on a global basis.
There are many ways to address the creation of applications that will not fail or work improperly. However, challenges crop up when using programming languages like C. Bill Wong, Editor at Electronic Design, takes a look at the options and issues from static-analysis tools to new programming languages like Rust. He also touches on the rise of machine learning and artificial intelligence and how they are coming into play for programmers and embedded developers.
https://www.cve.org/
Tomi Engdahl says:
CH32V003 microcontroller for 20p! I just moved on from Arduino…
https://www.youtube.com/watch?v=XyIm5qlg7cY
Amazing little 20p microcontroller that worked pretty much out of the box. There is an integrated development environment for it called MounRiver (go figure) that just worked and was fairly easy to use with lots of examples. I had the code for a basic device up and running in half an hour.
more details and EN datasheet and reference manual here: GitHub.com/openwch/ch32v003
manufacturer’s website here: HTTPS:/www.wch.cn
All the code I have written for this project is here:
https://github.com/Blakesands/CH32V003
it includes drivers for leds, digipots, mosfets, sensors etc
Tomi Engdahl says:
The green code is the device designer’s secret weapon – design perfects energy efficiency
https://www.etteplan.com/stories/green-code-device-designers-secret-weapon-design-perfects-energy-efficiency
Sustainability in manufacturing – not just a trend, but the key to success
https://www.etteplan.com/stories/sustainability-manufacturing-not-just-trend-key-success
Tomi Engdahl says:
https://www.ipc.org/ipc-certifications
Tomi Engdahl says:
Secure Development
https://www.insta.fi/en/secure-development-lifecycle-sdl?utm_term=iec%2062443&utm_campaign=Kyber+-+Konsultointi+-+Secure+Development+Lifecycle+EN&utm_source=adwords&utm_medium=ppc&hsa_acc=3322246292&hsa_cam=18889977582&hsa_grp=142842247345&hsa_ad=634453249820&hsa_src=g&hsa_tgt=kwd-382332412529&hsa_kw=iec%2062443&hsa_mt=p&hsa_net=adwords&hsa_ver=3&gclid=EAIaIQobChMIrIehn5_g_QIVWUWRBR2U4QUzEAAYASAAEgL_OvD_BwE
The best time to fix vulnerabilities is before they are even created. The modern way to build secure systems is to include security in every step of the product development process.
Our Secure Development Lifecycle (SDL) approach is based in the industry leading standard IEC 62443-4-1. We can help you with specific details or walk you through the process of implementing a SDL from start to finish.
We firmly believe that secure development isn’t something that can be outsourced. Instead we are here to improve the internal capabilities of our customers.
Theory
Implementing SDL according to 62443-4-1 is fairly simple in theory. There are 46 different requirements that your development team needs to meet in addition to their regular work.
Practice
It can be difficult to make the secure development processes part of the regular routines of the developers. It’s not unusual to see companies which have a SDL process in place on paper, but developers don’t have enough time or motivation to follow them in practice.
Tomi Engdahl says:
https://en.wikipedia.org/wiki/IEC_62443
Tomi Engdahl says:
https://www.uusiteknologia.fi/2023/05/08/nykyelektroniikan-suunnittelukoulu-osa-3-kotelointi-laitekokoonpano-ja-serfioinnit/
Tomi Engdahl says:
The 8-Bit MCU’s Analog Evolution and New Role in Electronics
May 2, 2023
Though 8-bit microcontrollers have been around for nearly five decades, new product innovations and applications such as EVs, e-bikes, home/industrial automation, and IoT devices have grown exponentially, fueling demand for these small, inexpensive MCUs.
https://www.electronicdesign.com/technologies/analog/article/21265095/microchip-technology-the-8bit-mcus-analog-evolution-and-new-role-in-electronics?utm_source=EG+ED+Analog+%26+Power+Source&utm_medium=email&utm_campaign=CPS230427058&o_eid=7211D2691390C9R&rdx.identpull=omeda|7211D2691390C9R&oly_enc_id=7211D2691390C9R
Tomi Engdahl says:
Ohjelmoi liikeanturi helposti C-kielellä
https://etn.fi/index.php/13-news/14940-ohjelmoi-liikeanturi-helposti-c-kielellae
Yhä useampi sovellus kaipaa tuekseen liikeanturin tuottamaa dataa, mutta sitä hyödyntävän järjestelmän ohjelmointi voi olla työläs prosessi. STMicroelectonics helpottaa prosessia uusilla työkaluillaan, joilla anturien tuottaman datan prosessointi voidaan ohjelmointi tutusti C-kielellä.
Työkaluilla onnistuu älykkään ISPU-anturiprosessorin ohjelmointi, joka on sulautettu yhtiön uuden sukupolven MEMS-pohjaisiin liikenatureihin ISM330IS ja LSM6DSO16IS. Työkalut ja ohjelmisto auttavat ISPU-prosessoria käsittelemään liikkeisiin liittyviä työkuormia, kuten toiminnan tunnistusta ja poikkeamien havaitsemista suoraan anturissa.
Kehittäjät voivat ohjelmoida ISPU-prosessoria komentoriviliittymästä (CLI) tai Eclipse-pohjaisesta ympäristöstä, kuten STM32CubeIDE, ja käyttää graafista käyttöliittymää, kuten AlgoBuilder ja Unicleo. X-CUBE-ISPU-ohjelmistopaketti sisältää malleja ja esimerkkiprojekteja sekä käyttövalmiita kirjastoja, joiden avulla kehittäjät ymmärtävät nopeasti, miten anturien ISPU:ta käytetään ja ohjelmoidaan, ja joita voidaan käyttää lähtökohtana mukautettujen algoritmien toteuttamiseen.
Tomi Engdahl says:
https://hackaday.com/2023/05/06/the-new-hotness/
Back in the old times, I used to be a die-hard Atmel AVR fan for small projects, and an STM32 fan for anything larger. And I’ll freely admit, I got stuck in my ways. The incredible abundance of dev boards in the $2 range also helped keep me lazy. I had my thing, and I was fine sticking with it, admittedly due to the low price of those little blue pills.
An IN-12B Nixie tube on a compact driver PCBAnd then came the drought, and like everyone else, my stockpile of microcontrollers started to dwindle. Replacements at $9 just weren’t an option, so I started looking around. And it’s with no small bit of shame that I’ll admit that I hadn’t been keeping up with the changes as much as I should have. Nowadays, it’s all ESP32s and RP2040s over here, and granted there’s a bit of a price bump, but the performance is there in abundance. But I can’t help feeling like I’m a few years back of the cutting edge.
So when I see work like what [CNLohr] and [Bitluni] are doing with the ultra-cheap CH32V003 microcontrollers, it makes me think that I need to start filling in gaps in my comfortable working-set of chips again
Tomi Engdahl says:
A Literate Assembly Language
https://hackaday.com/2023/05/08/a-literate-assembly-language/
A recent edition of [Babbage’s] The Chip Letter discusses the obscurity of assembly language. He points out, and I think correctly, that assembly language is more often read than written, yet nearly all of them are hampered by obscurity left over from the days when punched cards had 80 columns and a six-letter symbol was all you could manage in the limited memory space of the computer. For example, without looking it up, what does the ARM instruction FJCVTZS do? The instruction’s full name is Floating-point Javascript Convert to Signed Fixed-point Rounding Towards Zero. Not super helpful.
But it did occur to me that nothing is stopping you from writing a literate assembler that is made to be easier to read. First, most C compilers will accept some sort of asm statement, and you could probably manage that with compile-time string construction and macros. However, I think there is a better possibility.
Reuse, Recycle
Since I sometimes develop new CPU architectures, I have a universal cross assembler that is, honestly, an ugly hack, but it works quite well. I’ve talked about it before, but if you don’t want to read the whole post about it, it uses some simple tricks to convert standard-looking assembly language formats into C code that is then compiled.
The Unnecessary Obscurity of Assembly Language
We still sometimes need to read assembly language. Why do we make it so hard?
https://thechipletter.substack.com/p/the-unnecessary-obscurity-of-assembly
Tomi Engdahl says:
VPX Chassis Manager Meets SOSA, Supports MOSA
Elma Electronic rolled out a VPX chassis manager that meets the Sensor Open Systems Architecture (SOSA) standard and the Modular Open Systems Approach (MOSA) program from the U.S. Department of Defense.
Ideal for a wide range of harsh embedded systems in the military and defense sectors, the VITA-based device comes as a standalone unit or can be mounted on a carrier card. The system is equipped with 16 digital inputs and 16 configurable digital outputs that provide a high degree of system management functions.
The unit’s main function is to make sure the embedded system is operating correctly. It maintains an inventory of all components and sensors on the chassis, as well as manages event and failure reports from the boards plus any intelligent field replaceable units (FRUs) in the chassis. The unit can adjust the fan speed for over/undertemperature conditions and report or shut down the system due to overvoltage, undervoltage, or undercurrent.
Other features include power management and cooling control, event sensor logging, electronic keying, and card hot-swap monitoring. A redundant intelligent platform management bus (IPMB) maximizes uptime of the system. Operating temperature ranges from −40 to +85°C.
A web-based GUI monitors up to 12 fans, eight analog inputs, and six external thermistors. The parameters that can be monitored include health, voltage, fan RPM, power, and temperature, as well as serial and port numbers and software versions.
https://www.electronicdesign.com/resources/products-of-the-week/media-gallery/21265339/electronic-design-products-of-the-week-sicbased-power-supply-io-link-analog-converters?utm_source=EG+ED+Analog+%26+Power+Source&utm_medium=email&utm_campaign=CPS230504032&o_eid=7211D2691390C9R&rdx.identpull=omeda|7211D2691390C9R&oly_enc_id=7211D2691390C9R&id=21265339&slide=3
Tomi Engdahl says:
https://hackaday.com/2023/05/10/tiny-microcontroller-uses-real-time-operating/
Tomi Engdahl says:
https://hackaday.com/2023/05/10/exploiting-hardware-level-parallelism-in-the-manticore-hardware-accelerated-rtl-simulator/
Tomi Engdahl says:
Nykyelektroniikan suunnittelukoulu nyt nettilehtenä
https://www.uusiteknologia.fi/2023/05/15/nykyelektroniikan-suunnittelukoulu-nyt-nettilehtena/
Uusimmalla älyelektroniikalla ja sulautetuilla mikroprosessoreilla voidaan toteuttaa entistä paremmin toimivia laitteita ja entistä pienempinä. Nyt Uusiteknologia.fi:n nykyelektroniikan koko kolmiosainen juttusarja on julkaistu pdf- ja issuu-nettilehtinä.
https://www.uusiteknologia.fi/wp-content/uploads/2023/05/1_2023_low.pdf
https://issuu.com/uusiteknologia.fi/docs/1_2023
Tomi Engdahl says:
https://www.uusiteknologia.fi/wp-content/uploads/2023/05/1_2023_low.pdf
Tomi Engdahl says:
Sulautetuissa mennään yhä enemmän 64-bittisiin
https://etn.fi/index.php/13-news/14985-sulautetuissa-mennaeaen-yhae-enemmaen-64-bittisiin
Sulautettujen sovellusten monimutkaistuminen ja prosessoitavan datamäärän kasvu on johtanut siihen, että yhä useammin halutaan valita 64-bittinen prosessori. Tämä näkyy myös työkalujen tarjonnassa.
Saksalainen SEGGER on yksi kehitystyökaluja tarjoava yritys. Nyt se ilmoittaa, että suositut Embedded Studio -työkalut sisältävät tuen 64-bittisille ARMv8-A-suorittimille, kuten Cortex-A53, Cortex-A57 ja Cortex-A72.
Embedded Studio sisältää kaikki työkalut ja ominaisuudet, joita tarvitaan ammattimaiseen sulautettuun C- ja C++-ohjelmointiin ja -kehitykseen. Sen mukana tulee SEGGERin erittäin optimoidut emRun-ajoympäristö ja emFloat-liukulukukirjastot sekä SEGGERin älykäs Linker, jotka kaikki on kehitetty alusta alkaen erityisesti sulautettuja järjestelmiä varten.
https://www.segger.com/products/development-tools/embedded-studio/
Tomi Engdahl says:
https://etn.fi/index.php/13-news/14987-joustavammin-koodia-mikro-ohjaimille
Uudet MPLAB ICD 5 ja MPLAB PICkit 5 ovat piirin sisäisen debuggauksen ja ohjelmoinnin työkaluja, jotka molemmat sisältävät etäohjelmointiominaisuudet parantamaan käyttökokemusta.
Tomi Engdahl says:
https://www.edn.com/why-embedded-chipmakers-are-acquiring-ml-software-firms/
Tomi Engdahl says:
OSM – powerful embedded compute in a tiny package
https://embedded.avnet.com/osm/
Avnet Embedded is the leading developer of the OSM standard in modular embedded computing design. OSM modules are designed for the smallest possible form factor without compromise on versatility. The modules can easily be adapted to work inside products of all shapes and sizes. Browse the range below and get in touch with us to discuss how we can help you use OSM modules to empower your product design.
Open Standard Module (OSM) // SDT.05
https://sget.org/standards/osm/
Tomi Engdahl says:
OSM – powerful embedded compute in a tiny package
https://embedded.avnet.com/osm/
Avnet Embedded is the leading developer of the OSM standard in modular embedded computing design. OSM modules are designed for the smallest possible form factor without compromise on versatility. The modules can easily be adapted to work inside products of all shapes and sizes. Browse the range below and get in touch with us to discuss how we can help you use OSM modules to empower your product design.
Open Standard Module (OSM) // SDT.05
https://sget.org/standards/osm/
Tomi Engdahl says:
https://etn.fi/index.php/13-news/14987-joustavammin-koodia-mikro-ohjaimille
Tomi Engdahl says:
Sulautetuissa mennään yhä enemmän 64-bittisiin
https://etn.fi/index.php/13-news/14985-sulautetuissa-mennaeaen-yhae-enemmaen-64-bittisiin
Tomi Engdahl says:
Simuloi 64-bittistä Arm-koodia PC:llä
https://etn.fi/index.php/13-news/15017-simuloi-64-bittistae-arm-koodia-pc-llae
Tomi Engdahl says:
Elintoimintojen kliiniset mittaukset yhdellä piirillä
https://etn.fi/index.php/tekniset-artikkelit/15018-elintoimintojen-kliiniset-mittaukset-yhdellae-piirillae
Tomi Engdahl says:
https://hackaday.com/2023/06/03/software-driving-hardware/
Tomi Engdahl says:
C++17’s Useful Features For Embedded Systems
https://hackaday.com/2023/06/04/c17s-useful-features-for-embedded-systems/
Although the world of embedded software development languages seem to span somewhere between ASM and C89 all the way to MicroPython, there is a lot to be said for a happy medium between ease of development and features that makes the software more robust without adding overhead or bloat to the final firmware image.
This is where C++ has objectively many advantages over even C99, and as [Çağlayan Dökme] argues in a recent blog post C++17 adds many developer critter comforts to C++90 and the more recent C++11 C++14 standards.
First stepping back a generation (technically two, with C++20 also being a thing already), the addition of binary literals (e.g. 0b1010’1100) in C++14 and the expanded use of constexpr is addressed, with the latter foreshadowing C++17’s increased focus on compile time optimizations. A new attribute in C++17 that is part of this is [[nodiscard]], which when added before to the return type of a function or method requires the return value to be used in some manner, much like with functions in Ada (contrasted with procedures).
C++17’s Useful Features for Embedded
https://interrupt.memfault.com/blog/cpp-17-for-embedded
Tomi Engdahl says:
How to become an Embedded Software Engineer – 5 STEP ROADMAP to learn Embedded Software Engineering
https://www.youtube.com/watch?v=IOs6QDI-2MY
You want to become an embedded software engineer? Then this video is for you, if you don’t know what embedded systems are but you are interested in working for Tesla, BMW, Boing, Space X, Airbus, or Apple just to name a few companies watch the video!
If you already are a software developer and want to learn more about software engineering, I will talk about the five steps you have to take to become a self-taught embedded software engineer.
Tomi Engdahl says:
Software Engineering vs Embedded Software Engineering
https://www.youtube.com/watch?v=3e2ozrMZXHM
Hey all! Today I’m talking about some differences between embedded software engineering and regular software engineering.
Tomi Engdahl says:
5 Things Every New Embedded Systems Engineer Should Know
https://www.youtube.com/watch?v=MERQitqaWoA
Tomi Engdahl says:
PERFORMANCE Problem Solving in C: Floating Point Bit Manipulation
https://www.youtube.com/watch?v=EfuldxjEM1Q
Tomi Engdahl says:
Why Embedded Systems is an Amazing Career: A Professional’s Take
https://www.youtube.com/watch?v=O_iiELtTEoo
Tomi Engdahl says:
Want Lower Power? Add More Cores!
https://hackaday.com/2023/06/06/want-lower-power-add-more-cores/
[Jacob Beningo] over at Embedded.com recently posted his thoughts on how to do a low-power microcontroller design. On the surface, some of his advice seems a little counter-intuitive. Even he admits, “…I’m suggesting adding more cores! I must be crazy!” There are a few tips, but the part he’s talking about is that you can save power by using CPUs with multiple cores and optimizing for speed.
This seems strange since you think of additional cores and speed to consume more power. But the idea is that the faster you get your work done, the faster you can go to sleep. We’ve seen that in our own projects — faster work means more napping, and that’s good for power consumption.
Of course, it isn’t just that simple. Multiple cores don’t help you if you don’t use them. The overarching goal is to get done quickly so you can get back to sleep.
5 practical tips for low-power design
https://www.embedded.com/5-practical-tips-for-low-power-design/
Tomi Engdahl says:
Designing an embedded system for low-power usage is not just a requirement for battery-operated devices but also for grid-connected devices. As you have seen in this post, low-power design is not just a matter of selecting the right hardware but also selecting and implementing the right software architecture. Most hardware in the microcontroller space today has similar energy usage profiles. The trick is to write software that utilizes the internal hardware most efficiently to keep the CPU disabled as much as possible.
https://www.embedded.com/5-practical-tips-for-low-power-design/
Tomi Engdahl says:
How Arm Cortex-M0+ MCUs optimize general-purpose processing, sensing and control
https://e2e.ti.com/blogs_/b/process/posts/how-arm-cortex-m0-mcus-optimize-general-purpose-processing-sensing-and-control?HQS=epd-msp-procbr-gpplatform_mspm0_arm-exexnl-ta-electronicdesign_06-wwe_int&DCM=yes&dclid=CNux3d3Hv_8CFaBIkQUdqc0AIA
Microcontrollers (MCUs) in embedded systems are the equivalent of air traffic control in a busy airport. MCUs sense their operating environment, take actions based on those observations, and communicate with related systems. They manage and control signals in an almost endless list of electronics, from digital thermometers to smoke detectors to heating, ventilation and air-conditioning motors.
Embedded designers need more flexibility during the design process to maintain a system’s affordability and longevity. With currently available MCU portfolios, designers are limited in how much hardware and code they can reuse across current and future designs, and have limited computing, integrated analog and packaging options. This limited flexibility often means that designers must source MCUs from multiple manufacturers and spend additional time reprogramming to meet the unique needs of each design, adding to development costs as well as overall system cost and complexity.
The MSPM0 Arm® Cortex®-M0+ MCUs help solve these challenges by giving designers more options, more design flexibility, and more intuitive software and tools. In this article, I’ll explore what “more” really means in these contexts, and the potential applications these MCUs unlock in terms of a wider range of integrated analog options and processing capabilities.
Tomi Engdahl says:
Hardware/Software Co-Design: The Five Core Principles
June 13, 2023
Developing a solution across geographic time zones, cultures, and skillsets can be difficult. Following these core principles to optimize hardware and software system components can help maximize success from the outset.
https://www.electronicdesign.com/technologies/eda/article/21267771/recogni-hardwaresoftware-codesign-the-five-core-principles?utm_source=EG+ED+Connected+Solutions&utm_medium=email&utm_campaign=CPS230608131&o_eid=7211D2691390C9R&rdx.identpull=omeda|7211D2691390C9R&oly_enc_id=7211D2691390C9R
What you’ll learn:
What are the five core principles of hardware/software co-design?
How do these principles help build a geographically diverse engineering organization that can successfully develop complex solutions while meeting ambitious performance and development schedule goals?
Hardware/software co-design attempts to optimize the hardware and software components of a complex electronic system while satisfying the project’s goals and design constraints, which usually encompass performance, cost, and power consumption.
This article discusses the five core principles that helped Recogni build a geographically diverse engineering organization that successfully developed a machine-learning (ML) chip while meeting ambitious performance, power-consumption, and development schedule goals. ML software is a rather extreme software case because of the non-deterministic nature of ML development. Experiences with this unique software niche underscore the critical nature of several of these five core principles.
Co-Design Core Principle #1: Determinism
The first core principle of hardware/software co-development is determinism. One way to look at determinism is to ask this question: How confident are you about the predictability of a new task’s achievability (such as implementing a new feature or a new circuit)?
Co-Design Core Principle #2: Communication
Certainly, this isn’t the first article to state the obvious importance of good communication among development team members. However, when discussing hardware/software co-design, we learned that a few specific aspects of team communications should be emphasized.
The first such aspect is the need for over-communication. When dealing with a group of people who think very differently, repetition is extremely important. Repeat, repeat, and repeat.
Co-Design Core Principle #3: Management
Many product development cycles contain critical paths consisting of tasks from different disciplines that might not synchronize well. This temporal mismatch poses a challenge. For example, in Recogni’s experience, precisely time-lined productization doesn’t pair well with ML’s unavoidable and unpredictable need for iterative exploration and innovation.
It’s not uncommon for an ML project’s complexity to suddenly balloon from an easily-done-in-2-weeks, incremental, model-retraining task to a new, from-scratch project involving numerous aspects that must be researched over a period of months.
Solving this temporal mismatch requires two key ingredients:
Project management must profoundly appreciate the respective natures and challenges of all involved disciplines and a slightly more conservative project timeline that accounts for significant critical-path disturbances.
Technical leads managing mixed teams that include ML engineers need to understand that the devil lies in the details and that baby steps and reflecting on the challenges which come with abstraction layers are crucial to successful project completion.
Co-Design Core Principle #4: Beware of Abstraction
Any serious product-level ML development environment requires abstraction because it enables scalability. However, abstraction comes with the often-underestimated risk of wrongly implied automatism and genericness.
Co-Design Core Principle #5: Scope and Focus
There’s a good reason why we consciously and intentionally decided to create a company that builds end-to-end reference systems that span all aspects of a design from sensors in the car, to self-captured data, chip design, neural-network design, compiler tool chain, visualization, etc. This comprehensive scope enables our core teams to develop their respective parts of the stack in the context of a complete, end-to-end system instead of in isolation.
Due to the broad scope of the design, the team can observe the system-level implications of its work. However, the broadened scope delivers additional benefit: It creates a shared narrative for our teams internally. All hardware/software development teams need this shared narrative.
Conclusion
These five core principles should be integrated into every hardware/software development project. As we’ve discovered at Recogni, they’re especially important in the world of ML development. These core principles are designed to emphasize communications and empathy throughout the diverse development team, at the beginning of the project, throughout the project, and continuing all the way to the project’s end.
Tomi Engdahl says:
Sensors Converge 2023
Check out the latest technology at this year’s event
https://www.electronicdesign.com/magazine/51607
Tomi Engdahl says:
SmartBug 2.0 Data-Collection Module Has ML-Equipped IMU
June 8, 2023
Targeting IoT and consumer applications, the SmartBug 2.0 brings improvements and updated features over its initial incarnation.
https://www.electronicdesign.com/technologies/test-measurement/article/21267553/electronic-design-smartbug-20-datacollection-module-has-mlequipped-imu?utm_source=EG+ED+Connected+Solutions&utm_medium=email&utm_campaign=CPS230608131&o_eid=7211D2691390C9R&rdx.identpull=omeda|7211D2691390C9R&oly_enc_id=7211D2691390C9R
Tomi Engdahl says:
ETNdigi: Nopein yhden ytimen mikroprosessori muutamalla eurolla
https://etn.fi/index.php/13-news/15101-etndigi-nopein-yhden-ytimen-mikroprosessori-muutamalla-eurolla
TM32MP13 on STMicroelectronicsin kustannustehokkain teollisuustason mikroprosessori. Cortex-A7-ytimrllä varustettu piiri yltää gigahertsin kellotaajuuteen, vaikka maksaa vain alle neljä dollaria.
ST poisti STM32MP15-piireistä löytyneen Cortex-M4:n ja GPU:n. Vastineeksi parannettiin yhden ytimen suorituskykyä, parannettiin huomattavasti hinta/ominaisuus-suhdetta ja lisättiin uusia suojausominaisuuksia. Näin STM32MP13:sta tehtiin ensimmäinen SESIP Level 3 -sertifioitu mikroprosessori.
STM32MP13 käyttää arkkitehtuuria, joka on suunniteltu tehokkuutta ja saavutettavuutta ajatellen. Esimerkiksi grafiikkasuoritin poistettiin, koska tämän hintaluokan teollisuussovellukset harvoin tarvitsevat sitä. Ethernet-porttien määrä nostettiin kahteen. Uusi liukuhihna merkitsee, että kuvia voidaan käsitellä tehokkaammin jopa 15 ruutua sekunnissa 5 megapikselillä.
Tomi Engdahl says:
COM-HPC Mini – Huipputehoa pienessä koossa
https://etn.fi/index.php/tekniset-artikkelit/15097-com-hpc-mini-huipputehoa-pienessae-koossa