首页 > 解决方案 > 如何使普通的 C 库在嵌入式环境中工作?

问题描述

最近有人问我如何在嵌入式环境中使用 C 库(在本例中为Cello),但我不确定如何去做。

说一个库如果能在嵌入式环境下编译就可以用,对吗?我是否应该关心使库更轻量级或类似的东西?

任何建议表示赞赏。

标签: embedded

解决方案


并非所有可以编译的库都可以在嵌入式环境中使用。使用mallocfree(或它们的 C++ 对应物)的库是危险的,因此应小心处理。由于内存分配失败,这些库可能会导致不确定的行为。

标准 C STD 可能完全针对嵌入式设备进行编译,但这并不意味着您将有很多使用printfor scanf。因此,在您询问是否可以编译它之前,一个更好的问题是您是否应该使用它。大提琴似乎是一个有趣的实验,但不是一个稳定的平台来开发真正的东西。但是可以做到这一点,其中一个例子就是Espruino

大多数时候,将库重写为“轻量级”或更重要的是在嵌入式环境中:静态分配是一个坏主意。你可能没有那些人那么聪明,或者不会投入时间来创建一个完整的功能嵌入式分叉,它与原始分叉一样稳定,甚至更好。不要被一个有趣的小项目劝阻,但不要依赖它来完成一个真正的项目。

另一个问题可能是库对于您的微控制器来说太大了。Atmega32a 只有 32KB 的可编程闪存。举一个 C++ 的例子:即使对于它提供的所有高度可用的工具,boost 也不适合那个空间。


推荐阅读