As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Fazer download, compilação, atualização e execução de demonstração OTA do FreeRTOS no RX65N da Renesas
Importante
Essa integração de referência está hospedada no repositório Amazon-FreeRTOS, que está preterido. Recomendamos começar aqui ao criar um novo projeto. Se você já tem um projeto FreeRTOS existente baseado no repositório Amazon-FreeRTOS que está preterido, consulte o Guia de migração do RTOS repositório Github gratuito da Amazon.
Esse capítulo mostra como você faz download, compilação, atualização e execução das aplicações de demonstração OTA do FreeRTOS no RX65N da Renesas.
Tópicos
Configuração do ambiente operacional
Os procedimentos nesta seção usam os seguintes ambientes:
-
IDE: e2 studio 7.8.0, e2 studio 2020-07
-
Cadeia de ferramentas: compilador CCRX v3.0.1
-
Dispositivos de destino: RSKRX65N-2MB
-
Depuradores: emulador E2, E2 Lite
-
Software: Renesas Flash Programmer, Renesas Secure Flash Programmer.exe, Tera Term
Como configurar o hardware
-
Conecte o emulador E2 Lite e a porta serial USB à placa RX65N e ao PC.
-
Conecte a fonte de alimentação ao RX65N.
Configure seus AWS recursos
-
Para executar as demonstrações do FreeRTOS, você deve ter AWS uma conta com um usuário do IAM que tenha permissão para acessar os serviços. AWS IoT Caso ainda não tenha, siga as etapas em Configurando sua AWS conta e permissões.
-
Para configurar as atualizações OTA, siga as etapas em OTApré-requisitos de atualização. Em especial, siga as etapas em Pré-requisitos para atualizações usando OTA MQTT.
-
Abra o console de AWS IoT
. -
No painel de navegação à esquerda, escolha Gerenciar e, depois, Coisas para criar uma coisa.
Uma coisa é uma representação de um dispositivo ou entidade lógica em AWS IoT. Ela pode ser um dispositivo físico ou sensor (por exemplo, uma lâmpada ou um interruptor em uma parede). Também pode ser uma entidade lógica, como uma instância de um aplicativo ou entidade física que não se conecta AWS IoT, mas está relacionada a dispositivos que o fazem (por exemplo, um carro com sensores de motor ou um painel de controle). AWS IoT fornece um registro de coisas que ajuda você a gerenciar suas coisas.
-
Escolha Criar e Criar uma única coisa.
-
Insira o Nome da coisa e escolha Próximo.
-
Selecione Criar certificado.
-
Faça download dos três arquivos criados e escolha Ativar.
-
Selecione a opção Anexar uma política.
-
Selecione a política que você criou em Política de dispositivo.
Cada dispositivo que recebe uma atualização OTA usando o MQTT deve ser registrado como um item AWS IoT e deve ter uma política anexada, como a listada. Você pode encontrar mais informações sobre os itens nos objetos
"Resource"
e"Action"
em Ações da política principal do AWS IoT e Recursos da ação principal do AWS IoT.Observações
-
As
iot:Connect
permissões permitem que seu dispositivo se conecte AWS IoT ao MQTT. -
As permissões de
iot:Subscribe
eiot:Publish
para tópicos de trabalhos da AWS IoT (.../jobs/*
) permitem que o dispositivo conectado receba notificações de trabalho e documentos de trabalho, e publique o estado de conclusão da execução de um trabalho. -
As
iot:Publish
permissõesiot:Subscribe
e sobre os tópicos de fluxos AWS IoT OTA (.../streams/*
) permitem que o dispositivo conectado busque dados de atualização do OTA de. AWS IoT Essas permissões são necessárias para executar atualizações de firmware pelo MQTT. -
As
iot:Receive
permissões AWS IoT Core permitem publicar mensagens sobre esses tópicos no dispositivo conectado. Essa permissão é verificada em cada entrega de uma mensagem de MQTT. Você pode usar essa permissão para revogar o acesso a clientes que estão inscritos em um tópico atualmente.
-
-
-
Para criar um perfil de assinatura de código e registrar um certificado de assinatura de código em. AWS
-
Para criar as chaves e a certificação, consulte a seção 7.3 "Geração de pares de chaves ECDSA-SHA256 com OpenSSL" na Política de criação de atualização de firmware de MCU da Renesas
. -
Abra o console de AWS IoT
. No painel de navegação esquerdo, selecione Gerenciar, depois, Trabalhos. Selecione Criar um trabalho, depois Criar trabalho de atualização OTA. -
Em Selecionar dispositivos para atualizar, escolha Selecionar e escolha a coisa que você criou anteriormente. Escolha Próximo.
-
Na página Criar um trabalho de atualização OTA do FreeRTOS, faça o seguinte:
-
Em Selecionar o protocolo para transferência de imagem do firmware, escolha MQTT.
-
Em Selecionar e assinar a imagem de firmware, escolha Assinar uma nova imagem de firmware para mim.
-
Em Perfil de assinatura de código, escolha Criar.
-
Na janela Criar um perfil de assinatura de código, insira um nome de perfil. Para a plataforma de hardware de dispositivo, selecione o Windows Simulator. Para o certificado de assinatura de código, escolha Importar.
-
Navegue para selecionar o certificado (
secp256r1.crt
), a chave privada do certificado (secp256r1.key
) e a cadeia de certificados (ca.crt
). -
Insira um nome de caminho do certificado de assinatura de código no dispositivo. Em seguida, selecione Criar.
-
-
-
Para conceder acesso à assinatura de código para AWS IoT, siga as etapas emConceda acesso à assinatura de código para AWS IoT.
Se não tem o Tera Term instalado no PC, você pode baixá-lo em https://ttssh2.osdn.jp/index.html.en
Importe, configure o arquivo de cabeçalho e compile aws_demos e boot_loader
Para começar, você seleciona a versão mais recente do pacote FreeRTOS, e ela será GitHub baixada e importada automaticamente para o projeto. Dessa forma, você pode se concentrar na configuração do FreeRTOS e na escrita do código da aplicação.
-
Lançamento do e2 studio.
-
Escolha o Arquivo e depois Importar....
-
Selecione o projeto Renesas GitHub FreeRTOS (com bibliotecas de IoT).
-
Escolha Verificar mais versões... para mostrar a caixa de diálogo de download.
-
Selecione o pacote mais recente.
-
Escolha Concordo para aceitar o contrato de licença do usuário final.
-
Aguarde a conclusão do download.
-
Selecione os projetos aws_demos e boot_loader e escolha Concluir para importá-los.
-
Para ambos os projetos, abra as propriedades do projeto. No painel de navegação, selecione Editor de cadeia de ferramentas.
-
Escolha a Cadeia de ferramentas atual.
-
Escolha o Builder atual.
-
-
No painel de navegação, selecione Configurações. Escolha a guia Cadeia de ferramentas e, em seguida, escolha a Versão da cadeia de ferramentas.
Escolha a guia Configurações de ferramenta, expanda Conversor e escolha Saída. Na janela principal, verifique se Arquivo hexadecimal de saída está selecionado e escolha o tipo de arquivo de saída.
-
No projeto carregador de inicialização, abra
projects\renesas\rx65n-rsk\e2studio\boot_loader\src\key\code_signer_public_key.h
e insira a chave pública. Para obter informações sobre como criar uma chave pública, consulte Como implementar o OTA do FreeRTOS usando o Amazon Web Services no RX65Ne a seção 7.3 "Geração de pares de chaves ECDSA-SHA256 com OpenSSL" na Política de criação de atualização de firmware de MCU da Renesas . Em seguida, compile o projeto para criar
boot_loader.mot
. -
Abra o projeto
aws_demos
.-
Abra o console de AWS IoT
. -
No painel de navegação à esquerda, escolha Configurações. Anote seu endpoint personalizado na caixa de texto Endpoint de dados do dispositivo.
-
Escolha Gerenciar e, em seguida, Coisas. Anote o nome do AWS IoT item do seu quadro.
-
No projeto
aws_demos
, abrademos/include/aws_clientcredential.h
e especifique os seguintes valores.#define clientcredentialMQTT_BROKER_ENDPOINT[] = "
Your AWS IoT endpoint
"; #define clientcredentialIOT_THING_NAME "The AWS IoT thing name of your board
" -
Abra o arquivo
tools/certificate_configuration/CertificateConfigurator.html
. -
Importe o arquivo PEM do certificado e o arquivo PEM da chave privada que você baixou anteriormente.
-
Escolha Gerar e salvar aws_clientcredential_keys.h e substitua esse arquivo no diretório
demos/include/
. -
Abra o arquivo
vendors/renesas/boards/rx65n-rsk/aws_demos/config_files/ota_demo_config.h
e especifique esses valores.#define otapalconfigCODE_SIGNING_CERTIFICATE [] = "
your-certificate-key
";No qual
your-certificate-key
é o valor do arquivosecp256r1.crt
. Lembre-se de adicionar "\" após cada linha na certificação. Para obter mais informações sobre a criação do arquivosecp256r1.crt
, consulte Como implementar o OTA do FreeRTOS usando o Amazon Web Services no RX65Ne a seção 7.3 "Geração de pares de chaves ECDSA-SHA256 com OpenSSL" na Política de criação de atualização de firmware de MCU da Renesas .
-
-
Tarefa A: Instalar a versão inicial do firmware
-
Abra o arquivo
vendors/renesas/boards/board/aws_demos/config_files/aws_demo_config.h
, comente#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED
e definaCONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED
ouCONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED
. -
Abra o arquivo
demos/include/ aws_application_version.h
e defina a versão inicial do firmware como0.9.2
. -
Altere as configurações a seguir em Visualizador de seção.
-
Escolha Compilar para criar o arquivo
aws_demos.mot
.
-
-
Crie o arquivo
userprog.mot
com o Renesas Secure Flash Programmer.userprog.mot
é uma combinação deaws_demos.mot
eboot_loader.mot
. Você pode atualizar esse arquivo para o RX65N-RSK para instalar o firmware inicial.-
Baixe https://github.com/renesas/Amazon-FreeRTOS-Tools
e abra Renesas Secure Flash Programmer.exe
. -
Escolha a guia Firmware inicial e defina os seguintes parâmetros:
-
Caminho da chave privada: a localização de
secp256r1.privatekey
. -
Caminho do arquivo do carregador de inicialização: a localização de
boot_loader.mot
(projects\renesas\rx65n-rsk\e2studio\boot_loader\HardwareDebug
). -
Caminho do arquivo: a localização do arquivo
aws_demos.mot
(projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug
).
-
-
Crie um diretório chamado
init_firmware
gereuserprog.mot
e salve-o no diretórioinit_firmware
. Verifique se o que foi gerado teve êxito.
-
-
Atualize o firmware inicial no RX65N-RSK.
-
Baixe a versão mais recente do Renesas Flash Programmer (GUI de programação) em https://www.renesas.com/tw/en/products/software-tools/tools/programmer/renesas-flash-programmer-programming-gui.html
. -
Abra o arquivo
vendors\renesas\rx_mcu_boards\boards\rx65n-rsk\aws_demos\flash_project\erase_from_bank\ erase.rpj
para apagar dados no banco. -
Escolha Iniciar para apagar o banco.
-
Para atualizar
userprog.mot
, escolha Procurar... e navegue até o diretórioinit_firmware
, selecione o arquivouserprog.mot
e escolha Iniciar.
-
-
A versão 0.9.2 (versão inicial) do firmware foi instalada no seu RX65N-RSK. Agora, a placa RX65N-RSK está recebendo as atualizações OTA. Ao abrir o Tera Term no PC, você verá algo parecido com o seguinte quando o firmware inicial for executado.
------------------------------------------------- RX65N secure boot program ------------------------------------------------- Checking flash ROM status. bank 0 status = 0xff [LIFECYCLE_STATE_BLANK] bank 1 status = 0xfc [LIFECYCLE_STATE_INSTALLING] bank info = 1. (start bank = 0) start installing user program. copy secure boot (part1) from bank0 to bank1...OK copy secure boot (part2) from bank0 to bank1...OK update LIFECYCLE_STATE from [LIFECYCLE_STATE_INSTALLING] to [LIFECYCLE_STATE_VALID] bank1(temporary area) block0 erase (to update LIFECYCLE_STATE)...OK bank1(temporary area) block0 write (to update LIFECYCLE_STATE)...OK swap bank... ------------------------------------------------- RX65N secure boot program ------------------------------------------------- Checking flash ROM status. bank 0 status = 0xf8 [LIFECYCLE_STATE_VALID] bank 1 status = 0xff [LIFECYCLE_STATE_BLANK] bank info = 0. (start bank = 1) integrity check scheme = sig-sha256-ecdsa bank0(execute area) on code flash integrity check...OK jump to user program 0 1 [ETHER_RECEI] Deferred Interrupt Handler Task started 1 1 [ETHER_RECEI] Network buffers: 3 lowest 3 2 1 [ETHER_RECEI] Heap: current 234192 lowest 234192 3 1 [ETHER_RECEI] Queue space: lowest 8 4 1 [IP-task] InitializeNetwork returns OK 5 1 [IP-task] xNetworkInterfaceInitialise returns 0 6 101 [ETHER_RECEI] Heap: current 234592 lowest 233392 7 2102 [ETHER_RECEI] prvEMACHandlerTask: PHY LS now 1 8 3001 [IP-task] xNetworkInterfaceInitialise returns 1 9 3092 [ETHER_RECEI] Network buffers: 2 lowest 2 10 3092 [ETHER_RECEI] Queue space: lowest 7 11 3092 [ETHER_RECEI] Heap: current 233320 lowest 233320 12 3193 [ETHER_RECEI] Heap: current 233816 lowest 233120 13 3593 [IP-task] vDHCPProcess: offer c0a80a09ip 14 3597 [ETHER_RECEI] Heap: current 233200 lowest 233000 15 3597 [IP-task] vDHCPProcess: offer c0a80a09ip 16 3597 [IP-task] IP Address: 192.168.10.9 17 3597 [IP-task] Subnet Mask: 255.255.255.0 18 3597 [IP-task] Gateway Address: 192.168.10.1 19 3597 [IP-task] DNS Server Address: 192.168.10.1 20 3600 [Tmr Svc] The network is up and running 21 3622 [Tmr Svc] Write certificate... 22 3697 [ETHER_RECEI] Heap: current 232320 lowest 230904 23 4497 [ETHER_RECEI] Heap: current 226344 lowest 225944 24 5317 [iot_thread] [INFO ][DEMO][5317] ---------STARTING DEMO--------- 25 5317 [iot_thread] [INFO ][INIT][5317] SDK successfully initialized. 26 5317 [iot_thread] [INFO ][DEMO][5317] Successfully initialized the demo. Network type for the demo: 4 27 5317 [iot_thread] [INFO ][MQTT][5317] MQTT library successfully initialized. 28 5317 [iot_thread] [INFO ][DEMO][5317] OTA demo version 0.9.2 29 5317 [iot_thread] [INFO ][DEMO][5317] Connecting to broker... 30 5317 [iot_thread] [INFO ][DEMO][5317] MQTT demo client identifier is rx65n-gr-rose (length 13). 31 5325 [ETHER_RECEI] Heap: current 206944 lowest 206504 32 5325 [ETHER_RECEI] Heap: current 206440 lowest 206440 33 5325 [ETHER_RECEI] Heap: current 206240 lowest 206240 38 5334 [ETHER_RECEI] Heap: current 190288 lowest 190288 39 5334 [ETHER_RECEI] Heap: current 190088 lowest 190088 40 5361 [ETHER_RECEI] Heap: current 158512 lowest 158168 41 5363 [ETHER_RECEI] Heap: current 158032 lowest 158032 42 5364 [ETHER_RECEI] Network buffers: 1 lowest 1 43 5364 [ETHER_RECEI] Heap: current 156856 lowest 156856 44 5364 [ETHER_RECEI] Heap: current 156656 lowest 156656 46 5374 [ETHER_RECEI] Heap: current 153016 lowest 152040 47 5492 [ETHER_RECEI] Heap: current 141464 lowest 139016 48 5751 [ETHER_RECEI] Heap: current 140160 lowest 138680 49 5917 [ETHER_RECEI] Heap: current 138280 lowest 138168 59 7361 [iot_thread] [INFO ][MQTT][7361] Establishing new MQTT connection. 62 7428 [iot_thread] [INFO ][MQTT][7428] (MQTT connection 81cfc8, CONNECT operation 81d0e8) Wait complete with result SUCCESS. 63 7428 [iot_thread] [INFO ][MQTT][7428] New MQTT connection 4e8c established. 64 7430 [iot_thread] [OTA_AgentInit_internal] OTA Task is Ready. 65 7430 [OTA Agent T] [prvOTAAgentTask] Called handler. Current State [Ready] Event [Start] New state [RequestingJob] 66 7431 [OTA Agent T] [INFO ][MQTT][7431] (MQTT connection 81cfc8) SUBSCRIBE operation scheduled. 67 7431 [OTA Agent T] [INFO ][MQTT][7431] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Waiting for operation completion. 68 7436 [ETHER_RECEI] Heap: current 128248 lowest 127992 69 7480 [OTA Agent T] [INFO ][MQTT][7480] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Wait complete with result SUCCESS. 70 7480 [OTA Agent T] [prvSubscribeToJobNotificationTopics] OK: $aws/things/rx65n-gr-rose/jobs/$next/get/accepted 71 7481 [OTA Agent T] [INFO ][MQTT][7481] (MQTT connection 81cfc8) SUBSCRIBE operation scheduled. 72 7481 [OTA Agent T] [INFO ][MQTT][7481] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Waiting for operation completion. 73 7530 [OTA Agent T] [INFO ][MQTT][7530] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Wait complete with result SUCCESS. 74 7530 [OTA Agent T] [prvSubscribeToJobNotificationTopics] OK: $aws/things/rx65n-gr-rose/jobs/notify-next 75 7530 [OTA Agent T] [prvRequestJob_Mqtt] Request #0 76 7532 [OTA Agent T] [INFO ][MQTT][7532] (MQTT connection 81cfc8) MQTT PUBLISH operation queued. 77 7532 [OTA Agent T] [INFO ][MQTT][7532] (MQTT connection 81cfc8, PUBLISH operation 818b80) Waiting for operation completion. 78 7552 [OTA Agent T] [INFO ][MQTT][7552] (MQTT connection 81cfc8, PUBLISH operation 818b80) Wait complete with result SUCCESS. 79 7552 [OTA Agent T] [prvOTAAgentTask] Called handler. Current State [RequestingJob] Event [RequestJobDocument] New state [WaitingForJob] 80 7552 [OTA Agent T] [prvParseJSONbyModel] Extracted parameter [ clientToken: 0:rx65n-gr-rose ] 81 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: execution 82 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: jobId 83 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: jobDocument 84 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: afr_ota 85 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: protocols 86 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: files 87 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: filepath 99 7651 [ETHER_RECEI] Heap: current 129720 lowest 127304 100 8430 [iot_thread] [INFO ][DEMO][8430] State: Ready Received: 1 Queued: 0 Processed: 0 Dropped: 0 101 9430 [iot_thread] [INFO ][DEMO][9430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 102 10430 [iot_thread] [INFO ][DEMO][10430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 103 11430 [iot_thread] [INFO ][DEMO][11430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 104 12430 [iot_thread] [INFO ][DEMO][12430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 105 13430 [iot_thread] [INFO ][DEMO][13430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 106 14430 [iot_thread] [INFO ][DEMO][14430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 107 15430 [iot_thread] [INFO ][DEMO][15430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0
-
Tarefa B: Atualização da versão do firmware
-
Abra o arquivo
demos/include/aws_application_version.h
e incremente o valor do tokenAPP_VERSION_BUILD
para0.9.3
. -
Recrie o projeto.
-
-
Crie o arquivo
userprog.rsu
com o Renesas Secure Flash Programmer para atualizar a versão do seu firmware.-
Abra o arquivo
Amazon-FreeRTOS-Tools\Renesas Secure Flash Programmer.exe
. -
Escolha a guia Atualizar firmware e defina os seguintes parâmetros:
-
Caminho do arquivo: a localização do arquivo
aws_demos.mot
(projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug
).
-
-
Crie um diretório chamado
update _firmware
. Gereuserprog.rsu
e salve-o no diretórioupdate_firmware
. Verifique se o que foi gerado teve êxito.
-
-
Faça o upload da atualização do firmware
userproj.rsu
, em um bucket do Amazon S3, conforme descrito em Criação de um bucket do Amazon S3 para armazenar a atualização. -
Crie uma trabalho para atualizar o firmware no RX65N-RSK.
AWS IoT Jobs é um serviço que notifica um ou mais dispositivos conectados sobre um Job pendente. Um trabalho pode ser usado para gerenciar uma frota de dispositivos, atualizar o firmware e os certificados de segurança em dispositivos ou realizar tarefas administrativas, como reiniciar dispositivos e realizar diagnósticos.
-
Faça login no console do AWS IoT
. No painel de navegação, escolha Gerenciar e escolha Trabalhos. -
Escolha Criar um trabalho, e escolha Criar trabalho de atualização OTA. Selecione uma coisa e escolha Avançar.
-
Crie um trabalho de atualização OTA do FreeRTOS desta forma:
-
Escolha MQTT.
-
Selecione o perfil de assinatura de código criado na seção anterior.
-
Selecione a imagem do firmware que você carregou em um bucket do Amazon S3.
-
Em Nome do caminho da imagem do firmware no dispositivo, insira
test
. -
Selecione o perfil do IAM que você criou na seção anterior.
-
-
Escolha Próximo.
-
Insira um ID e escolha Criar.
-
-
Reabra o Tera Term para verificar se o firmware foi atualizado com êxito para a versão de demonstração 0.9.3 do OTA.
-
No AWS IoT console, verifique se o status do trabalho é Bem-sucedido.