terça-feira, 4 de agosto de 2020

PROGRAMANDO NINA B112 COM Apache Mynewt - VISUAL CODE

PROGRAMANDO NINA B112 COM Apache Mynewt - VISUAL CODE
(SEGGER JTAG)

O objetivo deste BLOG é demonstrar de forma resumida como é possível fazer com que o módulo u-BLOX NINA B112 possa rodar o Apache Mynewt o qual é compilado via VISUAL CODE. Foi utilizado o EVK-NINA-B1 para o teste. Veja as referências bibliográficas para detalhes.


Sobre Apache Mynewt


Construído para wireless

Atenda às demandas de seu aplicativo a partir de uma variedade de pilhas de rede de código aberto, por exemplo. BLE 5, Bluetooth Mesh, Wi-Fi, LoRaWAN e muito mais ...

Implementação flexível e poderosa do BLE 5 (NimBLE)
  • Full stack, host only ou controller only - a sua escolha
  • Máximo rendimento de 2Mbps
  • Mais de 32 conexões simultâneas, múltiplas conexões em funções centrais e periféricas simultâneas
Mais sobre o NimBLE ...
  • Suporte LoRa PHY e LoRaWAN
  • Rádio LoRa PHY / transceptor (SX1276)
  • Protocolo LoRaWAN para terminais de classe A e classe C
  • API para uso de aplicativos com um aplicativo de amostra
Bluetooth Mesh
  • Modelos de Fundação (função de servidor)
  • Portadores de aprovisionamento: PB-ADV e PB-GATT
  • Portadores de publicidade e GATT para transporte de mensagens
  • Recursos opcionais de retransmissão e proxy
Suporte nativo para TCP / IP, UDP
  • Suporta protocolos para redes restritas, por ex. CoAP e 6LoWPAN
Segurança desde o início

Certifique-se de que a segurança esteja incorporada no código, bem como o gerenciamento do ciclo de vida do produto.
  • Bootloader seguro para verificar a integridade e autenticidade do firmware
  • Identidade do dispositivo para provisionamento seguro
  • Transferências de dados autenticadas, autorizadas e criptografadas
  • Interface abstraída para aproveitar a segurança de hardware
  • Mais sobre a segurança do Mynewt OS ..
Operações prontas

Prepare sua rede de bilhões de IoT para monitoramento, solução de problemas, gerenciamento e atualização remotos.
  • Módulo de gerenciamento de imagens para permitir atualizações de firmware remotas eficientes, com reconhecimento de falhas e confiáveis
  • Módulos de log que podem ser chamados em vários níveis de granularidade, incluindo logs de reinicialização especializados
  • Módulos de estatísticas ricamente instrumentados para componentes do SO e interfaces de rede
  • Fácil de usar a estrutura do sensor para conectar uma variedade de sensores
  • Descoberta automática e gerenciamento usando OIC1.1, o padrão de plataforma IoT da OCF (Open Connectivity Foundation)
Fácil de usar

Componha, ajuste e crie sua imagem em horas ou até minutos.
  • Inicialização de hardware em arquivo de configuração única para o BSP escolhido
  • Inicialização de parâmetros de serviço em um único arquivo de configuração para o módulo escolhido, e. Controlador BLE
  • Gerenciamento inteligente de pacotes e construção usando a ferramenta Newt
  • Auditorias automáticas de configuração usando o Newt Tool
  • Agora com VISUAL CODE

Instalação

Antes instale o MYNEWT para WINDOWS por qui

Instale MSYS2/MinGW.


Instale com pacman o vim, nano, tar, tree, GIT (no msys32)



Instale o GO

Instale a versão mais recente (1.6.0) do newt do binário (na pasta bin do GO)

 
Crie um projeto para abrir com VISUAL CODE - Blink - Atenção, utilizar GIT do mSYS32,não do WINDOWS


Crie um projeto
$ mkdir ~/dev
$ cd ~/dev
$ newt new myproj
Downloading project skeleton from apache/mynewt-blinky...
Installing skeleton in myproj...
Project myproj successfully created.
$ cd myproj
$ newt install
apache-mynewt-core

Crie os destinos Boot e APP

$ newt target create nrf52_boot
$ newt target set nrf52_boot app=@apache-mynewt-core/apps/boot
$ newt target set nrf52_boot bsp=@apache-mynewt-core/hw/bsp/nina-b1
$ newt target set nrf52_boot build_profile=optimized

$ newt target create nrf52_blinky
$ newt target set nrf52_blinky app=apps/blinky
$ newt target set nrf52_blinky bsp=@apache-mynewt-core/hw/bsp/nina-b1
$ newt target set nrf52_blinky build_profile=debug

Veja se criou

$ newt target show
targets/nrf52_blinky
    app=apps/blinky
    bsp=@apache-mynewt-core/hw/bsp/nina-b1
    build_profile=debug
targets/nrf52_boot
    app=@apache-mynewt-core/apps/boot
    bsp=@apache-mynewt-core/hw/bsp/nina-b1
    build_profile=optimized

Gere os executáveis (Boot e APP)

$ newt build nrf52_boot
Building target targets/nrf52_boot
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c
Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aes.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c
Compiling repos/apache-mynewt-core/apps/boot/src/boot.c

    ...

Archiving sys_mfg.a
Archiving sys_sysinit.a
Archiving util_mem.a
Linking ~/dev/myproj/bin/targets/nrf52_boot/app/apps/boot/boot.elf
Target successfully built: targets/nrf52_boot

$ newt build nrf52_blinky
Building target targets/nrf52_blinky
Assembling repos/apache-mynewt-core/hw/bsp/nrf52dk/src/arch/cortex_m4/gcc_startup_nrf52_split.s
Compiling repos/apache-mynewt-core/hw/bsp/nrf52dk/src/sbrk.c
Compiling repos/apache-mynewt-core/hw/cmsis-core/src/cmsis_nvic.c
Compiling repos/apache-mynewt-core/hw/drivers/uart/uart_hal/src/uart_hal.c
Assembling repos/apache-mynewt-core/hw/bsp/nrf52dk/src/arch/cortex_m4/gcc_startup_nrf52.s
Compiling apps/blinky/src/main.c

    ...

Archiving sys_mfg.a
Archiving sys_sysinit.a
Archiving util_mem.a
Linking ~/dev/myproj/bin/targets/nrf52_blinky/app/apps/blinky/blinky.elf
Target successfully built: targets/nrf52_blinky

Crie a imagem da aplicação

$ newt create-image nrf52_blinky 1.0.0
App image succesfully generated: ~/dev/myproj/bin/targets/nrf52_blinky/app/apps/blinky/blinky.img


Utilizando com VISUAL CODE
Este guia mostra como configurar o Visual Studio Code para desenvolver e depurar aplicativos Mynewt. O Visual Studio Code é suportado no Mac OS, Linux e Windows:

Instale o código do Visual Studio.
Instale as extensões C / C ++ e depurador (cortex debugger)



Aponte para o folder (projeto criado no msys32)


Defina configurações de tarefas para criar aplicativos Mynewt.

O arquivo tasks.json especifica as tarefas que são executadas para criar e depurar. Cada tarefa executa um comando newt. O comando newt a ser executado e os argumentos para o comando newt são passados ​​na propriedade args para cada tarefa. Chamado com CTRL-SHIFT_P.

]


Edite com o nome do projeto!

Executando uma tarefa 



Defina configurações do gravador e depurador para aplicativos Mynewt.


Sempre build, create e load

Caso tenhas problemas com a chamada do DBG, altere o arquivo abaixo de SH para CMD (bsp.yml)


Código fonte

/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ #include <assert.h> #include <string.h> #include "sysinit/sysinit.h" #include "os/os.h" #include "bsp/bsp.h" #include "hal/hal_gpio.h" #ifdef ARCH_sim #include "mcu/mcu_sim.h" #endif static volatile int g_task1_loops; /* For LED toggling */ int g_led_pin; /** * main * * The main task for the project. This function initializes packages, * and then blinks the BSP LED in a loop. * * @return int NOTE: this function should never return! */ int main(int argc, char **argv) { int rc; #ifdef ARCH_sim mcu_sim_parse_args(argc, argv); #endif sysinit(); g_led_pin = 7; //NINA B302 PAD22 - P0.07 hal_gpio_init_out(g_led_pin, 1); while (1) { ++g_task1_loops; /* Wait one second */ os_time_delay(OS_TICKS_PER_SEC); /* Toggle the LED */ hal_gpio_toggle(g_led_pin); } assert(0); return rc; }
Adicionado LED no PAD 22/P0.07

Conecte um LED no pino 21/2 do EVK-NINA-B1

Compile o boot (uma única vez)
Transfira o boot
Compile o APP
Crie a imagem
Transfira o APP


Execução

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portifólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.
Mais detalhes em www.smartcore.com.br

Nenhum comentário:

Postar um comentário