
Picolibc to kompletna implementacja biblioteki C napisana dla systemów wbudowanych
Nowa wersja PicoLibc 1.8.6 został już wydany w tej nowej wersji zaimplementowano różne ulepszenia, takie jak te optymalizacja, czyszczenie kodupoprawiono także obsługę nowych platform, poprawiono błędy i nie tylko.
Ci, którzy nie wiedzą o PicoLibc, powinni wiedzieć, że tak jest biblioteka C zaprojektowana specjalnie do użytku w urządzeniach wbudowanych o ograniczonych zasobachtakich jak mikrokontrolery i systemy wbudowane. PicoLibc przeszedł znaczące ulepszenia i optymalizacje w trakcie swojego rozwoju.
Cały kod nieobjęty licencją BSD został usunięty, co upraszcza sytuację dotyczącą licencjonowania projektów. Dodatkowo implementacja thread-local została przeniesiona do mechanizmu TLS (thread-local Storage), a domyślnie włączona jest kompaktowa wersja stdio, oparta na kodzie avrlibc.
Główne nowe funkcje PicoLibc 1.8.6
W nowej wersji PicoLibc 1.8.6 zaprezentowano jedną z najważniejszych zmian, przeniesienie zmian z Newlib 4.4.0 Z którym rozszerzona obsługa danych typu „long double” na architekturach takich jak i386, RISC-V, Aarch64 i x86_64, a także możliwość użycia masek podczas wstawiania katalogów
Ponadto w PicoLibc 1.8.6 Rozszerzono obsługę różnych architektur, odkąd został dodany obsługa procesorów Xtensa, także dla 32-bitowych platform SPARC oraz architektura SuperH RISC, rozszerzająca zasięg PicoLibc na szerszą gamę urządzeń i systemów wbudowanych.
Kolejną atrakcją tej nowej wersji jest optymalizacja rozmiaru i wydajności Wprowadzono opcję „-Dfast-bufio=true”, aby poprawić wydajność odczytu i zapisu W przypadku korzystania z bufio, a także sterowników printf, zostały one rozdzielone na osobne pliki, co pomaga zmniejszyć rozmiar podczas łączenia.
Nowa wersja PicoLibc 1.8.6 zawiera także optymalizację funkcji i czyszczenie kodu, ponieważ wydajność została zoptymalizowana poprzez wdrożenie funkcji wbudowanych (gnu_inline) zamiast normalnych dla większości funkcji fenv. Poprawiono publiczne funkcje wbudowane, aby udostępnić wspólny mechanizm używania semantyki gnu_inline, zapewniając, że w publicznych nagłówkach API nie ma żadnych statycznych deklaracji wbudowanych, które powinny być symbolami łączy zewnętrznych.
Ponadto Stworzono alternatywną implementację ctype poprawiającą wydajność nie używając tablicy ctype i wykonując bezpośrednie porównania wartości (działa tylko wtedy, gdy picolibc jest ograniczony do ASCII) i ma wbudowaną obsługę rozszerzeń RISC-V Zfinx/Zdinx.
z inne wyróżniające się zmiany:
- Ulepszenia debugowania i śledzenia stosu: Ulepszono śledzenie stosu podczas debugowania kodu wyjątku w systemach RISC-V, dzięki czemu łatwiej jest identyfikować i rozwiązywać problemy w tego typu systemach.
- Dodano symbole „__eh_*” do picolibc.ld dla LLVM libunwind.
- Naprawiono kilka błędów fmemopen
- Zapewniono obsługę platform docelowych z nietypowymi typami zmiennoprzecinkowymi, które są teraz odzwierciedlone w typach 32-, 64-, 80- i 128-bitowych w kodzie picolibc.
- Dodano obsługę SuperH, w tym infrastrukturę testową.
- Ulepszone śledzenie stosu debugera w kodzie wyjątku risc-v.
- Naprawiono użycie zmiennych FORMAT_ przez cmake
- Usuń jawną definicję _POSIX_C_SOURCE w zephyr/zephr.cmake.
Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami w poniższy link.
Zacznij używać Picolibc
Aby rozpocząć korzystanie z Picolibc, powinieneś wiedzieć, że korzysta on z systemu kompilacji Meson do kompilacji dla różnych platform sprzętowych na hoście Linux przy użyciu GCC. Dlatego muszą mieć Mesona jako część środowiska programistycznego, oprócz zainstalowanego Pythona 3 i Ninja. W tym celu możesz zapoznać się z przewodnikiem W poniższym linku.
Wreszcie, aby uzyskać kod Picolibc, możesz to zrobić z poniższego linku, gdzie możesz znaleźć niezbędną dokumentację.
Lub w ten sam sposób, w jaki mogą się skonsultować poniższy przewodnik, który znalazłem w sieci i zawiera szczegółowe informacje.