小编典典

使用正确的工具完成工作:嵌入式编程

java

我对非常适合嵌入式编程的编程语言感兴趣。特别是:

是否可以用C 对嵌入式系统进行编程?还是使用纯C更好?还是仅在某些语言功能(例如RTTI,异常和模板)被排除的情况下,C 才能正常运行?

Java在这个领域呢?

谢谢。


阅读 209

收藏
2020-11-13

共1个答案

小编典典

是否可以用C ++对嵌入式系统进行编程?

是的,当然,即使在8位系统上也是如此。C
++与C的运行时初始化要求只有一点点不同,即在调用main()之前,必须调用任何静态对象的构造函数。这样做的开销(不包括控件内的构造函数本身)很小,尽管您必须小心,因为未定义构造顺序。

使用C ,您只需为使用的东西付费(有用的很多东西可能是免费的)。就是说,例如,一块也可以用C 编译的C代码通常不需要更多的内存,并且在编译为C
时的执行速度不会比编译为C时的执行速度慢。您可能需要注意C 的某些元素,但大多数最有用的功能只需花费很少或根本没有代价,并且收益巨大。

还是使用纯C更好?

可能在某些情况下。一些较小的8位甚至16位目标没有C
编译器(或至少没有任何编译器),如果存在问题,使用C代码将提供更大的可移植性。此外,在小型应用程序中资源严重受限的目标上,C
可以带来C的好处是微不足道的。C ++的其他功能(主要是启用OOP的功能)使其适合于相对大型和复杂的软件构造。

还是仅在某些语言功能(例如RTTI,异常和模板)被排除的情况下,C ++才能正常运行?

可接受的语言功能完全取决于目标和应用程序。如果您受到内存的限制,则可以避免使用昂贵的功能或库,即使如此,它也可能取决于您缺少的是代码空间还是数据空间(在这些目标是分开的目标上)。如果应用程序是实时的,则应避免使用那些不确定性的功能和库类。

通常,我建议如果目标是32位,则始终优先使用C 而不是C,然后剪切C 以适合内存和性能限制。对于较小的部分,在选择C
++时要谨慎一些,尽管不要完全放弃。它可以使生活更轻松。

如果您确实选择使用C ,请确保您具有不错的C 调试器硬件/软件。用C
构造复杂软件相对容易,这使一个体面的调试器更加有价值。并非嵌入式领域的所有工具都支持C

我总是建议您从Embedded.com上的任何嵌入式主题的档案中进行挖掘,它包含大量的文章,其中包括许多有关此问题的文章,包括:

关于Java,我不是专家,但是它具有重要的运行时要求,因此不适合资源受限的系统。您可能会限制自己使用Java的相对昂贵的硬件。它的主要好处是平台独立性,但是可移植性不会扩展到不支持Java(有很多Java)的平台,因此,与具有抽象硬件接口的精心设计的C或C
++实现相比,它的可移植性较弱。

[edit] 顺便说一句,我刚在TechOnline时事通讯中收到了此信息:在嵌入式应用程序中有效使用C ++

2020-11-13