嵌入式系统的C#?

“C#旨在适用于为托管和嵌入式系统编写应用程序,范围从使用复杂操作系统的大型应用程序到具有专用function的非常小的应用程序。” – 设计目标(维基百科)

虽然它在很大程度上取决于嵌入是如何“emebedded”,

你认为C#达到这个目标有多好?

您是否认为C#与C / C ++一样好,如果不是更好的工具?

嗯,有Micro Framework ; 我没有听到很多关于它的声音,但我没有进入“嵌入式”。 但它取决于它在做什么…… C#是一种很好的通用语言,但仍有时候需要一些硬核(并挂起代码复杂性)。

有很多商业上成功的软件应用程序用C#和WinCE平台编写。 例如,一些机顶盒(来自AT&T等)在.net CF上运行C#代码。 鉴于这些盒子有64或128 MB内存,我认为嵌入式中的C#足够嵌入。

点是硬件加速和其他编译器进步的进步,像C#这样的JITed语言能够很好地完成工作。

最大的优势是使用最新的Visual Studio,您可以从VS 调试设备。 至少在开发环境中,现在没有什么好的了。

注意:平台方面,WinCE / WinMobile有很多竞争对手,每个都有其优势。 在上面我只谈论开发环境的优势。

如您所知,如果要在C#中编写代码,则需要使用嵌入式.net迷你运行时。 你可以说,就像Win CE一样。

我希望我们很快就会在市场上推出低成本的.NET mini-mini嵌入式芯片,或者它们已经存在? 对此消息感兴趣

http://www.windowsfordevices.com/news/NS4666205829.html

微软后院的一家小型创业公司准备开始发售一款小型的32针芯片式计算机模块,该模块运行“.NET Embedded”,这是一种新的微软嵌入式软件平台,专为手表和其他“智能个人物品”而开发。 该模块由创业公司.netcpu Corp.开发,包含了微软智能个人对象技术(SPOT)硬件和软件的部分内容。

但是,这里有一些有趣的东西。 看看COSMOS项目。 它可以将您的IL代码转换为各种平台(以及将来希望嵌入式架构)

http://www.gocosmos.org/index.en.aspx

Cosmos包含一个编译器(IL2CPU,它是Cosmos的一部分),它读取输入文件(通常是shell)和Cosmos库,并将生成的IL编译为x86代码。 IL2CPU有一个跨平台层,我们计划支持其他处理器和平台,包括x64。 IL2CPU还支持某些扩展方法,这些方法允许C#代码直接与内核中的CPU,寄存器和端口进行交互。 IL2CPU包含一些内联汇编程序,但是没有需要链接的ASM文件。

目前IL2CPU首先输出原始asm文件(带有IL注释),然后通过nasm(一个免费的汇编程序)处理它们。 后来我们计划直接发射到二进制。

你可以结账Netduino。 它是使用C#在ARM 32位微控制器上应用.Net Micro Framework。 它在netduino.com或这个videohttp://www.youtube.com/watch?v=UN-JXHHlgcY 。

由于C#使用一个框架或虚拟机作为其C#代码和机器代码之间的中间件,我希望它比使用C或C ++运行得慢。 但在速度不是那么重要的应用中,交付是即时的,这绝对是相当可观的。

我将C#用于我的一些嵌入式应用程序,并且它在72MHz ARM芯片上运行得足够快(小型Web服务器等)。此外,.NET微框架还附带了许多可以修剪的额外库。

嵌入式系统通常具有实时要求。 满足那些使用垃圾收集语言的人可能会很有趣。

不使用WinCE或Windows Embedded的嵌入式系统上的C#需要.NET Micro,因此实际上“托管和嵌入”之间没有区别,因为它需要托管 。 这是托管的, 可以嵌入,因此“托管嵌入”毫无意义。

目前,.NET Micro的内存占用量为300Kb,仅支持ARM和Blackfin,因此不适合使用大量嵌入式应用程序,也不太昂贵。 此外,虽然它支持multithreading,但它不具备实时性,使其不适合另一大块应用程序。

几年前,微软在英国嵌入式系统展上举行了免费会议,推出了当时新的.NET Micro; 在Q&A期间,当我问到关于实时支持的问题时,得到的答案是“ 不,这不是实时的 。”,观众听到一声呻吟声,一些人站了起来,离开了时间浪费了。

有趣的是创建一个“编译器”,将.Net Micro Framework程序集转换为本机嵌入式汇编语言。 但是,它必须将内存管理调用注入到方法中。 或者,不要试图“猜测”他们去哪里,你可以使用一个伪方法,例如System.Memory.Delete(),并将其作为一个符号在那里插入删除。

尝试使用Phoenix框架会很有趣; 我可能会在下个假期试一试。

检查.net微框架http://www.microsoft.com/netmf/default.mspx

我很难相信c#永远是嵌入式系统的最佳选择,至少达到目前可用的处理能力的程度。 C#通常以MSIL / CIL为目标,而不是合适的机器语言。 可以从c#获得特定处理器的机器代码,但不太可能非常有效。 最好的选择:坚持使用更接近硬件(c,c ++,非托管)的语言,尽管缺乏内置的内存管理(尽管不确定)和有限的可用库范围。 在嵌入式,简化和透明是最好的选择,imho。

对于嵌入式设备,c#永远不会像c / c ++一样好,因为它是托管代码并在.net框架内运行。 就虚拟机而言,java远远优于.NET,这显然是为什么数十亿的嵌入式设备在Java上运行……而很少有人在.NET上运行。 简而言之,微软通过让人们在嵌入式设备中使用c#而没有任何商业利益。 为这些设备编程的人永远不会购买他们的Visual Studio IDE。那么为什么要费心呢?