Keith Packard是一位活跃的Debian开发人员 这也是 X.Org项目负责人和 也是创作者 X扩展的一个,包括XRender,XComposite和XRandR。 PicoLibc是他的另一本作品 这是一个C库 开发用于嵌入式设备 资源有限(也就是说,它们的固定存储空间和RAM很少)。 在开发过程中,某些代码是从Cygwin和AVR Libc项目的newlib库中借用的,该库是为Atmel AVR微控制器开发的。
Keith Packard在找不到合适的Libc版本后开始开发,该版本可用于低RAM嵌入式设备。 该项目自去年以来一直在发展。 在第一阶段 该项目是一个newlib变体,其中stdio函数由avrlibc的紧凑版本代替(newlib中的stdio不适用于资源的大量消耗)。
由于中国目前的活动与RISC-V架构的持续工作以及嵌入式设备工具的开发有关,因此最近 检查了libc实现的状态 y 总结 什么 稍作调整,newlib和avrlibc的组合可以成为一个很好的通用解决方案。 最初,该项目是以“ newlib-nano”的名称开发的,但是为了避免与Newlib库混淆,将其重命名为PicoLibc。
关于PicoLibc
以目前的形式, Picolibc已经完成了删除BSD许可下未提供的所有代码的工作。 (此代码未用于嵌入式设备的程序集中),这大大简化了项目许可证的使用情况。
线程本地实现已从“结构_reent”移至TLS(线程本地存储)机制。 默认情况下,压缩版本的stdio是启用的,取自avrlibc库代码(特定于ATmel的汇编器插入物用C重写)。
的工具 介子用于编译什么 允许您不附加newlib脚本,并简化了从newlib转移更改的操作。 在将控制权转移到main()函数之前,已添加了简化版的初始化代码(crt0),并将其附加到可执行文件中并执行。
PicoLibc的源代码是在BSD许可下分发的,并且 该库支持ARM(32位),i386,RISC-V,x86_64和PowerPC体系结构。
关于新版本的PicoLibc 1.1
我最近介绍了PicoLibc 1.1的新版本,其中 添加了一个帮助程序库以支持半主机技术, 允许在调试器或仿真器环境中运行的代码使用主机系统的输入/输出机制。
对于支持打开,关闭,读取和写入系统调用的系统,tinystdio 添加了标准化的POSIX I / O接口, 包括fopen和fdopen函数,以及将stdin / stdout / stderr绑定到POSIX定义的文件描述符。
- 最新更改已从newlib代码库继承而来。 包括fenv.h的其他libm存根,可在不支持计算的系统上使用。
- 除了删除了包含未使用的实验代码的newlib,libm和mathfp目录之外,还为picolibc添加了用于PC和ARM和RISC-V系统的Hello World应用程序编译示例。
开始使用Picolibc
为了开始使用Picolibc,您应该知道Picolibc利用介子构建系统在使用GCC的Linux主机上针对各种硬件平台进行编译。 这就是为什么除了安装Python 3和Ninja之外,他们还必须将介子作为开发环境的一部分。 为此,您可以查阅其指南 在下面的链接中。
最后,为了获得Picolibc代码,您可以通过以下链接进行操作,在该链接中可以找到 必要的文档。
或者以相同的方式他们可以咨询 我在网上找到的以下指南 并有详细信息。