Main Site Documentation

Introducing TinyCLR OS: a new path for our NETMF devices


Just bring RLP back and everyone will be happy (except godefroi and me, of course). I, for example, remade CAN, Serial and AES on G400 myself, from scratch, using RLP. I was swearing like a peasant, and even though I really hate GHI for having to reimplement — often in a great hurry — stuff that I was supposed to be buying of the shelf, I still respect them… due to the same fact that they actually [em]left a way to fix it[/em]. So, all in all, NETMF is still a win, despite my experience that G400 requires lots of patching for industrial/medical usage.

So, from my perspective, shall anyone care, it’s very simple: no RLP, no business. Other than that, TinyCLR looks very promising, simply because [em]that’s finally a move forward[/em].


@ Simon from Vilnius - welcome back, sort of. Been a while since we saw you on the forum. :slight_smile:

I am still using your touch driver for my Newhaven displays. Apart from the lack of gesture detection, it has worked faultlessly for well over a year now on a couple of devices out in a Texas oilfield. :slight_smile:


@ Simon from Vilnius - Since I’m stuck using many serial ports to talk to the old school instrumentation we’re stuck with in the oceanography world, I’d be interested in anything you care to share about how you rewrote the G400 serial stuff.



AH, I guess this is the thread where one should ask the “when is the next update?” questions :slight_smile:


We are still tweaking something so maybe mid February.


This is FANTASTIC, best news I have heard all year long…be assured of my commitment to continue development on your platform!!! :dance: :clap: :smiley:


I’ve received my FEZ Panda III this morning, and running an app with some blinking led !!!
TinyClr seems easy to use.

Just a note to GHI: in pin assembly, I’m looking for PE14 pin for blue led, and it takes some time to discover that PE14 (from schematic) is called LED1 in assembly. Is it possible to change assembly accordingly to schema (or change schema to assembly !)


@ Bauland - FEZ stands for freaken’ easy! We do not expect you to open schematics at all, just look at the board itself. The LED, and all other pins, are labeled right on there for you :slight_smile:


@ Gus - Your reply is obvious ! Why I’ve seen schematics ? Indeed, all is writen on mainboard ! Shame on me … :-[ :-[ :-[


I just got a small app for testing-purposes running :slight_smile: (I wanted to figure out how the i2c-thing works on TinyCLR, it’s a bit tricky and I don’t completely understand it :smiley: but it works after I tried around a while :)). It’s also not very nice or savely coded :-[.
It just counts bits on a MCP23017-GPIO-expander and blinks a LED…
I think it’s nicer without the strange transaction-things…
But somehow the GC kicks in every about 10 seconds and the code stucks for a short time when the debugger is not connected…

using System.Diagnostics;
using System.Threading;
using GHIElectronics.TinyCLR.Pins;
using GHIElectronics.TinyCLR.Devices.Gpio;
using GHIElectronics.TinyCLR.Devices.I2c;
using GHIElectronics.TinyCLR.Devices.Enumeration;

namespace TinyCLRApplication1
    public class Program
        public static void Main()
            var GPIO = GpioController.GetDefault();
            GpioPin LED = GPIO.OpenPin(G80.Gpio.PA2);

            I2cConnectionSettings Settings = new I2cConnectionSettings(0x20); //creates a configuration for the I2C-device we want to create
            Settings.BusSpeed = I2cBusSpeed.FastMode; //Sets the bus-speed to FastMode (400kHz)

            var Devices = DeviceInformation.FindAll(G80.I2cBus.I2c1); //Gets the I2C-devices with the given name
            I2cDevice MCP = I2cDevice.FromId(Devices[0].Id, Settings); //Sets up a I2C-device on the above selected bus with the previously configured settings

            MCP.Write(new byte[] { 0x00, 0x00 }); //[0] = the register to write into, [1] = the content that is written into the register
            MCP.Write(new byte[] { 0x12, 0x22 }); //

            new Thread(() =>
                byte[] WriteArray = { 0x12, 0x00 }; //
                byte[] ReadBuffer = new byte[1]; //creates a buffer to read values into
                while (true)
                    MCP.Write(WriteArray); //writes the byte-array above

                    MCP.WriteRead(new byte[] { 0x13 }, ReadBuffer); //Reads the content of register 0x13 into the readbuffer
                    Debug.WriteLine("Port-B: " + ReadBuffer[0].ToString() + " -- (raw reading)"); //Tells you what's inside the readbuffer


            bool PinBool = false;
            uint i = 0;
            new Thread(() =>
                while (true)
                    PinBool = GpioToBool(LED.Read());


            //while (true)
            //    Debug.WriteLine(i.ToString());
            //    i++;
            //    Thread.Sleep(100);


        public static GpioPinValue BoolToGpio(bool Input)
            if (Input == true) return GpioPinValue.High;
            else return GpioPinValue.Low;

        public static bool GpioToBool(GpioPinValue Input)
            if (Input == GpioPinValue.High) return true;
            else return false;



@ glx -

Thanks for the code. I was just scratchin’ my head on how to implement and stuck in a few places.


Hi, there. I’m eagerly waiting for vs2017 to be officially released, but in the mean time I frequently browse this forum for any news concerning tinyclr. How is the porting to G120 and G400 going?
Thanks, have a nice day.


@ NoNickName - I think news are coming, as Gus saying, around March 7th … We have to wait and see. G120 and G400 may be part of announcement.


Gus, you are planning to omit RLP in new tinyCLR?


i have installed visual studio 2017 and all the respective ghi library files for my fez panda iii board project.and i have not encountered problems with programming.but i have trouble uploading my program to the board.i have connected the fez panda iii board to my pc and device has been detected as G80 but as i debug the program a dialogue box appears showing deployment error.and in the out put window it is showing as device cannot be opened.can you please tell me what might be the problem and how to rectify it.