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代碼,您可以通過以下鏈接進行操作,在該鏈接中可以找到 必要的文檔。
或者以相同的方式他們可以諮詢 我在網上找到的以下指南 並有詳細信息。