【问题标题】:how to embed C# code in 89c51 microcontroller如何在 89c51 微控制器中嵌入 C# 代码
【发布时间】:2013-01-15 13:50:06
【问题描述】:

我正在处理一个与嵌入式系统相关的项目。 我希望我的控制器(89c51 微控制器)在我单击一个按钮(采用 .NET 技术设计的 GUI)时做出响应(执行编程操作)。告诉我编程语言为控制器编写代码。 我应该做什么,'我的硬件部分根据 GUI/按钮上的点击事件做出响应(在 .NET 中设计) 还告诉我假定的步骤(用于在控制器上编译和刻录代码),以便我可以与微控制器就事件进行通信。我还想知道我必须拥有的必要工具(如果有的话)。 谢谢。

【问题讨论】:

  • 您的问题非常广泛,很难以明确的方式回答。您能否对其进行编辑并提出一个更具体的问题?
  • 这是一个运行微框架的控制器吗?
  • 我对此表示怀疑。我的猜测是,他指的是打开与 AT89C51(带有串行接口的 µC)的串行连接所需的类
  • 不可能 AFAIK,如果您必须使用嵌入式 c#,那么您需要使用与 .net 微框架 netmf.com 兼容的 devboard/cpu,否则端口到 C 或 ASM 并使用您选择的工具链用于嵌入式工作
  • 有问题的 uC 对于大多数现代洗衣机来说可能动力不足,更不用说运行任何类型的语言运行时了。

标签: c# embedded .net-assembly


【解决方案1】:

不可能将 89C51 作为其唯一的 8 位处理器。

如果您想运行嵌入式 C#,您需要像 netduino 或 GHI fez 板这样的低成本 .net 微框架开发板。

如果问题是询问如何通过 C# 连接到 MCU,然后如所述程序 MCU 以启用串行功能,然后使用 System.IO.Ports.SerialPort 类在 C# 中编写串行应用程序。

【讨论】:

  • 从技术上讲,“不可能”是由于内存不足,而不是 8 位处理器。给定足够的内存(显式分页),最原始的 CPU 可以做任何最新的多核工作站可以做的事情……只需要一年时间。
  • 确实一切皆有可能,只是不太可行,extremetech.com/extreme/124287-the-worlds-slowest-linux-pc
  • 很好的例子,正是我的意思!
【解决方案2】:

我猜你问的是如何建立与AT89C51 的连接(点击查看数据表)。

AT89C51 似乎在端口 3 上带有一个串行端口。您需要 C 来对微控制器本身进行编程,但可以使用 C# 建立到端口 3 的串行连接。

有关如何使用 C# 建立串行连接的参考和示例,请参阅此类:System.IO.Ports.SerialPort

【讨论】:

  • 这实际上是一个有趣的想法......不过,整个问题会有点奇怪。
  • @Mario 是的。但是考虑到他只有一个代表(即一个新用户),我认为他仍然对表达他的想法很感兴趣。就像当时的我——甚至今天
  • 虽然有适用于 80x51 系列的 C 编译器,但在这么小的芯片上使用汇编通常有一些智慧。
  • @ChrisStratton 同意原则。然而,他正试图在那个该死的东西上运行 C#,没有必要让他进一步混淆。
【解决方案3】:

这行不通,因为您不能(使用通用编译器)将 C# 编译成嵌入式系统可以理解的本机代码。 C# 编译为中间代码 (MSIL/CIL),然后由运行时环境编译/执行(在大多数嵌入式系统中您不会拥有)。

在为实时嵌入式系统编程时,除非您的平台明确支持/基于 .NET Micro Framework,否则通常无法使用汇编(或 C/C++,如果幸运的话),它也只支持桌面计算机上可用的整个 .NET 运行时的特定子集

【讨论】:

  • 是的,写完后才注意到-更新。
  • @Mario:你说得对,不管是 .Net 、Compact .Net 还是微型 .Net 框架,C# 都会编译成中间代码。如果控制器不支持 .Net 框架,则它无法运行 C# 代码。
  • C 几乎完全无处不在,而 C++ 只是稍微少一点(在非常受限的 8 位目标上不太有用)。在嵌入式系统上使用 C 不必“幸运”;这些天我建议实际上很少有人用汇编程序编程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 2010-10-30
  • 2010-10-31
  • 2015-04-16
  • 2018-07-27
相关资源
最近更新 更多