What is TinyCLR OS?
It is an environment where compiled managed code can be executed on a small embedded system. The development experience is similar to that found on full blown operating systems, like Linux and Windows; however, TinyCLR OS runs on smaller systems that couldn’t run full blown operating systems.
What are the system components? Firmware, core HAL, Application?
The Application is your program. It is written in a managed language such as C#. Your managed code is compiled on the development machine through Microsoft’s Visual Studio and then it is deployed to the device running TinyCLR OS. The TinyCLR OS core will execute the application . The core is generic and runs on any system, but then through the HAL (Hardware Access Layer) the core can access the device specific peripherals, such as serial ports and digital pins. A firmware is a compiled finery that contains both the core and the HAL .
What are the supported languages?
Theoretically any .NET language compiling to CL (Common Language) can run on TinyCLR OS. Today however, we only support C# and Visual Basic. Most language features are already supported. There are very few exceptions such as Generics and multi-dimensional arrays. Jagged arrays are supported however.
I know C# and/or Visual Basic and can’t wait to program a circuit/robot/device. What is the easiest way to get started?
Great! Just grab any of the supported boards and you will be up in minutes.
What do you mean by managed code?
A modern programming language such as C# is managed. Meaning there is a system in the backend to help is keeping resources in check. For example, objects are automatically created when needed, and then disposed once no longer in use. The managed system also checks for proper boundaries when using arrays. Memory leaks and access out of boundary arrays is typically not a concern in a managed system.
Is the managed code compiled? Is it slow?
Yes, the managed code is compiled to CL (Common Language). On larger systems, the compiled CL instructions are then compiled to machine code. TinyCLR OS interprets the CL instructions on the hardware. It is important to remember that while the interpreted code runs slower, the entire TinyCLR operating system is not interpreted. For example, when executing a line to write a string to a file, a few CL instructions will be executed to pass that string to the invoke the write function. The remaining of the code is all native. Typically 10% of the application is interpreted and 90% is native.
Is TinyCLR OS real-time?
TinyCLR OS is not designed to be a real-time operating system. Actually, it promotes the idea of using threads and events to handle tasks. However, since the system is only running your application, there is a level of timing that can be achieved with proper planning. Delays are in the milliseconds in most cases.
I have an Arduino, why use TinyCLR OS instead?
Arduino is arguably the easiest way to get started in blinking an LED. The challenges start when the code becomes hundreds or even thousands of lines long, and even more challenging when debugging becomes necessary. Also, the intuitive code completion available in Microsoft’s Visual Studio makes programming a breeze. Instead of spending hours trying to lookup documentation, you will spend hours creating and innovating.
I use C++, why use TinyCLR OS instead?
C and C++ languages are the “go to” languages when it comes to microcontrollers. In fact, the entire TinyCLR OS is built using C and C++. The problem is that the code is non-portable between systems, there is no run-time error checking and the tools for compiling and debugging on a commercial level are very costly.
I use mbed, why use TinyCLR OS instead?
mbed is simply an online C/C++ compiler. In fact, you could use mbed to compile a TinyCLR OS firmware. Please see the previous question on using C++.
I am a PC/mobile developer, I may or may not know C#, why use TinyCLR OS?
Chances are you already use Microsoft’s Visual Studio or have in the past. This means you already know how to program devices with a very small learning curve.
I am an executive, why should I use TinyCLR OS commercially in my company?
One of the main reasons is that your PC developers can also be your embedded device developers. Your developers probably already use Microsoft’s Visual Studio, so they already know how to program a device running TinyCLR OS. Your company will be more productive while using non-specialized developers.
I am still not sure! Why use TinyCLR OS?
TinyCLR OS is like everything else, a tool to help you achieve your goals. Not every tool is good for every job but TinyCLR covers a wide range and hits a sweet spot between a very low-level difficult to develop system and a large bulky operating system. TinyCLR OS will reduce development time with its modern features running on a simple and economical low-power system. We think TinyCLR OS is the best system you can run on high-end microcontrollers.
What about education? Students, teachers?
Wouldn’t we love to talk about this. Don’t you want students to learn something they will eventually use professionally? We have spent years working with educators in creating the ideal board to get students started on learning programming and physical computing. We want students to learn things they will carry on and use professionally. Skills that will apply when they are programming a robot but then they apply when they are programming a PC. What we designed is the BrainPad targeted specifically for education. See here for more details.
Can use Linux or Mac for development?
In theory, any .NET code compiled to CL can run on TinyCLR OS, however we are focus on using one of the most common development IDE, that is Microsoft’s Visual Studio. There is a new tool from Microsoft called Visual Studio Code that runs on Man and Linux so this would be a great candidate for the future revisions of TinyCLR OS.
How would TinyCLR OS help with my IoT application?
Internet of Things really shines on TinyCLR OS devices. You will have a great deal of resources, while still running a low-cost and low-power hardware.
Can you port TinyCLR OS to my Hardware?
Absolutely! We have worked on embedded systems and managed systems for over 10 years. We have thousands of customers with thousands of devices in the field today. Please contact us today to go over your needs.