我咨询的一家公司正在考虑,在我的敦促下,改用.NET微框架驱动的设备,这样我们就可以更快地将设备推向市场。至少从理论上讲,这样的想法是,用C#而不是C或程序集编写代码会更快,更容易出错。就像我说的,这都是理论,因为我从来没有设计过嵌入式设备。
我的问题如下:
谢谢。
发布于 2009-09-16 14:02:50
不了解您的应用程序和嵌入式设备的当前功能,如果.NET MF能够胜任这项任务,我将很难给出明确的意见。如果嵌入式设备是一个低功耗的8位CPU,具有2K的RAM和32K的ROM,那么.NET MF将不适合这种设计。
在很多情况下,转向.NET MF将涉及对许多厂商青睐的芯片组进行硬件更改,这些厂商通常以ARM7或ARM9内核为目标。这样做的主要原因是利用了在移植HAL和将PAL & TinyCLR交叉编译到所涉处理器的本机代码方面已经完成的工作。然后,如果应用程序符合.NET MF模型,则只需要开发托管代码。
比较发展委员会可以帮助您为新设计选择一个平台。GHI产品的优点是,您可以使用它们开发的固件购买裸芯片组,以便与您的硬件设计集成。
对问题1的回答:.NET微框架是否能够完成任务?
对不起,如果没有更多的信息,我无法回答您的申请。
对问题2的回答:.NET微框架所不能做的事情有哪些?
微观框架并不像许多竞争产品那样是实时的。调度程序相当简单,对于需要确定性定时的系统没有进行优化。 TinyCLR从下一个等待的“线程”中解释IL为20 IL。线程可以通过调用
Thread.Sleep(0)来生成它们分配的时间片段。只有在每个线程时间片之间,运行时解释器才会检查硬件中的标志,并将事件分派给托管代码,如果线程被阻塞等待硬件,则会唤醒它们。据我所知,线程无法从本机代码中断服务例程(ISR)中解除阻塞,也无法使优先级较高的线程先发制人地中断低优先级线程。
对问题3的回答是什么?
一切似乎都在工作,您已经了解了运行时interperter循环是如何工作的(线程的调度和硬件事件的响应),然后就忘记了垃圾收集!! 最好尽量减少内存的浪费(每次
new对象时都要仔细检查)。与其创建和销毁常用的对象,不如考虑保存一个对象池(通常是GC),并在需要时再次回收它们。
对问题4的回答:插件设备是否有一个可行的第三方市场?
第三方主要参与开发董事会和硬件方面的参考设计。从软件的角度来看,这个代码共享链接可能很有趣。作为一个附带的问题,不要忘记大多数VS2008开发工具也在.NET MF上工作(例如,Resharper和VisualSVN)。
对不起,我没有回答问题5,因为我没有遵循这类事情。微软的.NET MF登陆页面看起来确实有商业设备的图片,但我从来没有跟踪过这些链接。
发布于 2009-09-04 13:19:51
与我曾经使用过的许多其他嵌入式平台相比,.Net微框架非常简单。但它目前确实存在一些倒退,比如缺乏实时支持。另外,由于使用相同总线的所有附加设备的硬件争用,一些SDK工具包也有问题。如果你需要大量的设备挂在你的控制器上,我会看一下Windows平台。目前用于的硬件选择非常有限。
伟大的平台和小项目,这将是伟大的。但是,当你试图进入接近实时的需求时,你可能会开始遇到麻烦。
就像这个行业的其他许多东西一样,这取决于。但事实上,您可以得到一个开发工具包低于100美元,它可能值得检查。
我在Tahoe-II MicroFramework2.0/3.0和C#中使用了来自DeviceSolutions.Net的.Net。线程处理非常简单,但目前框架非常有限。我必须创建自己的HTTP解析器,并创建粗糙的RESTful webservies。有一个设备Web服务模型,但我想要纯HTTP。我还必须创建自己的SNTP和SMTP协议层。一个新的版本(4.0)应该很快发布,它可能会填补其中的一些短期下降。
https://stackoverflow.com/questions/1329251
复制相似问题