体验使用.NET Micro Framework进行编程

时间:2009-08-25 16:02:34

标签: c# .net-micro-framework

我咨询的公司正在寻求切换到由.NET Micro Framework提供支持的设备,以便我们能够更快地将设备推向市场。至少在理论上,这个想法是用C#而不是C或汇编进行编码会更快,更容易出错。就像我说的那样,这个理论,因为我从未编写过嵌入式设备。

我的问题如下:

  1. .NET Micro Framework能胜任这项任务吗?
  2. .NET Micro Framework无法做到的一些事情是什么?
  3. 有什么问题?
  4. 插件设备是否有可行的第三方市场?我没有在微软的网站上看到很多东西。
  5. 有人可以指向使用MF Framework开发的商业设备。
  6. 感谢。

2 个答案:

答案 0 :(得分:8)

如果不了解您的应用程序和嵌入式设备的当前功能,如果.NET MF能胜任这项任务,我将很难给出明确的意见。如果嵌入式设备是具有2K RAM和32K ROM的低功耗8位CPU,那么.NET MF将不适合该设计。

在很多情况下,迁移到.NET MF将涉及硬件更改到许多供应商所青睐的芯片组,这些供应商通常以ARM7或ARM9内核为目标。主要原因是利用已经完成的移植HAL和交叉编译PAL& TinyCLR到有问题的处理器的本机代码。然后,如果您的应用程序适合.NET MF模型,则只需要开发托管代码。

development boards的比较可能有助于您为新设计选择平台。 GHI products的优势在于您可以购买裸芯片组,并使用他们开发的固件来集成您的硬件设计。

回答问题1:.NET Micro Framework是否可以胜任该任务?

  

很抱歉,如果没有更多信息,我无法回复您的申请。

回答问题2:.NET Micro Framework无法做些什么?

  

微框架并不像许多竞争产品那样实时。调度程序非常简单,并未针对需要确定性计时的系统进行优化   TinyCLR将IL从下一个等待的“线程”解释为20ms。线程可以通过调用Thread.Sleep(0)来产生分配的时间片。仅在每个线程时间片之间,运行时解释器将检查来自硬件的标志,并将事件分派给托管代码,或者如果它们被阻塞等待硬件则唤醒线程。据我所知,没有办法让线程从本机代码中断服务例程(ISR)中解除阻塞,或者用于优先级较高的线程先发制人地中断较低优先级的线程。

回答问题3:有什么问题?

  

一切似乎都在起作用,你已经了解了运行时间间隔循环的工作原理(线程的安排和对硬件事件的反应),然后你忘记了GARBAGE COLLECTION !!
  最好尽量减少内存抖动的数量(每次new一个对象时仔细查看)。不要创建和销毁常用对象,而是考虑通常使用GC来保存对象池,并在需要时再次回收它们。

回答问题4:插件设备是否有可行的第三方市场?

  

第三方参与主要是在硬件方面的开发板和参考设计。从软件的角度来看,这个code-share link可能会引起人们的兴趣。作为一个侧面问题,不要忘记大多数VS2008开发工具也适用于.NET MF(例如Resharper和VisualSVN)

抱歉,对于问题5没有答案,因为我没有遵循这类事情。微软上的landing page for .NET MF似乎有商业设备的图像,但我从未关注过链接。

答案 1 :(得分:5)

与我使用的许多其他嵌入式平台相比,.Net Micro Framework非常易于使用。但目前它确实有一些缺点,例如缺乏实时支持。由于使用相同总线的所有附加设备的硬件争用,一些SDK工具包也存在问题。如果您需要从控制器上挂下大量设备,我会查看Windows CE平台。 Micro Framework的当前硬件选择非常有限。

很棒的平台,对于小型项目来说,它会很棒。但是当你试图达到接近实时的要求时,你可能会遇到困难。

就像这个行业中的其他许多东西一样。但事实上你可以得到一个发展 价格低于100美元的套件可能值得入住。


我使用DeviceSolutions.Net中的Tahoe-II和.Net Micro Framework 2.0 / 3.0和C#。线程非常简单,但框架目前非常有限。我必须创建自己的HTTP解析器并创建原始的RESTful webservies。有一个Device Web Service模型,但我想要纯HTTP。我还必须创建自己的SNTP和SMTP协议层。新版本(4.0)应该会很快发布,它可能会填补其中一些短暂的下降。