我已经在 Arduino 上玩了一段时间了,我正处于从初学者到中级的过程中。在性能和硬件可用性方面,我想对.NET Micro Framework发表一些看法。
我是一名 .NET 程序员,但我发现Processing for Arduino 几乎是零摩擦......它与 C# 非常接近,以至于我想做的任何事情都不需要查看文档。
无论如何,哪个更好?
我已经在 Arduino 上玩了一段时间了,我正处于从初学者到中级的过程中。在性能和硬件可用性方面,我想对.NET Micro Framework发表一些看法。
我是一名 .NET 程序员,但我发现Processing for Arduino 几乎是零摩擦......它与 C# 非常接近,以至于我想做的任何事情都不需要查看文档。
无论如何,哪个更好?
如果你想从初学者过渡到中级,你需要学习的语言是 C。即使你把整个 Windows 锁定争论放在一边,你需要非常擅长用 C 编程,然后才能在使用高级语言(如 .NET Micro 或 C++)的微控制器。
嵌入式系统是由知识金字塔组成的,要想成为一名优秀的设计师,您确实需要至少了解每一步:
^用户代码
^^操作系统
^^^C语言
^^^^汇编语言
^^^ ^^微控制器架构
^^^^^^数字设计
^^^^^^^半导体 ^^^^^^^^
基本电子学(欧姆定律)
Arduino 框架为爱好者提供了一个方便的钩子,可以方便地进入 C 语言和操作系统之间的金字塔。
关于您的 .NET Micro Framework 问题,About说:
典型的 .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++ 中使用几行代码真的很容易消耗大量时间和内存,这对于运行在几千兆赫兹和千兆字节 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 转换层。
我刚刚看到了Netduino,这对你来说可能是一个有趣的折衷方案。我不知道系统规格或细节,但它似乎使用 .NET Micro,所以这听起来至少是试用该框架的好方法。
如果你想进入中级,你应该尝试 Arduino 环境之外的平台。有很多可供选择,您可以保持 8 位,即使使用 Atmel MCU 或从其他供应商转移到一个。使用 IDE,编写 C 语言代码,了解 MCU 的工作原理,编写自己的引导加载程序代码或使用在线编程器并继续前进。
但如果你真的想尝试用 C# 编写微控制器,试试这个: http ://www.trygtech.com/products/sh7619_evb.php
它使用更大的 MCU,典型的 .NET 占用空间约为 512K 闪存和 256K RAM。