Gostaria de gerenciar meu código fonte do Arduino (projetos e bibliotecas) sob controle de origem com testes contínuos. Como posso compilar automaticamente o código com ferramentas de integração contínua, para garantir que cada versão seja compilada corretamente? Na melhor das hipóteses, deve-se conseguir configurar compilações para vários processadores, opcionalmente executar testes de unidade e verificar o tamanho binário máximo.
programming
version-control
Jakob
fonte
fonte
avr-size
?Respostas:
A versão mais recente do Arduino ide possui uma interface de linha de comando para criar e fazer upload de código. Mas você pode obviamente fazer isso por makefile e avrdude. Agora, você compilou seu código, mas precisa testar. Como o simulador é complexo, incompleto, expansivo e ... Apenas uma simulação, e como o chip é relativamente barato, a construção de uma placa fará a interação HW E verificará os resultados da maneira mais rápida e fácil. Nesse quadro "especial", você pode fazer o upload de algo como um intérprete, fazer um teste no PC e executá-lo, algo semelhante ao firmata para o arduino. Pelo menos é assim que eu construí-lo. E, tanto quanto eu sei, não há uma implementação conhecida, mesmo que eu tenha certeza de que muitos setores deveriam e provavelmente fazem isso.
fonte
Como criador do PlatformIO , recomendo que você analise. É um construtor de código de plataforma cruzada e um gerenciador de bibliotecas ausente. Ele pode criar o mesmo código para as muitas plataformas e placas de desenvolvimento incorporado populares.
O PlatformIO pode ser integrado a muitos sistemas populares de Integração Contínua (CI) (ou os seus). Veja a documentação com exemplos .
Vamos dar uma olhada no
.travis.yml
config / template para o Travis CI:Exemplo
Integração para
USB_Host_Shield_2.0
projeto. O.travis.yml
arquivo de configuração:fonte
Um exemplo de configuração da integração contínua Jenkins para o projeto Arduino pode ser encontrado aqui: Integração contínua para sistemas embarcados
O exemplo mostra como criar e fazer upload de imagens no Arduino e executar testes da web Selenium (o sistema em teste é um servidor da web baseado em Arduino).
fonte
Eu escrevi esse framework de teste mais unittest para o Arduino, já que eu não conseguia encontrar a existência adequada. Embora eu não o tenha escrito para o CI, seria adequado para o trabalho do CI, pois não requer hardware, mas pode ser executado no PC.
A execução dos trabalhos de IC sem o hardware tem bons e maus lados, bons lados porque
O lado negativo é:
fonte
Acabei de montar um artigo de tamanho decente como resposta a esta pergunta relacionada sobre uma estrutura de teste de unidade de CI / Arduino que escrevi que finalmente está madura o suficiente para começar a falar publicamente.
A
arduino_ci
ruby gem suporta testes locais e integração com o Travis CI (por exemplo, este trabalho de construção para a biblioteca Adafruit FONA ).Alguns exemplos de como ele se integra:
Eu tenho um problema criado para relatar o tamanho do esboço, mas nenhum trabalho foi feito sobre isso. Também é possível que eu possa paralelizar as compilações algum dia, mas no momento não tenho muita certeza de como faria isso. No momento, a etapa de compilação mais demorada no Travis CI é o download do IDE do Arduino ... o teste paralelo não prejudicará muito se todas as tarefas precisarem fazer essa etapa.
fonte
Eu recomendaria usar o plug-in do arduino eclipse chamado sloeber sloeber.io, do qual sou o líder do projeto.
Ele se integra ao controle de versão e permite a criação em várias plataformas, pois suporta várias configurações.
Embora ainda não seja uma prova idiota, eu documentei e demonstrei o teste de unidade do código arduino no PC local usando a estrutura de teste do google.
Aqui está um link para um blog que contém uma apresentação de como você pode fazê-lo. http://blog.baeyens.it/#post25
fonte