I have the usual unanswerable questions about .NET performance for Real World apps. (Separate to processor speed issues)
I know that MS say it is not a Real Time operating system - but everything is realtime in some way - e.g. an MP3 player has to keep up or its a dud.
(Its just that the consequence of failing is relatively small - unlike a real data collection process)
Not real time doesn't mean the system is unstable. The only thing Micro Framework will not do is lets say you are controlling a machine and you *MUST* set a pin high in 10uS or less. Micro Framework will set the pin high but maybe in 500uS or 10mS....up to maybe 50mS.
Now, if you are making an automated home and the fan comes on 50mS late then no one will notice but in some cases, 10uS late is way too late!!
With that said, many things are done in interrupts internally in real time but your C# code is not real time
So if I want to - say build a data logger - data coming in serial or parallel, and writing to USB drive.
Will that run "continuously & reliably" at some (hardware/CPU dependent) data rate - or will it experience periods of missing data due to .NET behavior when - maybe the garbage collector comes around or somesuch? (As distinct from a drive response induced issue which is nothing to do with .NET)
It will work perfectly!! and we have already done a GPS data logger to a customer in ONE day that fit all customer needs. You will never be able to do the same in one day without micro framework.
One would take all the usual precautions - seperate logging thread, 'erase sector size' writes, dual buffers etc etc - and practically no activity in the main thread...
You do worry about any of this. We take care of it all. All you do is open files and write data...just like how you would do it in a PC
I anticipate that the Runtime Loadable Procedure might be the key to improving performance, but assume that this would still be liable to be diverted by other CPU consuming tasks in the Framework?
RLP is perfect if you are doing something like calculating CRC where ti will be about 10,000 faster to do it in C/Assembly vs C#. But this is for very specific and high compututional procedures. In usual cases, you do not need RLP. Have you seen the project website?
http://www.microframeworkprojects.com/The advantage I see of the .NET framework in this situation is in the ability to quickly code up HTTP/FTP download of data - graphical review etc etc when not in the process of doing the hard and fast work.
Micro Framework is not for everything, same as Linux or windows! Depending on your project, Micro Framework maybe the best option around.
Does anyone have any experience to give ballpark figures on - say writing to USB/SD for any of the GHI family of cards?
What I am worried about is an app that will do something like
Log at 100kBytes/second for a minute or so - but then fall over
Log at 65kBytes/second for an hour or so - yep - all good - ship it ...
Still fall over at 20kBytes/sec if you try and run it for 48Hours.
You should have no problem doing the project above. Our continuous data write rate is over 100KB/sec. There are many variables that affect this like the fragmentation and the quality on the media you are using. Keep in mind that you have *millions* of bytes that are free for you to buffer your data
I recommend you get a system and you get more familiar with Micro Framework. Then you can decide if Micro Framework is a good fit for your project or not.
Another option is ot tell us what you want to do and we can tell you if the project is a good fit for Micro Framework or not