标准 C 库 PicoLibc 1.1 可用

Keith Packard,活跃的 Debian 开发人员、X.Org 项目的领导者以及许多 X 扩展的创建者,包括 XRender、XComposite 和 XRandR, 提交 发布新的标准 C 库 PicoLibc 1.1,开发用于永久存储和 RAM 有限的嵌入式设备。 开发时从库借用了部分代码 新库 来自 Cygwin 项目和 AVR库,专为 Atmel AVR 微控制器开发。 PicoLibc代码 分发者 在 BSD 许可下。 ARM(32 位)、i386、RISC-V、x86_64 和 PowerPC 架构支持库汇编。

Keith Packard 在无法找到可用于 RAM 较少的嵌入式设备上的合适 Libc 选项后开始开发。 该项目自去年以来一直在开发。 第一阶段,该项目是newlib的一个变体,其中stdio的功能被avrlibc的精简版本取代(newlib中的stdio不适合其高资源消耗)。 由于 Keith 目前的工作涉及 RISC-V 架构的持续工作以及嵌入式设备工具的开发,因此他最近回顾了 libc 实现的状态,并得出结论认为,通过稍加调整,newlib 和 avrlibc 的组合可能是一个很好的通用目的解决方案。 最初,该项目以“newlib-nano”的名称开发,但为了避免与 Newlib 库混淆,它被重命名为 PicoLibc。

在目前的形式中,Picolibc 已经完成了删除 BSD 许可证下未提供的所有代码的工作(在构建嵌入式设备时未使用该代码),这大大简化了项目许可证的情况。 本地流的实现已从“struct _reent”转移到 TLS 机制(线程本地存储)。 stdio 的紧凑版本借用了 avrlibc 库代码,默认情况下处于激活状态(ATmel 特定的汇编器插入是用 C 重写的)。 Meson 工具包用于组装,这使得可以不依赖于 newlib 组装脚本并简化 newlib 中更改的传输。 添加了初始化代码 (crt0) 的简化版本,附加到可执行文件并在控制权转移到 main() 函数之前执行。

在 Picolibc 版本 1.1 中:

  • 添加了辅助库以支持该技术”半主机“允许在调试器或仿真器环境中运行的代码使用主机系统的 I/O 机制;
  • 对于支持 open、close、read 和 write 系统调用的系统,tinystdio 添加了标准化的 POSIX stdio I/O 接口,包括 fopen 和 fdopen 函数,以及将 stdin/stdout/stderr 绑定到 POSIX 定义的文件描述符;
  • newlib 代码库的最新更改已被延续。 包括添加的 libm 存根 芬芙.h,可以在不支持浮点的系统上使用;
  • 添加了针对 ARM 和 RISC-V 系统使用 picolibc 构建“Hello world”应用程序的示例;
  • 删除了 newlib、libm 和 mathfp 目录,其中包含未使用的实验代码。

来源: opennet.ru

添加评论