Keith Packard é um desenvolvedor Debian ativo e é também o Líder do projeto X.Org e também criador de muitas extensões X, incluindo XRender, XComposite e XRandR. PicoLibc é outra de suas obras e esta é uma biblioteca C que é desenvolvido para uso em dispositivos incorporados com recursos limitados (ou seja, eles têm pouco espaço de armazenamento fixo e RAM). Durante o desenvolvimento, parte do código foi emprestado da biblioteca newlib do projeto Cygwin e AVR Libc, que foi desenvolvida para os microcontroladores Atmel AVR.
Keith Packard iniciou o desenvolvimento depois de não conseguir encontrar uma versão decente do Libc, que pudesse ser usada em dispositivos embarcados com pouca RAM. O projeto vem se desenvolvendo desde o ano passado. Na primeira fase, o projeto era uma variante newlib, em que as funções stdio foram substituídas pela versão compacta do avrlibc (stdio em newlib não foi adaptado para o consumo pesado de recursos).
Uma vez que as atividades atuais da China estão relacionadas ao trabalho contínuo na arquitetura RISC-V e no desenvolvimento de ferramentas para dispositivos embarcados, recentemente verificou o status das implementações libc y concluído de que, com um pequeno ajuste, a combinação de newlib e avrlibc pode ser uma boa solução universal. Inicialmente, o projeto foi desenvolvido com o nome de "newlib-nano", mas para evitar confusão com a biblioteca Newlib, foi renomeado para PicoLibc.
Sobre o PicoLibc
Em sua forma atual, Picolibc já trabalhou para remover todo o código que não é fornecido sob a licença BSD (Este código não foi usado na montagem para dispositivos embarcados), o que simplificou muito a situação com a licença do projeto.
A implementação local do thread foi movida do mecanismo 'struct _reent' para o mecanismo TLS (armazenamento local do thread). A versão compacta do stdio é habilitada por padrão, obtida do código da biblioteca avrlibc (inserções de assembler específicas do ATmel são reescritas em C).
As ferramentas de Meson são usados para compilação, Que permite que você não anexe scripts newlib e simplifica a transferência de alterações de newlib. Uma versão simplificada do código de inicialização (crt0) foi adicionada, anexada ao arquivo executável e executada antes de transferir o controle para a função main ().
O código-fonte do PicoLibc é distribuído sob uma licença BSD e a biblioteca oferece suporte às arquiteturas ARM (32 bits), i386, RISC-V, x86_64 e PowerPC.
Sobre a nova versão do PicoLibc 1.1
Recentemente apresentei o lançamento da nova versão do PicoLibc 1.1, na qual uma biblioteca auxiliar foi adicionada para oferecer suporte à tecnologia de semi-hospedagem, Um que permite que o código executado em um ambiente de depurador ou emulador use mecanismos de entrada / saída do sistema host.
Para sistemas que suportam abrir, fechar, ler e escrever chamadas de sistema, tinystdio adiciona interfaces padronizadas de E / S POSIX, incluindo funções fopen e fdopen, bem como ligação de stdin / stdout / stderr a descritores de arquivo definidos por POSIX.
- Mudanças recentes foram transportadas da base de código newlib. Incluindo stubs libm adicionais para fenv.h, que podem ser usados em sistemas sem suporte de cálculo.
- Adicionado o exemplo de compilação de aplicativo Hello World com picolibc para sistemas ARM e RISC-V, além de remover os diretórios newlib, libm e mathfp que continham código experimental não utilizado.
Comece a usar Picolibc
Para começar a usar o Picolibc, você deve saber que o Picolibc usa o sistema de construção de meson para compilar para várias plataformas de hardware em um host Linux usando GCC. É por isso que eles devem ter meson como parte do ambiente de desenvolvimento, além de ter Python 3 e Ninja instalados. Para isso você pode consultar o guia do mesmo no link a seguir.
Por último, para obter o código Picolibc, pode fazê-lo a partir do seguinte link, onde pode encontrar a documentação necessária.
Ou da mesma forma que eles podem consultar o seguinte guia que encontrei na net e tem informações detalhadas.