Understanding the speed of Lynx

Using FEZ Lynx comes with a an advantage and a disadvantage. I will explain both so you can decide if you want to use FEZ Lynx or use arduino-compatible Medusa and other NETMF boards.

How does it work?
FEZ Lynx connects all modules to the PC virtually. The modules connect to the PC (or phone/tablet/beaglebone/raspberry pi) using a USB cable where commands coming over USB will control the IOs on FEZ Lynx. Nothing is connected directly. So what does this mean? This means your code will execute very fast, as it is native code running on a 3Ghz PC, for example! But then when the PC sends commands to Lynx, these commands transfer speed is limited by the USB speed. The speed is 480Mhz on USB2 so it is not too slow but it is slower than direct wiring. Also, when a command is sent, it goes from your app to the DLL that sends the command in turn to the USB host stack on the operating system and that sends it to the wires and the response take the same route back as well.

But what speed should I expect?
We will document the access time on the Lynx developer’s guide but we are waiting to finish tweaking the Software first. For example, there are some modes in the chipset used that are faster than another but the “faster” mode is not working properly so for now we are using the slower mode. We are working with FTDI, the chipset manufacture, directly on finding a fix for the problem. So let us for now assume it is over 10ms to control a pin.

Any example of good applications?
A good application would be a robot with Microsoft Kinect. Since Kinect requires a huge load of processing power, it needs a PC. FEZ Spider will not work for example. But then the PC needs to control the motors on the robots. Using FEZ Lynx, you can very easily control the motor control module very easily. But can you use a FEZ Spider to do this? Yes you can load some Software on FEZ Spider to accept commands from the PC (over serial, USB or even WiFi) and then in turn control the motors but then you have 2 sets of Software, the one on the PC to read Kinect then command the FEZ Spider and the second one on FEZ Spider. Using FEZ Lynx allows you to have just one software., not firmware updates, no worries about the interconnect between 2 sets of Software.

Any example of a bad application?
You shouldn’t use FEZ Lynx in any application where you need to access the IOs at a high rate or if you have a lot of IOs. For example, if you connect 16 pins from FEZ Lynx to an LED matrix and try to scan through the LEDs to show something, you need to switch through 8 IOs and read 8 IOs, that is 64 access at a minimum. Assuming it takes 10ms for each access (which is to be determined still) then it will take about one second to loop through all LEDs. A $10 FEZ Medusa will be a much better fit for this example.

Important note!
FEZ Lynx is complete but still under development to optimize and tweak everything possible. The code is open, found in this git repo https://bitbucket.org/ghi_elect/gadgeteering
We invite you all to change the code anyway you like and provide any suggestions you find beneficial. We also need help testing on all kind of devices PC, MAC, Linux, Android, phones, tablets, BeagleBone, Raspberry PI and more! We also need some tutorials on those specific devices.

7 Likes

Thanks for the info!