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.
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)
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)
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)
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
Suporte: suporte@smartcore.com.br
Fontes:
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