"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como implementar a função OTA para ESPith SDK x (controlador programável por script)

Como implementar a função OTA para ESPith SDK x (controlador programável por script)

Publicado em 01/11/2024
Navegar:748

Como um dispositivo de Internet das Coisas que suporta conexão remota à Internet, a atualização OTA local ou remota também é uma função importante do controlador de programação de script, pois não há garantia de que o relé esteja completamente livre de bugs, encontrados no uso de bugs, se não houver interface de atualização OTA, é difícil permitir que os clientes atualizem o firmware através da porta serial, o controlador só pode ser atualizado de volta para a fábrica, o custo é alto, o impacto do grande.

Além disso, o cliente pode ter algumas funções personalizadas que não podem ser alcançadas por meio da programação chinesa e precisa atualizar o firmware do controlador para alcançá-las.

Essas duas situações precisam ser resolvidas através da função OTA local ou remota.

Esses dias demoraram um pouco para completar esta função, agora resumida da seguinte forma:
(1) O FLASH do ESP8266 pode armazenar dois firmwares com o nome user1.bin a user2.bin, e os endereços dos dois firmwares são determinados pelo programa de inicialização boot.bin armazenado no endereço 0x0000, e os endereços de armazenamento são diferentes para diferentes capacidades de flash.
Por exemplo, ESP8266-01S com capacidade Flash de 1Mbyte, o endereço de armazenamento é 0x01000 e 0x81000 respectivamente, enquanto ESP8266-07S com capacidade FLASH de 4Mbyte, o endereço de armazenamento é 0x01000 e 0x101000 respectivamente.

(2) através da função system_upgrade_userbin_check valor de retorno para obter o programa atual em execução user1.bin ou user2.bin, atualização de firmware, para outra área de armazenamento de firmware para gravar o firmware completo, por exemplo, se a execução atual for armazenada no 0x1000 do user1.bin, em seguida, para o endereço 0x81000(ESP8266-01S) ou 0x101000(EPS8266-07S) para escrever o firmware user2.bin, após a escrita, e então através da função system_upgrade_flag_set(0x02) para informar a gravação do SDK estiver concluído, o SDK define os parâmetros do sistema, para que quando a inicialização do ESP8266 inicialize para outro firmware.

3) A prática oficial recomendada é baixar o firmware para o servidor em nuvem para a memória via protocolo http, não utilizei este programa, principalmente por duas considerações, em primeiro lugar, se este programa foi rigorosamente verificado, e se há consideração suficiente na validação de dados para evitar a atualização para tijolo, duvido. Em segundo lugar, este programa exige que o controlador seja capaz de se conectar a uma rede externa para baixar o firmware de um servidor, o que não é fácil de fazer.

Atualmente estou usando Delphi para desenvolver um conjunto de software de atualização de firmware, o software como um cliente TCP para conectar-se diretamente ao controlador ou conectar-se ao gateway TCP do servidor em nuvem e depois transferi-lo para o controlador e, em seguida, de acordo com o 512 bytes para um quadro de dados para enviar o firmware ao controlador.

Em seguida, esse conjunto de lógica pode ser portado para o servidor, o cliente pode abrir a página da web por meio do navegador para enviar o firmware ao controlador.

4) A integridade dos dados é totalmente verificada, o primeiro quadro de dados para fazer a soma de verificação crc32, o firmware é gravado no flash e depois lido para comparar com o valor gravado e, ao mesmo tempo, calcular o valor de crc32, e o computador superior para enviar o valor de crc32 em comparação com os dados de leitura e gravação são iguais, e também o mesmo valor de crc, considera-se que o quadro de dados foi gravado com sucesso;
Ao mesmo tempo, o valor crc32 de cada quadro de dados e, em seguida, faça o valor crc32, para obter um valor crc32 total, comparado com o valor crc32 total enviado pelo computador host, o valor é o mesmo antes de chamar a função system_upgrade_flag_set( 0x02) para permitir que o SDK mude para o firmware de inicialização.

(5) Escreva em duas áreas de firmware diferentes do firmware user1.bin, user2.bin não é o mesmo, para desenvolvimento de SDK RTOS, você precisa modificar o valor da variável Makefile APP para gerar user1.bin, user2 .bin, respectivamente, o computador host de acordo com o controlador para retornar à execução atual do firmware da área de armazenamento, selecione outra área de armazenamento do firmware enviado ao controlador. O computador host seleciona o firmware na outra área de armazenamento de acordo com a área de armazenamento do firmware atualmente em execução retornado pelo controlador.

Se o mesmo firmware for usado em ambas as áreas de armazenamento, o ESP8266 não poderá iniciar normalmente.

How to implement OTA function for ESPith SDK x(script programmable controller)

How to implement OTA function for ESPith SDK x(script programmable controller)

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/zhangzhuyue/how-to-implement-ota-function-for-esp8266-with-sdk-2xxscript-programmable-controller-a60 Se houver alguma violação, entre em contato com study_golang @163.com excluir
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3