PicoLibc C庫,用於資源有限的嵌入式系統

嵌入式C-

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代碼,您可以通過以下鏈接進行操作,在該鏈接中可以找到 必要的文檔。 

或者以相同的方式他們可以諮詢 我在網上找到的以下指南 並有詳細信息。


成為第一個發表評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。