我已经和Arduino纠缠了一段时间了,而且我正在从初学者过渡到中级。对于性能和硬件可用性,我希望对.NET Micro Framework提出一些意见。
我是.NET程序员,但是我发现Arduino的处理几乎为零摩擦...它与C#如此接近,所以我想做的任何事情甚至都不需要访问文档。
无论如何,哪个更好?
我已经和Arduino纠缠了一段时间了,而且我正在从初学者过渡到中级。对于性能和硬件可用性,我希望对.NET Micro Framework提出一些意见。
我是.NET程序员,但是我发现Arduino的处理几乎为零摩擦...它与C#如此接近,所以我想做的任何事情甚至都不需要访问文档。
无论如何,哪个更好?
Answers:
如果您想从初学者过渡到中级语言,则需要学习的语言是C。即使您不讨论整个Windows锁定问题,也需要非常善于使用C编程,然后才能在Windows上完成高质量的工作。 .NET Micro或C ++等高级语言的微控制器。
嵌入式系统由知识金字塔组成,您真正需要了解每个步骤的至少一些步骤:
^用户代码
^^操作系统
^^^ C语言
^^^^汇编语言
^^^ ^^微控制器架构
^^^^^^数字设计
^^^^^^^^半导体^^^^^^^^^
基本电子学(欧姆定律)
Arduino框架为业余爱好者提供了一个方便的钩子,使他们可以进入C语言和操作系统之间的金字塔。
关于您的.NET Micro Framework问题,“ 关于”表示:
典型的.NET Micro Framework设备具有32位处理器,没有外部内存管理单元(MMU),并且可能只有64K的随机存取内存(RAM)。
此外,手册还将其与Windows Mobile,Windows Embedded,CE 6.0和.NET Compact Framework 区别开来,并将其与Linux,Real-Time,Java和自定义操作系统进行了比较。与Arduino / Processing框架相比,这是一个巨大的飞跃。
您的Arduino具有带1k RAM的8位处理器。除了8位和32位功耗之外,它的运行速度还不到大多数所列处理器的一半。虽然我不会阻止您迁移到32位处理器,但我还是建议您将它作为中级到高级的方法。
在C#或C ++中用几行代码来消耗大量的时间和内存确实很容易,这在运行于数GHz的双核处理器和数GB的RAM上是微不足道的,但是在嵌入式设备上却可以带来巨大的改变。除非您精通汇编语言和/或C,或者是精通C#或C ++的专家,否则我不建议您将其用于嵌入式编程。
因此,我将从下载WinAVR开始,并在C中编写一个简单的LED闪烁例程。如果C完全使您感到困惑,请在PC上执行一些本机代码(“ Hello World”),然后移至微控制器,但这不是必须的。接下来,向上移动通信在UART,开始使用中断,重做一些在C中的Arduino项目然后,找到(或进行!)一个新的开发板用不同的微控制器,也许PIC或ARM,有的LCD屏幕,以太网,SD卡或其他任何您想要的东西,并尝试学习新系统。到达那里后,您会知道要去哪里。
我们将一路为您提供帮助!
我没有使用“ .NET Micro Framework”的经验,但是对于任何涉及在低功耗嵌入式平台上运行虚拟机的事情都非常怀疑。对我来说,这似乎是一种浪费。您需要更多的电源处理器,更多的内存,更多的功耗,才能实现与运行更专业的平台(可编译为本机代码)相同的效果。可能是为什么我的运行虚拟机(类似于JVM)的528MHz Android手机经常感觉比我前几年使用312MHz Palm Treo的速度慢,后者运行的是为本地机器代码编译的应用程序。
快速浏览一下,.NET MF需要一个ARM处理器,这比Arduino中使用的8位ATMega芯片在功耗和复杂性方面都领先一步。
我的建议是,如果Arduino做到了您想要的,那就坚持下去。如果不是这样,您可以使用功能更强大的ATMega或ATXmega芯片,并且该芯片还可以直接在C / C ++中与ARM一起使用,而无需在其之上附加.NET转换层。
如果要过渡到中级,则应尝试在Arduino环境之外的平台。它们有很多可供选择,即使使用Atmel MCU,您也可以保持8位不变,或者从其他供应商处转移到8位。使用IDE,编写C语言代码,了解MCU的工作原理,编写自己的Bootloader代码或使用在线编程器,然后继续前进。
但是,如果您真的想尝试用C#编写微控制器,请尝试以下方法:http : //www.trygtech.com/products/sh7619_evb.php
它使用更大的MCU,典型的.NET占用空间约为512K闪存和256k RAM。
处理/ Arduino对我来说最大的一个问题是缺少一个像样的调试器。我有一条AVR巨龙,但这并没有太大帮助,因为(a)AVR Studio的调试器缓慢且有错误,或者(b)在Eclipse中进行调试仅是缓慢的,尽管如此,仍然有错误。我还没有机会在WinAVR中尝试它,但这是列表中的下一个。
当然,Arduino IDE中没有调试器。
一旦您跳出简单的应用程序并开始构建必须在有线和无线网络级别进行涉及的事情的应用程序,那就太令人沮丧了。这就是为什么我要认真研究.NET MF的原因-一直在使用SDK,并且很快就会有一些硬件出现。
您可以看一下http://www.hpinfotech.ro/html/cvavr.htm ,它是Atmel易于使用的不错的IDE,并且编写了一些CI来专业地使用了它,并且非常好,更像您的便利程度从像Visual Studio这样的IDE中获取。我认为Eclipse在Android开发方面有些笨拙,不如买到的那么精巧。
我有Netduino,我为实现乐趣而实现了Tricopter控制系统,该系统非常实时,并且运行可靠,使用Visual Studio 2010 C#编写。在设备上的调试通常非常出色,我可以通过以下方式自动同步数据: wifi,我在飞机上有一个很小的HTTP服务器。