- GCC 16 integruje natívnu podporu pre Picolibc, ultraľahkú knižnicu libc v jazyku C určenú pre vstavané systémy.
- Integrácia pridáva ciele
*-picolibc-*a nové možnosti, ako napr.--oslib=,--crt0=y--printf=. - Picolibc výrazne znižuje veľkosť firmvéru v porovnaní s Newlib a Newlib-nano, čo je kľúčové pre IoT a edge aplikácie.
- GCC 16 kombinuje túto podporu s vylepšeniami moderných architektúr a štandardne s C++20, čím posilňuje svoju úlohu v ekosystéme vstavaných systémov.

Príchod GCC 16 s natívnou podporou pre Picolibc Vyvoláva to dosť veľké vzrušenie v svet vývoja vstavaných systémovNie je to len „ďalšia verzia“ toho istého starého kompilátora, ale dôležitý krok smerom k oveľa ľahšie a prepracovanejšie reťaze nástrojov pre mikrokontroléry, zariadenia internetu vecí a edge systémy, kde sa počíta každý bajt.
Za týmto krokom stojí skúsený vývojár Keith Packard, najznámejší svojou prácou na X.Orgktorá už roky propaguje Picolibc ako minimalistickú štandardnú knižnicu jazyka C pre vstavané systémy. Vďaka jej integrácii do GCC 16 konečne zanikla potreba vlastných záplat, zvláštnych konfigurácií a hackov na prepojenie tejto knižnice. Picolibc sa stáva prvotriednym občanom v ekosystéme Rady pre spoluprácu arabských štátov v Perzskom zálive (GCC)..
Čo je Picolibc a prečo je integrovaný do GCC 16?
Picolibc je ultraľahká štandardná knižnica jazyka C Bol navrhnutý špeciálne pre 32-bitové a 64-bitové vstavané systémy a vznikol konvergenciou a refaktoringom Newlib a AVR Libc s jasným cieľom: minimalizovať spotrebu zdrojov. ROM a RAM bez toho, aby sa vzdali základných funkcií jazyka C.
Na rozdiel od iných ťažších alternatív je Picolibc navrhnutý tak, aby Linker môže ľahko zahodiť nepoužitý kód.čo ponúka veľmi presnú kontrolu nad tým, ktoré časti knižnice sa skutočne objavia vo finálnom binárnom súbore. Toto je ideálne pre mikrokontroléry, kde sa úložisko meria v niekoľkých kilobajtoch a každá ďalšia časť kódu predstavuje významnú investíciu. dodatočné náklady, spotreba a zložitosť.
Doteraz sa používal Picolibc s GCC zostaviť reťazec nástrojov takmer ručneKompilácia knižnice, úprava sysroot, úprava bootovacích skriptov, aplikácia záplat atď. priniesli skvelé výsledky, ale trenie brzdilo mnoho tímov. S GCC 16 sa tento scenár radikálne mení, pretože Kompilátor obsahuje priamu a oficiálnu podporu. pre túto vloženú knižnicu libc.
Kľúčové je, že strom kódu GCC 16 zahŕňa potrebné zmeny na rozpoznanie ciele typu *-picolibc-* a možnosť konfigurácie --with-picolibcPreto pri zostavovaní kompilátora alebo použití vopred pripraveného nástrojového reťazca, Picolibc sa stáva voliteľným doplnkom podporovaným z výroby, bez akýchkoľvek domácich prác.
Integrácia Picolibc v GCC 16: detaily a nové možnosti
Patch, ktorý bol zlúčený do repozitára GCC 16, nielenže pridáva rozpoznanie Picolibc ako alternatívnej knižnice libc: Taktiež zavádza možnosti špecifické pre kompilátor navrhnuté tak, aby využívali toto ľahké prostredie vo vstavaných systémoch.
Na jednej strane môže GCC teraz bezproblémovo spolupracovať s ciele štýlu *-picolibc-* (napríklad arm-none-picolibc-eabiOkrem toho, pri kompilácii GCC je možné odovzdať --with-picolibc aby konfigurátor pripravil prostredie s touto knižnicou ako hlavným cieľom a spravoval sysroot, hlavičkové a bootovacie súbory akordy pre Picolibc.
Spolu so základnou integráciou táto záplata odhaľuje sériu veľmi zaujímavé doplnkové možnosti pri kompilácii pre Picolibc:
--oslib=Umožňuje vám vybrať si rôzne moduly, ktoré implementujú rozhranie s operačným systémom alebo runtime prostredím, čo je kľúčové, ak pracujete v holom kovovom prostredí, s Ľahký RTOS alebo v simulátoroch.--crt0=: určuje bootovací súbor C (crt0) na použitie, čo umožňuje priestor pre prispôsobiť postupnosť zavádzania pre každú dosku, bootloader alebo požiadavky na inicializáciu.--printf=: ponúka možnosť výberu medzi plnou implementáciouprintfalebo skrátené verzie, napríklad minimalistické verzie zamerané na celé čísla ktoré šetria značné množstvo programovej pamäte.
Táto posledná možnosť často v reálnych projektoch výrazne rozhoduje: rodina funkcií printf Zvyčajne je to najťažšia časť z libc. Možnosť zvoliť si redukovanú verziu, napríklad ponechať len to, čo je potrebné pre základné UART protokoly, umožňuje, aby bol výsledný binárny súbor oveľa kompaktnejší, čo je nevyhnutné vo veľmi lacných zariadeniach.
Niektoré postupy používajú aj makrá a príznaky, ako napríklad -Dsystem-libc a konfigurácie sysroot spojené s Picolibc, aby kompilátor považoval túto knižnicu za predvolená implementácia knižnice libc bez nutnosti pridávať desiatky príznakov ku každému volaniu GCC.
Cesta k „libc diverzite“ v GCC
Zaradenie Picolibc do GCC 16 sa neobjavilo z ničoho nič; predchádzala mu diskusia v rámci samotného projektu GCC o potrebe Podporovať rozmanitosť knižníc C oficiálne podporované. Asi pred rokom sa už na mailing listoch hovorilo o povolení rôznych knižnic libc prispôsobených špecifickým kontextom a Picolibc sa javil ako jasný kandidát pre svet embedded systémov.
Počas tohto obdobia Keith Packard odišiel vylepšiť a odoslať následné verzie záplaty do zoznamu gcc-patchesIntegrácia bola upravená tak, aby spĺňala štandardy kvality a udržiavateľnosti kompilátora. Diskusie so správcami GCC spresnili detaily, ako je výber cieľa, organizácia podporných súborov a použitie vlastných možností.
Výsledkom tohto procesu spolupráce je integrácia, ktorá nie je len jednoduchá záplata, ale rozšírenie dobre zosúladené s vnútornou architektúrou GCCToto posilňuje myšlienku „diverzity libc“: teraz, okrem bežných kombinácií s glibc, Newlib alebo uClibc v určitých prostrediach, Picolibc sa pripája k zoznamu ako ľahká a udržateľná alternatíva v samotnom strome GCC.
Tento prístup veľmi dobre zapadá do súčasných trendov v odvetví, kde architektúry ako napr. RISC-V, nové profily ARMv9 a špecializované SoC pre špecifické aplikácie. Modulárna a minimalistická knižnica libc uľahčuje tomu istému kompilátoru prispôsobenie sa výkonnému serveru aj senzorovému uzlu s len niekoľkými kilobajtmi flash pamäte.
Vzťah s Newlib, Newlib-nano a inými ľahkými knižnicami libc
Aby sme pochopili, čo Picolibc prináša, je užitočné pozrieť sa naň v kontexte v porovnaní s inými klasickými možnosťami. Newlib existuje už mnoho rokov. referencia libc pre vstavané prostredia založené na GCC a z neho odvodené varianty ako Newlib-nano, zamerané na mierne zmenšenie veľkosti za cenu zníženia funkcionality.
Picolibc má rovnaký pôvod, ale uplatňuje agresívnejší redizajn zameraný na modularituCieľom nie je len „trochu zmenšiť“ knižnicu Newlib, ale reštrukturalizovať ju tak, aby moderné linkery mohli oveľa presnejšie odstraňovať nepoužívaný kód a maximalizovať tak pomer medzi zahrnutou funkcionalitou a obsadeným priestorom.
Podľa analýzy komunity (napr. porovnaní publikovaných na blogoch o vývoji vstavaných systémov) by prechod na Picolibc mohol znamenať výrazné zníženie využitia flash, veľkosti binárnych dát, zásobníka a haldy v porovnaní s Newlib a jeho nano variantom. V praxi to znamená, že je možné do toho istého mikrokontroléra vtesnať viac aplikačnej logiky alebo prejsť na mikrokontrolér s menšou pamäťou, čím sa znížia náklady na hardvér.
Zároveň projekt Picolibc nezostáva uviaznutý v základoch: jeho repozitár ukazuje, ako sa pridáva podpora 16-bitové ciele, vylepšenia kompatibility s POSIX a rôzne vylepšenia, vďaka ktorým je atraktívny aj pre menej exotické architektúry: ARM Cortex-M, RISC-V, vstavaný MIPS a mnoho ďalších.
V porovnaní s inými ľahkými alternatívami, ako je dietlibc alebo rôzne nanoliby, sa Picolibc rozhodol pre... rovnováha medzi veľkosťou a dodržiavaním noriem čo sa obzvlášť dobre hodí do projektov, kde sú potrebné konzistentné API, intenzívne testovanie a zároveň veľmi obmedzený priestor.
Ako využiť Picolibc vo vstavanom pracovnom postupe
Integrácia v GCC 16 sa premieta do veľmi konkrétnych zmien v každodennej práci vývojára firmvéru. Aby sme to jasne videli, predstavme si typický projekt pre ARM Cortex-M s krížovou kompiláciou z vývojového počítača. Tradične sa používajú nástroje ako arm-none-eabi založené na Newlib alebo proprietárnych SDK od výrobcu mikroprocesora.
S GCC 16 si môžete vytvoriť alebo stiahnuť sadu nástrojov, ktorá už obsahuje cieľ arm-none-picolibc-eabiPri konfigurácii kompilátora s možnosťou --with-picolibcProstredie je teraz pripravené používať túto knižnicu libc ako štandard, spolu s jej hlavičkovými súbormi, koreňovým adresárom systému a príslušnými zavádzacími súbormi.
Odtiaľ sa kompilácia vykonáva napríklad s použitím nového prefixu arm-none-picolibc-eabi-gccspolu s bežnými optimalizačnými a ladiacimi príznakmi. Ak chcete veľkosť ešte viac doladiť, môžete použiť možnosť --printf= vybrať variant printf ľahšie, než čo zodpovedá potrebám projektu.
V prostrediach používajúcich Make, CMake alebo iné zostavovacie systémy je zmena zvyčajne obmedzená na upraviť definíciu reťazca nástrojov: zadajte nový prefix, prípadne upravte niektoré možnosti prepojenia a skontrolujte, či spúšťacie skripty (crt0) a súbory skriptov linkera zodpovedajú organizácii Picolibc. V mnohých prípadoch je táto úprava oveľa menšia ako to, čo je už potrebné na prechod z SDK od dodávateľa na „čistý“ GCC toolchain.
Tento postup dláždi cestu k opusteniu proprietárnych alebo uzavretých prostredí, získaniu prenositeľnosti medzi rôznymi rodinami mikrokontrolérov a udržiavaniu... 100 % otvorený a auditovateľný reťazec nástrojov, čo sa čoraz viac cení v odvetviach ako priemysel, medicína alebo automobilový priemysel.
Vplyv na internet vecí, edge computing a regulované sektory
Načasovanie tejto integrácie nie je náhodné: zhoduje sa s brutálnym rozšírením Zariadenia internetu vecí a edge systémy ktoré fungujú s veľmi obmedzenými zdrojmi, často napájané z batérií a nasadzované hromadne. V týchto typoch scenárov šetrenie programovej pamäte jednoducho umožňuje, používať lacnejšie mikrokontroléry a výrazne znížiť jednotkové náklady.
Zníženie veľkosti firmvéru tiež zjednodušuje problémy, ako napríklad Aktualizácie OTAkde každý kilobajt menej znamená rýchlejšie prenosy, nižšiu spotrebu energie a nižšiu pravdepodobnosť chýb v nestabilných sieťach. Picolibc tým, že v kombinácii s GCC 16 umožňuje oveľa kompaktnejšie binárne súbory, má priamy vplyv na tieto typy operácií.
V regulovaných odvetviach (zdravotníctvo, automobilový priemysel, železničná doprava atď.) sú výhody tiež badateľné. Hoci formálna certifikácia LIBC si vyžaduje špecifické nástroje a procesy, prístup k malá, modulárna a relatívne ľahko auditovateľná knižnica Otvára to cestu pre ponuku certifikovaných nástrojov alebo tých, ktoré podliehajú dôkladným bezpečnostným kontrolám.
Zároveň táto stávka na Picolibc zodpovedá trendu smerom k otvorené silikónové reťaze nástrojovako je to v prípade ekosystému RISC-V. V týchto prostrediach je nielen ISA otvorená, ale aj kompilátor, libc a zvyšok nástrojovej sady sú transparentné a spravované komunitou.
Kombinácia GCC 16, podpora moderných architektúr (ARMv9.6-A, RISC-V, nové generácie x86 ako AMD Zen 6 alebo nové procesory Intel) a Picolibc ako odľahčenej knižnice libc posilňuje kompilátor GNU. ústredný pilier pre novú vlnu inteligentných zariadení, od nositeľných zariadení až po priemyselné senzory s možnosťami lokálnej analýzy.
Stav GCC 16, ďalšie nové funkcie a vyspelosť podpory
GCC 16 je plánovaný ako hlavná verzia kompilátora v jeho typickom cykle vydávanias približným časovým rámcom vydania medzi marcom a aprílom, ak všetko pôjde podľa plánu správcov. Po potvrdení vstupu do záverečnej fázy vývoja (fáza 4) sa pozornosť presunula výlučne na dokumentácia a korekcia regresie, bez pripustenia nových prvkov, s výnimkou veľmi odôvodnených prípadov.
V najnovšej správe sa uvádza, že je potrebné vyriešiť niekoľko otázok prioritné regresie P1Toto sú najzávažnejšie chyby. Kým počet týchto chýb nedosiahne nulu alebo prijateľnú úroveň, prvé kandidátske verzie pre GCC 16.1 nebudú vygenerované. Táto disciplína zabezpečuje, že Podpora pre Picolibc prichádza v dostatočne zrelom stave začať ho používať v reálnych projektoch.
Okrem podpory Picolibc obsahuje GCC 16 množstvo nových funkcií: podporu pre cieľový Armv9.6-A, počiatočná implementácia architektúry AMD Zen 6 (identifikovanej ako Znver6) s novými funkciami ISA, vylepšeniami v správe spravovaná pamäť v grafických procesoroch AMD, podporu pre procesory Intel novej generácie, ako sú Nova Lake a Wildcat Lake, a zvýšenie počtu predvolených oddielov v LTO (optimalizácia času spojenia), okrem iných vylepšení.
Pokiaľ ide o jazyk, jedným z najviditeľnejších rozhodnutí je, že C++20 sa stáva predvoleným štandardom keď nie je uvedený iný. Dokonca je pridaný nový front-end pre jazyk Algol 68, čím sa rozširuje zoznam jazykov podporovaných GCC. Toto všetko je kombinované s Opravy chýb a menšie optimalizácie distribuované medzi rôzne backendy.
Celkovo GCC 16 nie je len „verzia, v ktorej je zahrnutý Picolibc“. Je to silné vydanie z hľadiska architektonickej podpory, modernizácie C++ a možností pre súčasný hardvér, pričom pridanie odľahčenej knižnice libc je súčasťou širšieho úsilia. širšia stratégia prispôsobenia sa moderným potrebám vývoja, a to ako na desktopových počítačoch, tak predovšetkým na vstavaných systémoch.
Technické komunity a špecializované médiá sa venujú tomuto vývoju: od článkov zameraných na podporu Picolibc a myšlienku „libc diverzity“ až po analýzy dôsledkov nových architektúr, ako je AMD Zen 6, ako aj diskusie na sociálnych sieťach o... Ako využiť GCC 16 v projektoch od retro konzol až po priemyselné riadenie.
Všetko naznačuje, že s blížiacim sa finálnym vydaním GCC 16.1 a prvými nástrojmi s integrovanou stabilizáciou Picolibc uvidíme viac prípadov použitia v reálnom svete, porovnávacích testov veľkosti a výkonu a praktických návodov na... bare-metal, linkerové skripty a špecifické bootovacie sekvencie pomocou tejto novej kombinácie.
Podpora Picolibc v GCC 16 predstavuje zlomový bod pre ekosystém vstavaných systémov: Drasticky znižuje trenie vďaka ultraľahkému LIBC, čo otvára dvere menším a lepšie udržiavateľným firmvérom. Toto je v súlade so všeobecným trendom smerom k otvoreným, konfigurovateľným reťazcom nástrojov prispôsobeným rôznym architektúram. Pre mnohé vývojové tímy sa oplatí začať testovať vetvy GCC 16 s Picolibc už teraz, merať vplyv na veľkosť, výkon a udržiavateľnosť a vyhodnotiť ich integráciu do pripravovaných produktov.
obsah
- Čo je Picolibc a prečo je integrovaný do GCC 16?
- Integrácia Picolibc v GCC 16: detaily a nové možnosti
- Cesta k „libc diverzite“ v GCC
- Vzťah s Newlib, Newlib-nano a inými ľahkými knižnicami libc
- Ako využiť Picolibc vo vstavanom pracovnom postupe
- Vplyv na internet vecí, edge computing a regulované sektory
- Stav GCC 16, ďalšie nové funkcie a vyspelosť podpory