Índice:

Programando Arduino Over the Air (OTA) - Ameba Arduino: 4 etapas
Programando Arduino Over the Air (OTA) - Ameba Arduino: 4 etapas

Vídeo: Programando Arduino Over the Air (OTA) - Ameba Arduino: 4 etapas

Vídeo: Programando Arduino Over the Air (OTA) - Ameba Arduino: 4 etapas
Vídeo: РАСПАКОВКА RTL8195 Ameba 2024, Novembro
Anonim
Programando Arduino Over the Air (OTA) - Ameba Arduino
Programando Arduino Over the Air (OTA) - Ameba Arduino

Existem muitos microcontroladores Wi-Fi no mercado, muitos fabricantes gostam de programar seu microcontrolador Wi-Fi usando o IDE Arduino. No entanto, um dos recursos mais legais que um microcontrolador Wi-Fi tem a oferecer tende a ser esquecido, que é programar e enviar seu código remotamente e sem fio usando a função OTA (Over-The-Air).

Neste Instructable, vou mostrar como configurar OTA em seu microcontrolador Wi-Fi usando o onipresente Arduino IDE no microcontrolador Ameba Arduino Wi-Fi!

Suprimentos

Ameba Arduino x 1

Etapa 1: OTA

OTA
OTA

OTA (Over-The-Air) refere-se ao mecanismo de atualização online via Internet.

O Arduino IDE oferece o recurso OTA, que segue o fluxo de trabalho na figura acima.

(i) Arduino IDE procura por mDNS dispositivos com serviço Arduino IDEOTA na rede local.

(ii) Como o serviço mDNS está sendo executado no Ameba, o Ameba responde à pesquisa mDNS e abre a porta TCP específica para conexão.

(iii) O usuário desenvolve o programa no Arduino IDE. Ao concluir, escolha a porta de rede.

(iv) Clique em upload. Em seguida, o IDE do Arduino envia a imagem OTA para o Ameba por meio do TCP, o Ameba salva a imagem em um endereço específico e define a opção de inicialização para inicializar a partir desta imagem na próxima vez.

O fluxo de trabalho consiste em três partes: processo de imagem mDNS, TCP e OTA. Os detalhes relacionados ao mDNS são descritos no tutorial do mDNS. A programação de soquete TCP é usada na transferência de imagens e já é fornecida na API OTA.

Na próxima seção, discutiremos como processar a imagem OTA e apresentaremos alguns conhecimentos básicos sobre o layout da memória flash Ameba e o fluxo de inicialização.

Etapa 2: Layout da memória Flash Ameba

Layout de memória flash Ameba
Layout de memória flash Ameba

O tamanho da memória flash do Ameba RTL8195A é 2 MB, varia de 0x00000000 a 0x00200000. No entanto, o tamanho da memória flash do Ameba RTL8710 é de 1 MB. Para ajustar o uso de placas diferentes, presumimos que o layout da memória flash é de 1 MB.

Conforme mostrado na figura acima, o programa Ameba ocupa três partes da memória flash:

- Imagem de inicialização:

Ou seja, o bootloader. Quando o Ameba é inicializado, ele coloca a imagem de inicialização na memória e executa a inicialização. Além disso, determina onde proceder após o bootloader. Bootloader examina o endereço OTA e o pino de recuperação na área de dados do sistema e determina qual imagem será executada posteriormente. No final do bootloader, ele coloca a imagem na memória e inicia a execução.

- Imagem padrão 2:

O código do desenvolvedor é colocado nesta parte, o endereço começa em 0x0000B000. Os primeiros 16 bytes são o cabeçalho da imagem, 0x0000B008 ~ 0x0000B00F compreende a assinatura, que é usada para verificar se a imagem é válida. O campo de assinatura tem dois valores válidos para distinguir a nova imagem da antiga.

- Imagem OTA:

Os dados nesta parte também são código do desenvolvedor. Por padrão, esta parte da memória começa em 0x00080000 (pode ser alterada). As principais diferenças entre a imagem OTA e a imagem padrão 2 são o endereço da memória flash e o valor da assinatura.

Além do código, existem alguns blocos de dados:

- Dados do sistema:

O bloco de dados do sistema começa em 0x00009000. Existem dois dados relacionados à OTA:

1. Endereço OTA: dados de 4 bytes a partir de 0x00009000. Ele informa o endereço da imagem OTA. Se o valor do endereço OTA for inválido (ou seja, 0xFFFFFFFF), a imagem OTA na memória flash não pode ser carregada corretamente.

2. Pino de recuperação: dados de 4 bytes começando em 0x00009008, o pino de recuperação é usado para determinar qual imagem (imagem padrão 2 ou imagem OTA) executar quando ambas as imagens são válidas. Se o valor do pino de recuperação for inválido (ou seja, 0xFFFFFFFF), a nova imagem será executada por padrão.

Os dados do sistema serão removidos quando carregarmos o programa no Ameba via DAP. Ou seja, o endereço OTA será removido e o Ameba determinará que não há imagem OTA.

- Dados de calibração: Os dados de calibração periférica são colocados neste bloco. Normalmente, esses dados não devem ser excluídos.

Etapa 3: Fluxo de inicialização

Fluxo de inicialização
Fluxo de inicialização

Da imagem acima, Discutimos os seguintes cenários: (i) OTA não é usado, use DAP para fazer upload do programa:

Nessa situação, o bootloader verifica a assinatura da imagem padrão 2 e o endereço OTA. Uma vez que o endereço OTA foi removido, a imagem padrão 2 será selecionada para execução.

(ii) a imagem OTA é transferida para o Ameba, o endereço OTA está configurado corretamente, o pino de recuperação não está configurado:

O Ameba recebeu imagem atualizada via OTA, a assinatura da imagem padrão 2 seria definida como assinatura antiga.

Bootloader verifica a assinatura da imagem padrão 2 e o endereço OTA. Ele descobrirá que o endereço OTA contém uma imagem OTA válida. Como o pino de recuperação não está definido, ele escolhe a nova imagem (ou seja, imagem OTA) a ser executada.

(iii) a imagem OTA é transferida para o Ameba, o endereço OTA está configurado corretamente, o pino de recuperação está configurado:

O Ameba recebeu imagem atualizada via OTA, a assinatura da imagem padrão 2 seria definida como assinatura antiga.

Bootloader verifica a assinatura da imagem padrão 2 e o endereço OTA. Ele descobrirá que o endereço OTA contém uma imagem OTA válida. Em seguida, verifique o valor do pino de recuperação. Se o pino de recuperação estiver conectado a LOW, a nova imagem (ou seja, imagem OTA) será executada. Se o pino de recuperação estiver conectado a HIGH, a imagem antiga (ou seja, a imagem padrão 2) será executada.

Etapa 4: Exemplo

Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo

Para usar o recurso OTA, atualize o firmware DAP para a versão> 0.7 (v0.7 não está incluído). O firmware DAP padrão de fábrica é a versão 0.7. Siga as instruções para atualizar o firmware DAP:

Abra o exemplo: "Arquivo" -> "Exemplos" -> "AmebaOTA" -> "ota_basic"

Preencha as informações de ssid e senha no código de amostra para conexão de rede.

Existem alguns parâmetros relacionados ao OTA:

§ MY_VERSION_NUMBER : Na primeira versão, precisamos definir o endereço OTA e o PIN de recuperação. Uma vez que desta vez carregamos via USB é a primeira versão, não precisamos alterar este valor.

§ OTA_PORT : Arduino IDE encontrará o Ameba via mDNS. O Ameba dirá ao Arduino IDE que abre a porta TCP 5000 para aguardar a imagem OTA.

§ RECOVERY_PIN : Configure o pino usado para recuperação. Usamos o pino 18 aqui.

Em seguida, usamos o programa de upload USB para Ameba. Clique em Ferramentas -> Portas, verifique a porta serial a ser usada:

Observe que o Arduino IDE usa uma porta para upload de programa e outputlog. Para evitar a situação em que o registro não pode ser gerado quando usamos OTA, usamos outro terminal de porta serial (por exemplo, termo Tera ou massa) em vez de monitor serial para observar a mensagem de registro.

Em seguida, clique em upload e pressione o botão reset.

Na mensagem de registro:

1. Entre “===== Enter Image 1 ====” e “Enter Image 2 ====”, você pode encontrar “Flash Image 2: Addr 0xb000”. Isso significa que o Ameba determina inicializar a partir da imagem padrão 2 em 0xb000.

2. Depois de “Enter Image 2 ====”, você pode encontrar “This is version 1”. Esta é a mensagem de log que adicionamos no esboço.

3. Após o Ameba ser conectado ao AP e obter o endereço IP “192.168.1.238”, ele ativa o mDNS e aguarda o cliente.

Em seguida, modificamos "MY_VERSION_NUMBER" para 2.

Clique em "Ferramentas" -> "Porta", você pode ver uma lista de "Portas de rede". Encontre "MyAmeba em 192.168.1.238 (Ameba RTL8195A)", MyAmeba é o nome do dispositivo mDNS que definimos no código de amostra e "192.168.1.238" é o IP da Ameba.

Se você não conseguir encontrar a porta de rede da Ameba, confirme:

- se o seu computador e o Ameba estão na mesma rede local?

- tente reiniciar o Arduino IDE.

- verifique a mensagem de log no Serial Monitor para ver se o Ameba está conectado ao AP com sucesso.

Em seguida, clique em upload. Desta vez, o programa será carregado via TCP. No terminal de log, você pode ver as informações de conexão do cliente.

Quando a imagem OTA é baixada com sucesso, o Ameba irá reiniciar e o log seguinte será mostrado no terminal de log.

- Entre “===== Enter Image 1 ====” e “Enter Image 2 ====”, você pode ver uma mensagem de log “Flash Image 2: Addr 0x80000”. Isso significa que o Ameba determina inicializar a partir da imagem OTA em 0x80000.

- Depois de “Enter Image 2 ====”, o log “This is version 2” é a mensagem que adicionamos no sketch.

Para recuperar a imagem anterior após o download da imagem OTA para o Ameba, conecte o pino de recuperação que definimos no esboço (ou seja, pino 18) para ALTO (3,3 V) e pressione reset.

Em seguida, a imagem padrão 2 será escolhida durante a inicialização. Observe que a imagem OTA baixada não é excluída, uma vez que o pino de recuperação seja desconectado de HIGH, a imagem OTA será executada.

Resumimos o fluxo de desenvolvimento usando OTA na figura a seguir.

Recomendado: