C适用于微小的嵌入式目标吗?

我们目前正在重新设计我们的嵌入式软件,并且从8位到32位Cortex-M微控制器.内存非常有限(128 kByte Flash和32 kByte RAM).
another thread中,建议使用嵌入式软件库(www.redblocks.de).它似乎很好地满足了我的需求,但需要使用C.
有没有人像我们这样的嵌入式平台上有C的经验?我想知道与C相比,我正在处理什么样的开销.

解决方法:

根据您使用的C功能,与C相比几乎没有开销.

以下是一些比较的功能:

>使用没有虚方法的类会产生相同的二进制代码
因为C函数处理作为一个传递的数据结构
指针
>当使用具有虚方法的类时,会将vptr添加到对象的数据部分,并在文本内存段中引入vtable.类似的功能可以在C中用函数指针实现(也占用内存).只要在类中有多个虚方法,在使用C时通常会得到更高效的二进制代码,而不是使用C手动为每个对象引入多个函数指针.
>异常处理的效率因编译器而异.
> RTTI增加了开销,不应该用于微小的嵌入式目标.
>在没有虚拟内存管理的平台上,两种编程语言都应避免使用非确定性动态内存使用(C中的malloc / free和C中的new / delete).
>模板与C预处理器宏有很多共同点,因为它们在编译期间被评估,并且是一种编译时源代码生成.因此,它们不会增加任何运行时开销.但是,非故意使用它们会导致代码膨胀.如果在正确的位置使用,它们甚至可以帮助减少运行时开销.

我认为最具挑战性的问题是开发人员的知识. C,特别是在使用模板时,是一种比C更复杂的语言.所以你需要一群相当不错的开发人员.

但是,如果你想要一个干净和可重复使用的面向对象设计,C肯定是比C更好的选择.

上一篇:从文件系统中找到路由器固件的linux内核版本


下一篇:linux如何为内置驱动程序模块加载firmeware