quarta-feira, 23 de março de 2022

U-BLOX NINA W106 e PlatformIO - Arduino DEBUGGING

U-BLOX NINA W e PlatformIO - Arduino DEBUGGING
(Testado com FrameWork Arduino)


O objetivo deste BLOG é demonstrar como é possível utilizar o PlatformIO para programar o módulo U-BLOX NINA W com framework ARDUINO e então DEBUGAR um programa. Foi utilizado o EVK-NINA-W102 para o teste.

O kit de desenvolvimento EVK-NINA-W102 foi desenvolvido para facilitar testes e desenvolvimentos com o chip u-blox NINA-W10X que apresenta importantes recursos:

  • Wi‑Fi 802.11b/g/n
  • Bluetooth dual mode clássico BR/EDR v4.2 e Bluetooth Low Energy v4.2
  • Permite embarque de aplicações
  • Pino a pino compativel com outros itens da família u-blox NINA tais como o NINA-B112, NINA-B111 entre outros
  • Longo alcance: estimado em 300m sem barreira
  • Várias interfaces: UART, RMII (Ethernet), SPI, SDIO host, CAN, JTAD< I2S, I2C, GPIO, DAC/ADC
  • Opera como estação WiFi ou access point WiFi
  • Vários recuros de segurança: WPA/WPA2, WPS, Enterperise Security, Secure boot
Para se obter sucesso com DEBUG, foi baseado no material do link abaixo e também alguns debates com um cliente Smartcore.


Após uma longa busca pela Internet sobre DEBUG com ESP32, vários links apontaram para uma placa MINI-MODULE ou ESP-prog. Após uma análise na placa, constatou-se que trata-se de um chip FTDI com várias GPIOS, modelo FTDI2232 que, com um driver específico, consegue implementar o protocolo JTAG em uma das saídas.

Ao analisar o EVK-NINA-W102, constatou-se que o mesmo tem um FTDI4232 e que os pinos são os  mesmos do FTDI2232.

Analisando o DATASHEET do EVK-NINA-W102, constatou-se que FTDI4232 (PORTA) tem conexão com o  MODELO W102 (JTAG)...



...que é mesma ligação utilizada pelo MINI-MODULE ou ESP-prog



No EVK-NINA-W106, seguem JUMPERS, desloque os 4 para esquerda, pois o mesmos de fábrica estão conectados no cartão uSD


No EVK-NINA-W106, seguem JUMPERS, desloque os 4 para esquerda, pois o mesmos de fábrica estão conectados no cartão uSD



Após esta análise, partiu-se para o Software, instalando o DRIVER para fazer o FTDI funcionar com JTAG


Em ZADDIG, selecione



Após analisar o vídeo abaixo, com a ajuda de 
Andreas Speiss constatou-se que deve adicionar ao PLATFORMIO.INI as seguintes sentenças:

upload_port = COM32
debug_tool = esp-prog
debug_init_break = tbreak setup


Ao tentar finalmente executar o DEBUG, foi detectado que VID/PID do FTDI do EVK-NINA-W102não batia pelo VID/PID solicitado pelo DRIVER, como os dois FTDI são basicamente parecidos, alterei o VID/PID para o solicitado para, digamos assim, para ACEITAR o FTD4232, o arquivo


esp32_devkitj_v1.cfg

previamente atualizado com a descompactação do arquivo


C:\Users\Usuario\.platformio\packages\tool-openocd-esp32\share\openocd\scripts\interface\ftdi\esp32_devkitj_v1.cfg

#
# Driver for the FT2232H JTAG chip on the Espressif DevkitJ board
# (and most other FT2232H and FT232H based boards)
#
 
adapter driver ftdi
ftdi_vid_pid 0x0403 0x6011 0x0403 0x6014

# interface 1 is the uart
ftdi_channel 0

# TCK, TDI, TDO, TMS: ADBUS0-3
# LEDs: ACBUS4-7

ftdi_layout_init 0x0008 0xf00b
ftdi_layout_signal LED -data 0x1000
ftdi_layout_signal LED2 -data 0x2000
ftdi_layout_signal LED3 -data 0x4000
ftdi_layout_signal LED4 -data 0x8000

# ESP32 series chips do not have a TRST input, and the SRST line is connected
# to the EN pin. 
# The target code doesn't handle SRST reset properly yet, so this is
# commented out:
# ftdi_layout_signal nSRST -oe 0x0020

reset_config none

# The speed of the JTAG interface, in KHz. If you get DSR/DIR errors (and they
# do not relate to OpenOCD trying to read from a memory range without physical
# memory being present there), you can try lowering this.
#
# On DevKit-J, this can go as high as 20MHz if CPU frequency is 80MHz, or 26MHz
# if CPU frequency is 160MHz or 240MHz.
adapter speed 20000


1) Baixe e instale o Visual Studio Code


2) Execute o Visual Studio Code


3) Na opção EXTENSIONS (canto esquerdo), procure por PlatformIO e Instale. Aguarde!

4) Uma vez instalado o PlatformIO, vá em PIO Home e crie um Novo Projeto e digite os parâmetros abaixo e então Finish


Aguarde alguns minutos para instalação do SDK. A instalação do SDK ficará em 

C:\Users\USER\.platformio>
e os fontes em
C:\Users\USER\Documents\PlatformIO\Projects\blink\src\main.cpp

5) Na opção EXPLORER você verá o projeto e o código fonte (Arduino Sintax). 


6) Observe o arquivo Platformio.ini que foi criado, você pode futuramente mudar para aceitar outro tipo de framework, como exemplo, ESP-IDF.

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino

upload_port = COM32
debug_tool = esp-prog
debug_init_break = tbreak setup

7) Altere o código para

#include <Arduino.h>

void setup() {
  // put your setup code here, to run once:
  pinMode(23, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(23, HIGH);
  delay(1000);
  digitalWrite(23, LOW);
  delay(1000);
}


8) Compile (seja paciente), a primeira vez demora mais tempo.


9) Faça o UPLOAD (pressione tecla BOOT e então RESET) e você verá o LED alterando de estado a cada 1 segundo!


10) Faça o UPLOAD (pressione tecla BOOT e então RESET) e você verá o LED alterando 

11) Para DEBUG, pressione F5 ou vá no menu RUN-->START DEBUGGING




12) Questões: suporte@smartcore.com.br

Thanks to Brian Lough


FONTES: 
No próprio BLOG e

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfó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