Skip to main content

Software Migration

Introduction​

In this article, you will learn the recommended options for migrating from old Operating Systems to modern Linux-based options. This article includes OS and Software Stack considerations.

Operating System​

You Are Using Windows Embedded Compact (WEC)​

There are 3 main options in this case:

Migrate to Torizon - Recommended (click for details)

Toradex recommends moving your OS to Torizon OS:

  • Torizon OS is our operating system that powers Torizon, a DevOps platform that simplifies the development and maintenance of embedded Linux software
  • Torizon was designed with our Windows Embedded Compact (WEC) customers in mind. It allows you to move your embedded systems to Linux while keeping Windows as the development environment. At the same time, Torizon allows you to tap into the large Linux ecosystem. Learn more on our website
  • Torizon will give a broader range of options for module replacement and scalability options over the long run: future-proof migration
  • We are happy to discuss efforts to migrate to Torizon: contact us

Check the comparison section for detailed information.

Continue on Windows Embedded Compact (click for details)

We are still supporting WEC. However, there are two major limitations:

  • End-of-life for WEC is 2028. Toradex will continue to sell the specific computer on modules with the WEC2013 runtime license until either the SoM reaches EOL or May 31th 2028, whatever date is earlier
  • It is available only on i.MX6 based SoMs, which limits the performance range

Check the comparison section for detailed information.

Migrate to Win IoT (click for details)

Althought its is possible to move to Win IoT, there are a few drawbacks to consider:

  • It is not open-source and has an associated licensing cost
  • Higher-cost hardware due to higher effective system requirements
  • Limited SoC and peripheral support
  • Limited ecosystem
  • Although WEC-based apps can run in Win IoT via emulation, this can cause a performance overhead and possible hardware access limitations

Check the comparison section for detailed information.

You Are Using Linux​

There are 2 options in this case:

Continue Using Toradex BSP (click for details)

We recommend upgrading to our current Linux BSP for the best performance, security, and feature support.

  • Upgrading to the latest Toradex BSP should be the lowest effort path
  • The migration process will involve upgrading the software stack to ensure compatibility with the latest BSP version, in addition to adjustments to the application for any potential OS/hardware changes

Check the comparison section for detailed information.

Migrate to Torizon (click for details)

We also offer Torizon OS, a ready-to-use Linux Distribution:

  • Simpler OS configuration, no need to use the Yocto Project for most cases
  • Integrated with Visual Studio Code for fast development
  • Built-in features: Remote Access, Device and Fleet Management and Monitoring, and Secure Online and Offline Updates, integrated with the Torizon Cloud

Check the comparison section for detailed information.

Linux x Windows EC/IoT​

There are a few notable aspects of each operating systems that can help you to make aware decisions.

Embedded Linux built with YoctoTorizon OSWindows Embedded CompactWindows IoT
CostFreeFreePaid LicensePaid License
Ready to UseNoYesYesYes
Availability
  • Open-source
  • Maintained jointly by many companies and individuals
  • The vast amount of stakeholders in Linux guarantees that the project won't be abandoned any time soon
  • Open-source
  • Built with Yocto, which means it can be easily maintained indefinitely
  • It is fully supported by Toradex
  • Quarterly releases, leveraging from Linux Kernel security fixes​
  • Proprietary
  • Continuity is tied to strategic decisions of a single maintaining company. Lifespan of the product can be reduced
Device Drivers Availability
&
Ecosystem
  • Several companies with the expertise to develop new drivers, checkout the Toradex Partner network

  • Large ecosystem of open-source and proprietary libraries for most applications:

    • Machine learning
    • GUI development
    • Much more
  • Wide and growing ecosystem of fully open-source drivers for peripheral devices

  • Linux-based, built on top of the Toradex BSP
  • Torizon OS leverages the Linux ecosystem advantages
  • Container-based application development and deployment
  • Limited ecosystem
  • Offers for AI Frameworks are more widely available in Linux
  • Limited ecosystem
  • Offers for AI Frameworks are more widely available in Linux
Hardware Support
  • Supported in all modern Toradex modules
  • Is only available for i.MX6 based SoMs, which limits the available performance range
  • Limited SoC support, compared to Linux-based options, which support a wider range of platforms
  • Does not work on TI SoCs, used on the Verdin AM62
  • Limited support for peripherals
Customization
  • You build your custom Linux image using the Toradex BSP
  • Fully customizable using the Yocto Project
  • Simpler OS configuration without the need to use the Yocto Project - TorizonCore Builder
  • Can be further customized using the Yocto Project
Limited customization:
  • Registry Edit
  • AutoRun
  • AutoCopy
  • Display Tweaky tool
  • Platform Builder​
Limited customization:
  • Windows Assessment and Deployment kit (ADK)
  • Preninstallation Environment (PE)
  • Configuration Designer
Hardware Overhead
&
Footprint
  • Very small system overhead
  • Lower cost hardware compared to more resource-intensive Operating Systems
  • Small system overhead
  • Lower cost hardware compared to more resource-intensive Operating Systems
  • Increased hardware resources needed, may require the use of higher-cost hardware
  • Increased hardware resources needed, may require the use of higher-cost hardware
  • Although WEC-based apps can run in Win IoT via emulation, this can cause a performance overhead and possible hardware access limitations
Development Environment
&
Connected Services
  • DIY - You choose your SDK, IDE, and debug tools
  • No out-of-the-box integration with any IoT platform
  • Visual Studio Code Extension for fast development and remote debugging​
  • You can keep Windows as the development environment
  • Torizon Cloud, a secure cloud solution for updates, remote access, and device management/monitoring, is natively integrated
  • Learn more about Torizon or contact us
  • Visual Studio for fast development and remote debugging​
  • Visual Studio for fast development and remote debugging​
  • While it is claimed to have seamless integration with the Windows ecosystem, many of the Azure IoT services are running on Linux virtualized environments on top of Windows (various abstraction layers), increasing hardware resource demand. In comparison, Linux containers run natively in Torizon OS

Software Stack in Linux​

By changing the Operating System to a Linux-based option, you will most likely need to adapt the software stack. Some motivators may be:

  • The hardware access APIs changes between operating systems
  • The available frameworks for specific resources, such as Graphical User Interfaces (GUIs) can be different between operating systems
  • When coming from Windows Embedded Compact OS, where resources such as runtime libraries and other Windows components may be used, migration will involve re-writing code to use other resources available in Linux

When completing the migration, being in a Linux environment will help make sure that your application stack is easier to maintain, update, scale, and more reusable for future projects.

tip
  • It is important to note: with Torizon, it is possible to use the Windows development environment to write, debug, and deploy software to Embedded Linux Devices. The Visual Studio Code along with the Torizon IDE extension provides easy remote deployment and debugging capabilities. It also has a great collection of templates for an easy start

  • Open-source licensing is crucial when working with Linux, as this operating system and many of its resources are open-source. However, utilizing it does not necessarily require your project to be open-source as well. There are different open-source licenses many of which allow the use of open-source resources in closed-source applications

Check the next sections to understand the recommended options for this migration.

You Are Using C/C++​

Continue with C/C++ (click for details)

This scenario will require few changes, since it is possible and recommended to continue using C/C++.

  • Migration will involve adapting the Windows-specific components, such as Microsoft C and C++ (MSVC) runtime libraries and Hardware Access Libraries
  • If a cross-platform GUI framework such as the Qt Framework was used, then you will be reusing a great portion of the GUI code from the original application. If it is not the case, migration to Qt is a great option

We have partners that can help you with this migration. Check the Need help? section.

Check the Supported Languages and GUI Options for more information.

You Are Using .NET​

There are 2 options in this case:

Continue with .NET (click for details)
  • It could be possible to reuse your C# code using the Mono Framework. If your code is close to basic .NET, then it should be possible to reuse a great part of it. Windows resources are not available with Mono, which can require changes in the code. It will heavily depend on which resources are being used
  • You can migrate your entire application to one of the .NET Core available frameworks, so you can leverage the familiarity with .NET
  • You can also port the business logic part to one of the available .NET Core frameworks and use a different one for the Graphical User Interface, being it a Qt based application or even a Web-based GUI (Blazor, React, Angular, Vue.js, or Flutter)

We have partners that can help you with this migration. Check the need help? section.

Check the Supported Languages and GUI Options for more information.

Migrate to C/C++ (click for details)

There are a number of reasons for migrating to C/C++ if you are going to re-write your application:

  • Performance improvements
  • Smaller footprint
  • Better use of hardware

For GUI development, the Qt framework has a Widget-based GUI, providing a familiar development experience to the one in .NET.

We have partners that can help you with this migration. Check the need help? section.

Check the Supported Languages and GUI Options for more information.

Supported Languages​

For this migration process, C/C++ and .NET are the most likely choices for your project or parts of it.

  • While .NET can enable you to reuse some of your code, other aspects should be considered. See a summary of relevant features:

    • If you have applications using .NET, leveraging a skilled team for this framework is the main advantage
    • .NET provides great development productivity, with great tools and libraries
    • Increased footprint
    • Options with hardware-accelerated GUIs
    • Active community of developers
  • Using C/C++ will require rewriting your code if it is .NET based, but there could be many reasons for it:

    • Great performance will be easier to achieve
    • Can reduce the footprint of your application
    • There are useful tools and resources distributed as C/C++ libraries
    • Options with hardware-accelerated GUIs
    • Active community of developers

Despite the sound reasons for using C/C++ or .NET, if for any circumstances you conclude it is reasonable to use different stacks, there are other options in the Linux environment. Some examples are Java, Python, Rust, Node, and other JavaScript/TypeScript based frameworks.

Check our documentation on Programming Languages with Linux.

GUI Options​

  • Qt Framework is one of the recommended choices for writing lightweight and modern GUIs in Embedded Linux. It is intuitive for people coming from a Windows environment since it can provide Widget-based GUIs. If you want to move to a smartphone-like GUI experience, it also provides QML-based GUIs

  • .NET

    • Mono - Provides simple GUIs like Windows Forms. It may have performance limitations in case of more complex GUIs, as it runs without hardware-acceleration
    • UNO - It is a great option if you were using xaml in previous projects. It provides a Windows-familiar development experience with the same namespace
    • AvaloniaUI - Provides richer GUIs. It is also a great option if you were using xaml in previous projects, despite using a different namespace. There is also a paid service for porting apps using Windows Forms
    • Blazor - Provides a great developing experience in C#, while depending on a WebApp-based GUI. It can provide a shorter path for migration while adding overhead to run the browser needed by the GUI
    • You can have a practical insight in this Video Comparison
  • WebApp-based User Interfaces: Linux also provides options for web-based user interfaces using HTML, CSS, and JavaScript. You can use web frameworks like Blazor, Flutter, Angular, React, or Vue.js to create browser-based interfaces that can be accessed locally or remotely. Despite the overhead to run a browser, it can provide a faster development time and more language options, while maintaining a .NET-based business logic

  • Other frameworks such as Slint and Flutter are available, but they can demand a greater adaptation effort for people coming from .NET

It is important to note that both Qt and some of the .NET frameworks provide hardware-accelerated graphics.

Check our documentation about GUI development on Torizon and on a custom Linux image.

Hardware Access​

  • Hardware Access could be performed in Windows Embedded Compact using Toradex Libraries
  • Hardware Access in Linux is simple and we provide great documentation for Torizon and custom embedded Linux images
  • It is possible that you won't need to re-write the entire code used to access the peripherals, since there is a great collection of ready-to-use drivers for Linux
  • Pinout configuration for your particular hardware is accomplished in Linux by using data structures called device trees. Check out how this is done in Torizon

Real-Time​

  • Real-Time Linux provides low-latency capabilities in Linux, using a Linux kernel with the PREEMPT_RT patch
  • FreeRTOS is supported in the Cortex M cores - learn more on our Cortex M Documentation
  • Hard Real-Time - QNX supports Colibri iMX8X and Apalis iMX8 - Verdin iMX8MP will be supported soon

Check our documentation on Real Time Applications.

Need Help?​

If you need help migrating your software, we have a great Partner Network. They can help you with Operating System customization, application development, and porting. They have extensive experience migrating applications from WEC to Linux and can save you time and resources.

Contact Us so we can connect you with a suitable partner.



Send Feedback!