Das U-Boot - Das U-Boot
Desenvolvedor (s) | Engenharia de Software DENX |
---|---|
lançamento inicial | 15 de outubro de 1999 |
Versão estável | v2021.01 / 11 de janeiro de 2021
|
Versão de visualização | v2021.04-rc4 / 15 de março de 2021
|
Repositório | |
Escrito em | C , montagem |
Disponível em | inglês |
Modelo | Carregador de inicialização |
Licença | GPL-2.0 ou posterior |
Local na rede Internet |
www |
Das U-Boot (com o subtítulo "o carregador de inicialização universal" e frequentemente abreviado para U-Boot ; consulte o histórico para mais informações sobre o nome) é um carregador de boot primário de código aberto usado em dispositivos incorporados para empacotar as instruções para inicializar o funcionamento do dispositivo kernel do sistema. Ele está disponível para várias arquiteturas de computador , incluindo 68k , ARM , Blackfin , MicroBlaze , MIPS , Nios , SuperH , PPC , RISC-V e x86 .
Funcionalidade
U-Boot é um carregador de inicialização de primeiro e segundo estágio. Ele é carregado pela ROM ou BIOS do sistema a partir de um dispositivo de inicialização compatível, como um cartão SD, unidade SATA, flash NOR (por exemplo, usando SPI ou I²C ) ou flash NAND. Se houver restrições de tamanho, o U-Boot pode ser dividido em estágios: a plataforma carregaria um pequeno SPL (carregador de programa secundário), que é uma versão simplificada do U-Boot, e o SPL faria a configuração inicial do hardware e carregaria a versão maior e completa do U-Boot. Independentemente de se o SPL é usado, o U-Boot executa o primeiro estágio (por exemplo, configurar controladores de memória e SDRAM) e o segundo estágio (executando várias etapas para carregar um sistema operacional moderno a partir de uma variedade de dispositivos que devem ser configurados, apresentar um menu para os usuários interagirem e controlar o processo de inicialização, etc.).
U-Boot implementa um subconjunto da especificação UEFI conforme definido na especificação Embedded Base Boot Requirements (EBBR). Binários UEFI, como GRUB ou kernel do Linux , podem ser inicializados por meio do gerenciador de boot ou da interface de linha de comando.
O U-Boot executa uma interface de linha de comando em um console ou porta serial. Usando a CLI, os usuários podem carregar e inicializar um kernel, possivelmente alterando os parâmetros padrão. Também existem comandos para ler informações de dispositivos, ler e gravar memória flash, baixar arquivos (kernels, imagens de inicialização, etc.) da porta serial ou rede, manipular árvores de dispositivos e trabalhar com variáveis de ambiente (que podem ser gravadas em armazenamento persistente , e são usados para controlar o comportamento do U-Boot, como o comando de inicialização padrão e o tempo limite antes da inicialização automática, bem como dados de hardware, como o endereço MAC Ethernet.
Ao contrário dos carregadores de inicialização do PC que obscurecem ou escolhem automaticamente os locais de memória do kernel e outros dados de inicialização, U-Boot requer seus comandos de inicialização para especificar explicitamente os endereços de memória física como destinos para copiar dados (kernel, ramdisk, árvore de dispositivo, etc.) e para pular para o kernel e como argumentos para o kernel. Como os comandos do U-Boot são de baixo nível, são necessários vários passos para inicializar um kernel, mas isso também torna o U-Boot mais flexível do que outros gerenciadores de inicialização, já que os mesmos comandos podem ser usados para tarefas mais gerais. É ainda possível atualizar o U-Boot usando U-Boot, simplesmente lendo o novo bootloader de algum lugar (armazenamento local, ou da porta serial ou rede) na memória e gravando esses dados no armazenamento persistente onde o bootloader pertence.
O U-Boot tem suporte para USB, portanto, pode usar um teclado USB para operar o console (além da entrada da porta serial) e pode acessar e inicializar a partir de dispositivos de armazenamento em massa USB, como leitores de cartão SD.
Armazenamento de dados e fontes de inicialização
O U-Boot inicializa um sistema operacional lendo o kernel e quaisquer outros dados necessários (por exemplo, árvore de dispositivo ou imagem ramdisk) na memória, e então executando o kernel com os argumentos apropriados.
Os comandos do U-Boot são na verdade comandos generalizados que podem ser usados para ler ou escrever quaisquer dados arbitrários. Usando esses comandos, os dados podem ser lidos ou gravados em qualquer sistema de armazenamento compatível com o U-Boot, que inclui:
(Nota: Estas são fontes de inicialização a partir das quais o U-Boot é capaz de carregar dados (por exemplo, um kernel ou imagem ramdisk) na memória. O próprio U-Boot deve ser inicializado pela plataforma, e isso deve ser feito a partir de um dispositivo da plataforma A ROM ou BIOS é capaz de inicializar, o que naturalmente depende da plataforma.)
- Armazenamento a bordo ou conectado
- Porta serial (transferência de arquivo)
- Inicialização de rede (opcionalmente usando DHCP, BOOTP ou RARP)
Sistemas de arquivos compatíveis
O U-Boot não precisa ser capaz de ler um sistema de arquivos para que o kernel o use como sistema de arquivos raiz ou disco em memória inicial; O U-Boot simplesmente fornece um parâmetro apropriado para o kernel e / ou copia os dados para a memória sem entender seu conteúdo.
No entanto, o U-Boot também pode ler (e em alguns casos, gravar) sistemas de arquivos. Desta forma, em vez de exigir que os dados que o U-Boot carregará sejam armazenados em um local fixo no dispositivo de armazenamento, o U-Boot pode ler o sistema de arquivos para procurar e carregar o kernel, árvore de dispositivo, etc., por nome de caminho.
U-Boot inclui suporte para estes sistemas de arquivos:
Árvore de dispositivos
A árvore de dispositivos é uma estrutura de dados para descrever o layout do hardware. Usando a árvore de dispositivos, um fornecedor pode ser capaz de usar um U-Boot de linha principal não modificado em hardware de outra forma especial. Como também adotado pelo kernel do Linux, a árvore de dispositivos tem como objetivo melhorar a situação na indústria de embarcados , onde existe um grande número de garfos específicos de produtos (de U-Boot e Linux). A capacidade de executar o software principal praticamente dá aos clientes uma indenização contra a falta de atualizações do fornecedor.
História
A origem do projeto é um bootloader 8xx PowerPC chamado 8xxROM escrito por Magnus Damm. Em outubro de 1999, Wolfgang Denk mudou o projeto para SourceForge.net e o renomeou para PPCBoot , porque o SF.net não permitia nomes de projetos que começassem com dígitos. A versão 0.4.1 do PPCBoot foi lançada publicamente pela primeira vez em 19 de julho de 2000.
Em 2002, uma versão anterior do código-fonte foi brevemente bifurcada em um produto chamado ARMBoot , mas foi incorporada de volta ao projeto PPCBoot logo em seguida. Em 31 de outubro de 2002, o PPCBoot − 2.0.0 foi lançado. Isso marcou o último lançamento com o nome PPCBoot, pois foi renomeado para refletir sua capacidade de trabalhar em outras arquiteturas além do ISA PPC.
PPCBoot − 2.0.0 tornou-se U − Boot − 0.1.0 em novembro de 2002, expandido para funcionar na arquitetura do processador x86 . Recursos adicionais de arquitetura foram adicionados nos meses seguintes: MIPS32 em março de 2003, MIPS64 em abril, Nios II em outubro, ColdFire em dezembro e MicroBlaze em abril de 2004. A versão de maio de 2004 do U-Boot-1.1.2 funcionou nos produtos de 216 fabricantes de placas nas várias arquiteturas.
O nome atual Das U-Boot acrescenta um artigo definido alemão , para criar um bilíngüe pun no clássico 1,981 filme submarino alemão Das Boot , que acontece em uma Segunda Guerra Mundial alemão U-boat . É um software livre lançado sob os termos da GNU General Public License . Ele pode ser construído em um PC x86 para qualquer uma de suas arquiteturas pretendidas usando uma cadeia de ferramentas GNU de desenvolvimento cruzado , por exemplo crosstool, o Embedded Linux Development Kit (ELDK) ou OSELAS.Toolchain.
A importância do U-Boot em sistemas Linux embarcados é afirmada de forma bastante sucinta no livro Building Embedded Linux Systems , de Karim Yaghmour, cujo texto sobre o U-Boot começa, "Embora existam alguns outros bootloaders, 'Das U-Boot' , o bootloader universal, é indiscutivelmente o bootloader de código aberto mais rico, mais flexível e mais ativamente desenvolvido disponível. "
Usos
- Os Chromebooks baseados em ARM são fornecidos com U-Boot. Os Chromebooks baseados em Celeron e i5 o usam como carga útil para o coreboot .
- A série baseada em PowerPC de computadores AmigaOne executando AmigaOS usa U-Boot, em particular o Sam440ep e Sam460ex da ACube Systems Srl , e o AmigaOne X5000 da A-Eon, o sucessor do AmigaOne X1000 .
- Dispositivos Ubiquiti Networks usam U-Boot
- Os dispositivos Amazon Kindle usam U-Boot como carregador de inicialização.
- TP-Link e vários outros roteadores sem fio baseados em MIPS compatíveis com OpenWRT / LEDE usam U-Boot para inicialização.
- Os roteadores celulares Teltonika usam bootloader baseado em U-Boot.
- O Falcon e o Dragon da SpaceX usam U-Boot
Veja também
Notas
Referências
links externos
- Website oficial
- Repositório oficial Git
- Barebox (anteriormente conhecido como U-Boot-V2)
- ARMboot