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.
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