Frequently Asked Questions
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 can’t run full blown operating systems.
Theoretically any .NET language that is compiled to CIL (Common Intermediate Language) can run on TinyCLR OS. Today however, we only support C#. Most language features are supported. The limitations page on docs has more details.
You are already half way there since you already know Visual Studio and C#! Any of the SITCore boards will be a great starting point, but we recommend one of the FEZ Single Board Computers. They are “Fast and EZ” to use, FEZ!
A modern programming language such as C# is managed. Meaning there is a system in the back-end to help in managing resources. 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 attempted access of out of boundary arrays are typically not a concern in a managed system.
Yes, the managed code is compiled to CIL (Common Intermediate Language). On larger systems, the compiled CIL instructions are then compiled to machine code. TinyCLR OS interprets the CIL instructions on the hardware. It is important to remember that while the interpreted code runs slower, the majority of TinyCLR OS is not interpreted. For example, when executing a line to write a string to a file, a few CIL instructions will be executed to pass that string to native file write function. The remaining of the code is all native. Typically 10% of the application is interpreted and 90% is native.
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.
There are two options for embedded systems. The first is to use something like Arduino, which is arguably the easiest way to blink an LED. The challenges start when the code becomes large and debugging becomes necessary. The other option is to use commercial tools, like Keil MDK, that cost thousands of dollars and require specialized skillsets. The intuitive and high level .NET C# is easier to learn, plus code completion available in Microsoft’s Visual Studio makes programming and debugging a breeze. Instead of spending hours looking through documentation, you will spend hours creating and innovating.
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.
Chances are you already use Microsoft’s Visual Studio or have in the past. This means you already know how to program, and the learning curve to program SITCore devices will be small.
One of the main reasons is that your PC developers can now also be your embedded device developers. Your developers are probably already familiar with Microsoft Visual Studio, so they already know how to program a device running TinyCLR OS. Your company will be more productive without the need for highly skilled and specialized embedded developers.
TinyCLR OS is like everything else, a tool to help you achieve your goals. Not every tool is good for every job but TinyCLR OS 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.
Don’t you want students to learn something they will eventually use professionally? While the initial learning curve is a bit steep, students can easily transition from coding a little board to programming mobile apps. Grab any of the SITCore FEZ boards running TinyCLR OS and start learning/teaching on real commercial hardware. After all, FEZ stands for Fast and EZ!
In theory, any .NET code compiled to IL can run on TinyCLR OS, however we are focused on using one of the best and most common development environments, Microsoft’s Visual Studio. We have plans to look into Microsoft’s Visual Studio Code, which runs on Mac and Linux systems.
Safe and secure Internet of Things really shines on TinyCLR OS SITCore devices. You will have a great deal of resources, while running on low-cost, low-power hardware.