Outros projetos

  • oreboot
    • “coreboot sem o C”
    • Suporta x86, aarch64 e RISC-V.
    • Depende do LinuxBoot em vez de ter muitos drivers prĂłprios.
  • Tutorial do Rust RaspberryPi OS
    • Inicialização, driver UART, bootloader simples, JTAG, nĂ­veis de exceção, tratamento de exceção, tabelas de pĂĄginas
    • Algumas coisas estranhas em torno da manutenção e inicialização de cache em Rust, nĂŁo necessariamente um bom exemplo para copiar para cĂłdigo de produção.
  • cargo-call-stack
    • AnĂĄlise estĂĄtica para determinar o uso mĂĄximo de pilha.
  • O tutorial do RaspberryPi OS executa cĂłdigo Rust antes que a MMU e os caches sejam habilitados. Isso lerĂĄ e gravarĂĄ memĂłria (por exemplo, a pilha). No entanto:
    • Sem a MMU e o cache, acessos nĂŁo alinhados falharĂŁo. Ele Ă© construĂ­do com aarch64-unknown-none que define +strict-align para evitar que o compilador gere acessos nĂŁo alinhados, portanto, deve estar tudo bem, mas isso nĂŁo Ă© necessariamente o caso em geral.
    • Se estivesse sendo executado em uma VM, isso pode levar a problemas de coerĂȘncia de cache. O problema Ă© que a VM estĂĄ acessando a memĂłria diretamente com o cache desabilitado, enquanto o host tem aliases cacheĂĄveis para a mesma memĂłria. Mesmo que o host nĂŁo acesse explicitamente a memĂłria, acessos especulativos podem levar a preenchimentos de cache e, em seguida, alteraçÔes de um ou de outro serĂŁo perdidas. Novamente, estĂĄ tudo bem neste caso particular (executando diretamente no hardware sem hipervisor), mas nĂŁo Ă© um bom padrĂŁo em geral.