quarta-feira, 15 de setembro de 2021

NINA B302 sendo programado com NRF Connect + ZEPHYR RTOS via Visual Code

NINA B302 sendo programado com NRF Connect +  ZEPHYR RTOS via Visual Code 

VEJA ISTO PRIMEIRO

How to install the extension - nRF Connect for VS Code

VEJA ISTO TAMBÉM

https://devzone.nordicsemi.com/guides/nrf-connect-sdk-guides/b/software/posts/using-ncs-west-to-comp1ile-and-program-the-dtm-example-into-the-nrf52840-dk

Muitas mudanças desde a primeira versão do BLOG

Muito atenção em colocar o arquivo .OVERLAY do microcontrolador desejado na pasta BOARDS do projeto.


!DESATUALIZADO!

O objetivo deste BLOG é demonstrar de forma resumida como é possível fazer com que o módulo NINA B302 possa se programado na plataforma Visual Code na qual é instalado nRF Connect  + Zephyr RTOS.

Atualmente tem-se utilizado muito o SEGGER STUDIO + nRF Connect.

Tradução, revisão,  adaptação e melhorias do BLOG

Prefácio

Um Ambiente de Desenvolvimento Integrado (IDE) é um aplicativo de software que fornece um ambiente de programação para agilizar o desenvolvimento e depuração de software. Em vez de realizar todas as etapas necessárias para fazer um programa executável ou gerar um firmware binário como tarefas individuais não relacionadas, os IDEs trazem todas as ferramentas necessárias para um aplicativo e espaço de trabalho. Cada uma das ferramentas tem consciência do ambiente e funcionam em harmonia para fornecer uma experiência de desenvolvedor muito boa fora da caixa, tanto para desenvolvedores novatos quanto para os experientes.

Mundo sem IDEs

Sem IDEs, os desenvolvedores precisam usar um editor, compilador e vinculador instalado em sua máquina de desenvolvimento para criar arquivos de código, compilá-los e vinculá-los. Isso às vezes pode ser opressor para novos desenvolvedores que primeiro precisam instalar e configurar todos os conjuntos de ferramentas necessários e manter uma guia de vários comandos para gerar os binários executáveis ​​para atualizar os dispositivos, especialmente no mundo do desenvolvimento de sistemas embarcados.

O IDEs mais popular que a maioria de nós, desenvolvedores, usa diariamente é o Visual Studio Code da Microsoft. Um dos principais motivos pelos quais o VS Code assumiu o controle de outros IDEs é a capacidade de oferecer suporte a extensões de terceiros. Essas extensões permitem adicionar funcionalidades adicionais ao VS Code, permitindo o uso do VS Code para praticamente qualquer plataforma e linguagem de codificação. Atualmente, algumas das extensões populares do VS Code que existem para as plataformas incorporadas são PlatformIO, Particle Workbench e Arduino, entre outros.

No entanto, até o momento, uma extensão de código VS adequada ou, em outras palavras, uma extensão de código VS completa para configurar, build e debugar projetos usando Zephyr RTOS sem modificar o sistema operacional subjacente não foi desenvolvida. PlatformIO fez um trabalho muito bom, no entanto, ainda requer a instalação de um SDK personalizado para funcionar com o ecossistema PlatformIO, às vezes exigindo que os usuários instalem um SDK redundante e ocupem espaço de armazenamento extra, caso já o tenham instalado anteriormente. Por exemplo, um ZephyrRTOS estoque e um Zephyr RTOS baseado em PlatformIO modificado. Além disso, PlatformIO atualmente não oferece suporte aos dispositivos Nordic mais recentes ou ao SDK nRF Connect, dificultando o desenvolvimento de aplicativos usando os recursos PlatformIO nesses SoCs mais recentes do mercado.

Também tem havido discussões contínuas no tópico de problemas do Zephyr para criar tal extensão especificamente para Zephyr RTOS que simplificaria o processo de configuração enormemente, eliminando a necessidade de alguém aprender sobre os detalhes de configuração do VS Code ou dos conjuntos de ferramentas Zephyr subjacentes.

Digite nRF Connect for Visual Studio Code .

O que é nRF Connect for Visual Studio Code?

Nordic Semiconductor anunciou recentemente e lançou uma versão de amostra de seu nRF Connect for VS Code.

nRF Connect for VS Code é simplesmente uma extensão do Visual Studio Code. Ele permite que os usuários do nRF Connect SDK e Zephyr RTOS:

  • Desenvolva seu código de aplicativo
  • Build e gerar o firmware do aplicativo
  • Flash a imagem para o dispositivo e
  • Depurar aplicativos

direto do ambiente do VS Code. 

Esta extensão utiliza o nRF Connect SDK e Zephyr RTOS pré-instalados, permitindo aos desenvolvedores alternar entre o código VS ou a linha de comando para o desenvolvimento do projeto. Quão legal é isso :)

Embora esta extensão seja direcionada para nRF Connect SDK e Zephyr RTOS, ela foi construída para fazer uma coisa, e fazer isso direito: tornar o desenvolvimento baseado em Zephyr uma brisa. Para uma experiência perfeita, a extensão fornece recursos extensivos de desenvolvimento e depuração para dispositivos da série Nordic nRF91, nRF53 e nRF52 no Windows, macOS e Linux. A extensão pode reconhecer nRF dev kits com a interface J-Link OB e mostrar seus nomes. Os desenvolvedores também podem usar dispositivos J-Link / Trace autônomos para programar e depurar os respectivos dispositivos.

Observe que a extensão ainda está em desenvolvimento, mas já fornece alguns recursos ricos e muito necessários que examinaremos neste tutorial.

Este tutorial ...

Aborda como instalar a versão beta da extensão nRF Connect e suas dependências, vincular os conjuntos de ferramentas e o SDK, criar seu primeiro projeto, compilar, carregar o firmware e depurar o aplicativo em execução no dispositivo. Para o desenvolvimento e teste desta extensão, usaremos o módulo BREAKOUT NINA B302  baseado em NRF52840 personalizado conectado por meio da interface SWD e código VS para macOS com nRF Connect SDK v1.5.1. A razão para usar a interface SWD é tirar proveito do recurso de depuração que esta extensão oferece. Também seguiremos as diretrizes iniciais fornecidas pelo Nordic em seu blog para começar a usar o nRF Connect for VS Code. Aqueles que não querem ler podem ir diretamente ao YouTube playlist criada por Nordic que mostra como usar a extensão por meio de vídeos passo a passo. Aqui, abordaremos em detalhes cada uma dessas etapas.

Instalação

A primeira coisa de que precisaremos é instalar o Visual Studio Code, caso ainda não o tenha feito. Então vá para o site de download do Visual Studio Code e instale a versão para o seu sistema operacional. Em seguida, instale o SDK do nRF Connect mais recente de acordo com a documentação aqui . Em seguida, baixe e extraia os arquivos de extensão beta nRF Connect for VS Code deste link de download que contém as seguintes extensões e dependências:

Toolchain Manager fará isto, o mesmo se encontra dentro de NRFCONNECT PARA DESKTOP

  • nRF Connect for VS Code, a extensão principal desenvolvida pela equipe Nordic que contém uma interface para o sistema de compilação e nRF Connect SDK, bem como ferramentas externas como guiconfig. Guiconfig é uma interface de configuração gráfica para explorar as opções disponíveis do Zephyr Kconfig e fazer alterações temporárias. Além disso, Cortex-Debug é instalado automaticamente por esta extensão para fornecer suporte de depuração para microcontroladores ARM Cortex-M.
  • DeviceTree para o projeto Zephyr, que fornece suporte a idiomas DeviceTree.
  • Kconfig para o Projeto Zephyr, que fornece suporte ao idioma Kconfig.
  • Terminal nRF, um terminal serial e RTT integrado.

Após a instalação do VS Code, acione o VS Code e abra a visualização Extensions (indicada por # 1) clicando no ícone Extensions na Activity Bar ao lado do VS Code conforme mostrado, e clique no menu suspenso More Actions (…) menu no canto superior direito (# 2).

Após a instalação do VS Code, acione o VS Code e abra a visualização Extensions (indicada por # 1) clicando no ícone Extensions na Activity Bar ao lado do VS Code conforme mostrado, e clique no menu suspenso More Actions (…) menu no canto superior direito (# 2).

Em seguida, selecione a opção Install do VSIX… (# 3) que abrirá o navegador de arquivos em sua máquina. Navegue até os arquivos de extensão que baixamos e extraímos anteriormente. Em seguida, selecione todas as extensões e clique no botão ' Install '.

Após a instalação bem-sucedida das extensões, você verá os seguintes pop-ups. Clique em Recarregar agora para que o código VS reinicie e carregue as extensões instaladas corretamente.

Precisamos de uma extensão final antes de iniciar a configuração. Pesquise e instale a extensão C/C ++ do Marketplace. Isso permitirá o autocompletar código usando IntelliSense e depuração.

Bravo !!! Agora, o VS Code está pronto para fazer todo o trabalho pesado, ou seja, o conjunto de ferramentas e o gerenciamento do framework Zephyr.

nRF Connect for VS Code Basics

Após a instalação de todas as extensões, você notará um novo ícone na parte inferior da barra de atividades.

Clique no ícone e, em seguida, clique em Abrir página de boas-vindas (Welcome to nRF Connect) e você será saudado pela tela inicial do código nRF Connect VS. A tela inicial apresenta instruções passo a passo para vincular os conjuntos de ferramentas e a versão nRF Connect SDK.

Para acessar o Quick Setup , expanda o menu de configuração clicando nele.

configuração rápida

Se um não instalou previamente o nRF Connect SDK, você pode fazê-lo agora clicando na opção Install ou então apenas selecione o nRF Connect SDK que já está em sua máquina seguido pela versão NCS Toolchain. Aqui, a versão nRF Connect SDK é v1.5.1 e o conjunto de ferramentas correspondente que vem com ele.

nRF Connect for Desktop - Downloads - nordicsemi.com











Enfim, instalando nRF Connect completo!


Agora você pode explorar outras opções na seção Getting StartedAgora vamos nos aprofundar na criação de nosso novo aplicativo.

Criando seu primeiro projeto

Para criar um novo projeto diretamente usando a extensão, clique em Create a new application from the sample

C:\Users\Usuario\ncs\v1.5.1\zephyr\samples\hello_world

nova aplicação

Isso abrirá uma guia Novo código do aplicativo VS da seguinte maneira:

nova janela de aplicativo

A extensão nRF Connect permite que os desenvolvedores criem:

  • Um aplicativo autônomo que utiliza o nRF Connect SDK pré-instalado em sua máquina.
  • Um aplicativo de Workspce que usa o espaço de trabalho para verificar as diferentes versões do nRF Connect SDK do repositório git, criando suas instâncias de SDK ganhas.

Para este tutorial, criaremos um aplicativo autônomo . Primeiro, escolha onde deseja que a pasta do aplicativo e seus arquivos associados sejam criados. Dê ao seu aplicativo um nome sem nenhum caractere de espaço em branco ou símbolo. Em seguida, certifique-se de que as versões do SDK e do conjunto de ferramentas com as quais deseja trabalhar estejam corretas e selecione um modelo de aplicativo para o seu projeto. Aqui, iremos com o exemplo hello_world que vem com os exemplos Zephyr. Por fim, clique em ADD APPLICATION .

Se tudo estiver configurado corretamente, agora você verá seu aplicativo de amostra sendo gerado com todos os arquivos associados na guia APPLICATIONS .

Até agora tudo bem, você está no caminho certo.

Compilando e fazendo upload do firmware

Antes de compilar nosso aplicativo gerado acima, precisamos gerar a configuração de compilação do dispositivo para nosso projeto, clicando na opção Click to create one conforme mostrado abaixo:

generate_configuration

Isso abre uma nova guia, pedindo ao usuário para selecionar o quadro para o qual as configurações de Build serão geradas.

Aqui nós selecionamos nossa placa nrf52840_mdk específica como build target para o domínio não seguro. Em seguida, clique em Gerar configuração para iniciar o processo de build do aplicativo Zephyr. Agora, você deve ver o processo de build sendo iniciado em segundo plano e gerando os arquivos e binários necessários para seu aplicativo de amostra.

Assim que o projeto for compilado com sucesso, no painel de navegação do projeto, você verá todos os arquivos gerados. Dê uma olhada nesses arquivos e estruturas.

Os arquivos de código principais estão localizados em um subdiretório chamado src , que é uma abreviatura de “fonte”. No painel esquerdo, você deve ver seu projeto listado e, abaixo dele, uma série de subdiretórios. Expanda o subdiretório src clicando nele e você deverá ver um arquivo main.c. Clique neste arquivo para abri-lo na janela do editor do VS.

A estrutura do arquivo e os arquivos de saída são semelhantes aos criados usando ferramentas de linha de comando no Zephyr RTOS. A única diferença é que, em vez de criá-los manualmente, a extensão faz tudo isso em seu nome. Essa é a beleza de trabalhar com IDEs. Além disso, agora também existe um DeviceTree para inspecionar as definições da placa.

No diretório do projeto, agora há também a guia ACTIONS que lista alguns dos botões de comando principais, como Build , Pristine build , Menuconfig , Flash e Debug .

Por trás da cena…

Vejamos o que realmente acontece quando a extensão invoca alguns dos comandos:

botão Build constrói o aplicativo Zephyr a partir da fonte e realmente invoca

west build -b <BOARD> --build-dir path/to/build/directory

onde o diretório fonte é automaticamente selecionado pela extensão, ou seja, o projeto ativo que o desenvolvedor pretende compilar.


Selecionar a Pristine Build gera um novo diretório de build e remove todos os subprodutos das construções anteriores.

west build --pristine -b <BOARD> --build-dir path/to/build/directory

Um dos comandos importantes que muitos de vocês podem não estar cientes é o menuconfig : uma interface baseada em curses que é executada no terminal para explorar as opções disponíveis do Zephyr Kconfig e fazer alterações temporárias. Clicar em “Menuconfig” trará a interface de configurações do kernel do Zephyr do seu projeto, permitindo que você altere diferentes configurações do terminal. Mais informações podem ser encontradas na documentação Projeto Zephyr .

Flecha Esquerda "Volta"

Antes de passarmos para o flash do código no dispositivo, vamos dar uma olhada rápida no código-fonte do projeto.

/*
* Copyright (c) 2012-2014 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
 
#include <zephyr.h>
#include <sys/printk.h>
 
void main(void)
{
   printk("Hello World! %s\n", CONFIG_BOARD);
}

O código quase não precisa de qualquer descrição, é basicamente o exemplo hello world que você conhece (ou pelo menos conhece) que será impresso uma vez após a reinicialização do seu dispositivo.

O próximo passo é fazer o upload para a placa, então vamos conectar nossa placa primeiro. Aqui, conectaremos o BREAKOUT U-BLOX NINA B302 que será usado para fazer o flash via interface JTAG SWD (Segger J-LINK). Assim que a placa for conectada e reconhecida, ela será listada na guia CONNECTED DEVICES, conforme mostrado.

Em seguida, clique no botão Flash . O nRF Connect for VS Code fará o upload do código compilado para a placa selecionada. Para piscar, primeiro, a extensão especifica o diretório de build, usando

 west flash --build-dir path/to/build/directory

E então escolhe um runner, neste caso, west pisca seu quadro com nrfjprog por padrão, primeiro apagando os setores necessários e, em seguida, escrevendo o programa após o qual ele reinicializa o dispositivo.

Em caso de sucesso, você deve ser capaz de ver hello world impresso como resultado após conectar-se ao terminal serial. A extensão nRF Connect permite iniciar diretamente um terminal dentro do ambiente do VS Code. Para fazê-lo funcionar, primeiro clique na guia view e depois na Paleta de Comandos . Uma janela suspensa aparecerá mostrando todos os comandos disponíveis.

Em seguida, selecione nRF Terminal: Start terminal o qual solicitará o tipo de conexão e os detalhes. Você pode se conectar via porta serial ou via RTT. Uma janela NRF TERMINAL será aberta imprimindo o Hello World! como mostrado após clicar em reset.

Depurando o Firmware

Vamos explorar um dos últimos recursos do nRF Connect for VS Code, ou seja, depuração de código. Como o Nordic nRF5340-DK inclui um probe de depuração integrado, podemos usar os recursos de depuração sem nenhuma configuração extra. Para iniciar a sessão de depuração, primeiro vamos definir um ponto de interrupção em nosso código e clicar no botão “Debug” na guia ACTIONS .

Uma vez que a sessão de depuração começa, pode-se percorrer o código usando botões de controle, definir pontos de interrupção e adicionar variáveis ​​ao Watch window mostrado abaixo.

Conclusão

A curva de aprendizado para nRF Connect for VS Code é curta e rápida. Com o editor de código VS e seu autocomplete de código poderoso, agora você pode escrever códigos mais rápido e melhor para seus projetos Zephyr.

Esperançosamente, na versão futura, todas as dependências necessárias para fazer o trabalho de extensão nRF Connect serão instaladas e gerenciadas automaticamente.

Resumindo, nRF Connect for VS Code é um grande passo em frente para o ecossistema de desenvolvimento Zephyr RTOS. Para mim, pelo menos, vai substituir completamente o meu ambiente de desenvolvimento do dia-a-dia. O sistema de gerenciamento de cadeia de ferramentas dentro da extensão é excelente e trará grandes aumentos de produtividade para o desenvolvimento embarcado.

Usarei nRF Connect for VS Code para muitos de meus próximos projetos e também revisitaremos nRF Connect for VS Code em um futuro próximo para aprender mais sobre os recursos avançados deste maravilhoso ambiente de desenvolvimento quando a versão completa for lançada por o Nordic Semi.

Se você tiver perguntas ou comentários, sinta-se à vontade para me enviar um e-mail ou postá-los no fórum de suporte técnico do Nordic.

Boa codificação!