Que alternativas existem para o carregador de inicialização Optiboot?
12
Quase todas as placas Arduino modernas usam o carregador de inicialização Optiboot . Comparado com o ATmegaboot usado anteriormente, ele é menor em termos de flash (em cerca de 1,5 KB) e mais rápido na velocidade de upload (115,2k vs 57,6k) e inicia seu esboço mais rapidamente (o atraso enquanto aguarda após a redefinição é mais curto).
Existem alternativas para o carregador de inicialização Optiboot? Especificamente, existem carregadores de inicialização menores (em termos de flash)? Que diferenças eles têm?
Optiboot é o menor gerenciador de inicialização disponível.
Porém, existe um gerenciador de inicialização muito mais poderoso (com console embutido para teste de hardware, verificação de conteúdo de RAM e Flash etc.) com um protocolo de comunicação stk500v2 mais desenvolvido e robusto entre o avrdude e o gerenciador de inicialização AVR.
Eu usei no ATmega2560 e no ATmega1284p. Ele funciona para o contador de programas de 3 e 2 bytes do MCU.
Este gerenciador de inicialização é baseado no gerenciador de inicialização Peter Fleury STK500v2, atualizado por Mark Sproul. Fiz edições para apoiá-lo na placa Goldilocks (um ATmega1284p).
O principal recurso é usar o protocolo STK500v2 para carregar a imagem do Flash no Arduino. Este protocolo é mais robusto e oferece melhores recursos de erro do que o protocolo avr109 . Além disso, o protocolo avr109 é chamado de "Arduino" no mundo do Arduino, porque alterna o DTR (para redefinir a placa e entrar automaticamente no gerenciador de inicialização), e o protocolo STK500v2 é chamado de "Wiring" no mundo do Arduino, devido ao mesmo razão.
O carregador de inicialização Fleury / Sproul STK500v2 foi projetado para funcionar com o ATmega2560, que possui um registro de programa de 3 bytes, devido ao tamanho maior do Flash. Mas também suporta placas normais de 2 bytes (na verdade, tudo o mais).
Para placas com bastante Flash (como o Goldilocks 1284p), existe um monitor de hardware que pode ser usado para consultar Flash, SRAM e hardware; você pode verificar as conexões sem código adicional e o conteúdo real do Flash e da EEPROM. Como o 1284p suporta 2 USART, eu adicionei a capacidade de depuração no USART1 , para que o processo de upload via USART0 não seja perturbado.
Isso parece fazer parte do FreeRTOS, esse gerenciador de inicialização é totalmente independente do FreeRTOS?
Jfpoilpret 28/03
1
É totalmente independente. O gerenciador de inicialização é usado para gravar flash com qualquer coisa. O FreeRTOS vem depois que o main () é iniciado. Eu apenas mantenho no mesmo repositório. Eu não escrevi, apenas modifiquei para meus propósitos.
feilipu
Isso parece interessante; seria útil se você pudesse resumir os recursos importantes do seu gerenciador de inicialização em sua resposta: tamanho no Flash, velocidade máxima de upload, velocidades do Arduino com as quais ele pode trabalhar e mais alguns detalhes sobre os testes de hardware).
Jfpoilpret 29/03/2014
É (com base no) carregador de inicialização Peter Fleury STK500v2, atualizado por Mark Sproul. Fiz edições para apoiá-lo na placa Goldilocks (um ATmega1284p). O principal recurso é usar o protocolo STK500v2 para carregar a imagem flash no Arduino. Este protocolo é mais robusto e oferece melhores recursos de erro do que o protocolo avr109. Além disso, o protocolo avr109 é chamado de "Arduino" no mundo do Arduino, porque alterna o DTR (para redefinir a placa e entrar automaticamente no gerenciador de inicialização), e o protocolo STK500v2 é chamado de "Wiring" no mundo do Arduino, devido ao mesmo razão.
feilipu 29/03
1
Obrigado pela informação, atualizei sua postagem, pois acho que essa informação deve fazer parte diretamente de sua resposta. Sinta-se à vontade para adicionar mais informações, se achar melhor!
Jfpoilpret 29/03
3
O TinySafeBoot é uma alternativa para dispositivos ATtiny e ATmega.
Compatível com muitos ATtinys e ATmegas (veja abaixo)
Acesso de leitura / gravação ao Flash e EEPROM.
Todos os IOs disponíveis para comunicação serial
Um fio, também com vários AVRs em uma única linha
Protocolo robusto com autobausa.
Ativado por Reset + Senha (opcional)
O usuário da senha e do tempo limite pode ser alterado a qualquer momento.
"Apagar emergência" para superar a senha perdida - mata todos os dados, mas deixa intacto o gerenciador de inicialização.
uno_uf.name=Arduino Uno / Upload Fast
uno_uf.upload.protocol=arduino
uno_uf.upload.maximum_size=32256
uno_uf.upload.speed=250000
uno_uf.bootloader.low_fuses=0xff
uno_uf.bootloader.high_fuses=0xde
uno_uf.bootloader.extended_fuses=0x05
uno_uf.bootloader.path=optiboot
uno_uf.bootloader.file=optiboot_atmega328_250000.hex
uno_uf.bootloader.unlock_bits=0x3F
uno_uf.bootloader.lock_bits=0x0F
uno_uf.build.mcu=atmega328p
uno_uf.build.f_cpu=16000000L
uno_uf.build.core=arduino
uno_uf.build.variant=standard
Altere os dois valores destacados para a taxa de transmissão que você planeja usar: 250000, 500000 ou 1000000 Salve e feche o arquivo boards.txt
Usando seu programador de ISP favorito, instale o novo gerenciador de inicialização. Não se esqueça de: Verifique se a placa Arduino Uno / Upload Fast está selecionada (Ferramentas / Placa) , se apropriado, verifique se a Porta serial do seu programador está selecionada (Ferramentas / Porta serial) , Verifique se o programador está selecionado (Ferramentas / Programador ) , Depois de instalar o carregador de inicialização, altere a Porta serial para a porta serial do seu Arduino Uno .
Texto acima ligeiramente modificado para compatibilidade com o site. Postagem original
Além disso, e o gerenciador de inicialização ATmegaboot, você não consegue encontrar nenhuma alternativa. Eu imagino que, se o Arduino o carregar em todos os Unos já produzidos, ele será bastante otimizado. O truque acima acelera o tempo de upload, mas não reduz o tamanho do gerenciador de inicialização. Você também pode remover o tempo de espera no gerenciador de inicialização para que ele tenha uma inicialização mais rápida.
O TinySafeBoot é uma alternativa para dispositivos ATtiny e ATmega.
Compatível com muitos ATtinys e ATmegas (veja abaixo)
Acesso de leitura / gravação ao Flash e EEPROM.
Todos os IOs disponíveis para comunicação serial
Um fio, também com vários AVRs em uma única linha
Protocolo robusto com autobausa.
Ativado por Reset + Senha (opcional)
O usuário da senha e do tempo limite pode ser alterado a qualquer momento.
"Apagar emergência" para superar a senha perdida - mata todos os dados, mas deixa intacto o gerenciador de inicialização.
ATtinys: ~ 550 bytes,
ATmegas: <512 bytes (!)
O TSB for ATtiny pode se atualizar.
O código-fonte é um software livre (GPL)
fonte
Err ... na verdade não. Na verdade, há uma modificação [não oficial] no Optiboot para torná-lo mais rápido durante o upload .
Texto acima ligeiramente modificado para compatibilidade com o site. Postagem original
Além disso, e o gerenciador de inicialização ATmegaboot, você não consegue encontrar nenhuma alternativa. Eu imagino que, se o Arduino o carregar em todos os Unos já produzidos, ele será bastante otimizado. O truque acima acelera o tempo de upload, mas não reduz o tamanho do gerenciador de inicialização. Você também pode remover o tempo de espera no gerenciador de inicialização para que ele tenha uma inicialização mais rápida.
Se você está preocupado com a maximização do flash, consulte: Como realmente encolher um esboço e esta resposta [em O que posso fazer se ficar sem memória Flash ou SRAM? ]
fonte