For Full Details, Visit: https://www.virtuoso-software.com

Virtuoso is an embedded system virtual device framework, allowing any idea for an electronic product to be virtualized for development. The framework is an enabling technology that will transform the development of electronic firmware, altering the state of the art much in the same way that 3D printing has transformed mechanical design.

Left: Physical PCB Hardware & Components. Right: Virtual Components In A Virtuoso Host.
-

Left: Physical PCB Hardware & Components. Right: Virtual Components In A Virtuoso Host.

Virtuoso combines the fun of embedded programming with the power of Microsoft.NET, as well as all of the latest programming design patterns. By virtualizing any hardware, the costs of evaluation boards or in-circuit debuggers, and the headaches of learning microprocessor vendor specific tools simply vanish.

-

Virtuoso consolidates your target hardware, debugging tools, and embedded IDE into a single, streamlined, powerfully efficient workflow.

How does it work?

Developing an embedded application in Virtuoso is just like developing on real hardware, but much faster and easier. Components can be added to your device or changed without the difficulties or costs of hooking up physical hardware, but functions exactly the same. You can write your own components, or use Virtuoso library components off the shelf. When your code is written and tested, it can run on both your virtual device and your physical hardware. The application code has no idea whether it’s talking to ‘real’ hardware or virtual components.

The Framework

The core framework is the central technology for effortlessly developing these so-called “embedded virtual devices”. Without the core framework, setting up the virtual devices would be a tedious nightmare. With the framework, it is extremely easy and intuitive. All development and testing can be done on the virtual device, then ported over to any target microprocessor.

-

Virtuoso virtual device applications run in a local C/C++ project with virtualized hardware, so they are intrinsically hardware independent and compatible with any microprocessor target. Even multiple diverse targets can be run on the same virtual device!

The Content & Component Library

The content library includes a rich selection of common embedded components ready to be added to your virtual embedded device. Let’s say you wanted to start developing an embedded device that had maybe a handful of digital inputs, some LEDs, an analog output or two, and a touch screen. How long should it take you, in an ideal workflow, to have those components available to start interacting with? If you think it should take at most a few minutes, we agree.

-

The Virtuoso library of virtual components allows effortless composition of user interfaces to interact with or emulate your embedded hardware.

-

With a virtualized application fully exposed to the power of .NET, the possibilities for virtual components are limitless. These are a few foundational components.

The Example Project Library

The Virtuoso library provides entire example projects, including the virtualized hardware platform and all of the embedded application code that runs on it. The library is an ever-expanding portfolio of projects demonstrating the use of embedded code in an unlimited number of ways. With Virtuoso hands-on example projects, students learn by working interactively to solve real-world problems. Many areas of embedded design are taught in a purely theoretical method, simply because a hands-on example requires hardware and money (think control systems, DSP, neural networks, etc.). But how much easier will it be to implement a PID controller when you have a virtualized real-world situation, and a complete implementation that can be studied, ready at the click of a download button?

-

With Virtuoso, there are no barriers to practical, hands-on, applied learning.

Hardware/Software Logistical De-Coupling

Probably the number one benefit of Virtuoso is logistical decoupling of the software development workflow from the hardware development workflow. In other words, you can write and test your code before your hardware is available.

Logistics related project management issues are common with embedded systems. Perhaps due to an unexpected PCB design problem, or downtime of a prototype development unit, or often simply due to an inadequate workflow for a particular application, embedded software developers can often find their ability to be productive frustratingly limited. With Virtuoso, as soon as a project is kicked off, the hardware can be quickly virtualized to allow application code to be written and completely tested.

-

Take control of your project critical path and use Virtuoso to develop and test your firmware application in parallel with your hardware.

This gives developers more time to understand the requirements and explore the best implementation possible. No time is wasted with fragile hardware prototypes that have to be shared between developers. The developers can share the virtual device and work independently and productively right away. When the hardware is available months down the road, the application is simply ported to the custom hardware, and both the virtual device project and the custom hardware project cross-compile side by side. Changes at the application level in one project is automatically reflected in the other, since the source code is exactly the same. The risk mitigation and schedule compression that the virtual device workflow provides creates substantial improvements for embedded project management.

-

The plug-in based architecture of Virtuoso hosts allows natural expansion to web, mobile, tablet, and PC applications.

Faster Debug Cycle

When developing an embedded application in a virtual device, the code compiles and runs in a standard Visual Studio C/C++ project. When you change a line of code and hit debug, you’re compiling and running right away in Visual Studio. There’s no external target to program, to set up and break down each day, to blow up because you weren’t careful when connecting the power supply. If you want to code for a few minutes, you just fire up Visual Studio and start coding for your virtual device. This workflow enhances focus and concentration, removing everything from the developer’s mind but the business logic being implemented.

Enhanced Testability

With Virtuoso, the testability of embedded firmware projects is taken to a new level. Since a virtualized embedded application is essentially hosted by wrapping it in a C# wrapper and exposing it completely to C#, including all internal variables and data streams, any kind of test harness you can imagine can easily be implemented. With a normal embedded application running on hardware, setting up a unit test is difficult or impossible (think user interfaces, touch screens, etc…).

With complete exposure of the C/C++ project to a high level language, you can build your own powerful modules, and use the Virtuoso library of components to empower your development. If you want to develop code to process an audio signal for example, which is easier: being forced to debug with the audio captured at debug time with no way to input the signal you want? Or simply selecting a WAV file and pumping that data into your virtual A/D converter so that every time you hit debug, you see the exact same data automatically?

With Virtuoso, test harness development and data management becomes much easier.

Photorealistic Real-Time Fully Interactive Device Virtualization

So your marketing team has a product concept and it has been modeled in 3D. Why, we ask, should it not be possible to use your 3D model to easily create a photo-realistic, fully interactive 3D virtual device? Not only would it be cool, but it would be very valuable for marketing teams to be able to see, touch, and feel the idea at a fraction of the cost of even 3D printing it, much less tooling it.

-

Example fully interactive 3D virtualization of Microchip's PIC32MZ MEB-II eval board, running in Unreal Engine.

With a fully interactive, real-time 3D virtual device, crucial functional and qualitative information is available to the marketing team at an earlier and earlier stage of development, giving your product development team the time to be creative, tweak, optimize, and make the product all it can be. And once complete, the fully interactive 3D virtual device executing the same exact application code as the final target can be a powerful training and marketing tool. Embeddetech is developing a .NET container for Unreal Engine called Verismo, so that all of the power of a modern video game quality user interface can be used in a .NET application. Virtuoso is the exclusive embedded virtualization technology that will be able to use Verismo and Unreal Engine to virtualize an embedded system. With Verismo allowing easy adaptation of Unreal Engine to .NET, and Virtuoso allowing easy wrapping of an embedded C/C++ application in .NET, the two are a technological match made in heaven.