quinta-feira, 10 de dezembro de 2020

U-BLOX NINA B112/302 - UTILIZANDO RASPBERRY COMO GRAVADOR/DEBUGGER

Gravando NINA B112 com RASPBERRY

O objetivo deste BLOG é demonstrar como é possível utilizar o Raspberry Pi Zero W (BCM2835 ) como gravador dos módulos U-BLOX NINA B112/B302

Roteiro Básico

Via Serial o SSH:

sudo apt install wget git autoconf libtool make pkg-config libusb-1.0-0 libusb-1.0-0-dev libhidapi-dev libftdi-dev telnet

git clone https://github.com/ntfreak/openocd

cd openocd

./bootstrap

./configure --enable-sysfsgpio --enable-bcm2835gpio --enable-cmsis-dap

make

cd ..

wget https://raw.githubusercontent.com/lupyuen/stm32bluepill-mynewt-sensor/nrf52/scripts/nrf52/swd-pi.ocd

Edite o swd-pi.ocd baixado

Comente as linhas (insira o prefixo #) para bcm2835gpio_peripheral_base e bcm2835gpio_speed_coeffs em Pi 4

Remova o comentário das linhas (remova o prefixo #) para bcm2835gpio_peripheral_base e bcm2835gpio_speed_coeffs para seu modelo de Raspberry Pi: Pi 1/2/3/4

# Select the Broadcom GPIO interface for Raspbery Pi
interface bcm2835gpio

###############################################################################
# Peripheral Base Address

# For Pi 4
bcm2835gpio_peripheral_base 0xFE000000

# For Pi 2 and 3
# bcm2835gpio_peripheral_base 0x3F000000

# For Pi 1
# bcm2835gpio_peripheral_base 0x20000000

###############################################################################
# Transition delay calculation: SPEED_COEFF/khz - SPEED_OFFSET
# bcm2835gpio_speed SPEED_COEFF SPEED_OFFSET

# For Pi 4
bcm2835gpio_speed_coeffs 236181 60

# For Pi 3 BCM2837 (1200Mhz)
# bcm2835gpio_speed_coeffs 194938 48

# For Pi 2 BCM2836 (900Mhz)
# bcm2835gpio_speed_coeffs 146203 36

# For Pi 1 BCM2835 (700Mhz)
# bcm2835gpio_speed_coeffs 113714 28

###############################################################################
# SWD Configuration

# Assign each SWD line (SWCLK, SWDIO) to a Pi GPIO: (See https://pinout.xyz/ for Pi Header Pin Number to GPIO mapping)
# Connect Pi Header Pin Number 38 (GPIO 20) to nRF52 SWCLK (Yellow wire)
# Connect Pi Header Pin Number 40 (GPIO 21) to nRF52 SWDIO (Green wire)
bcm2835gpio_swd_nums 20 21

# Assign SRST (Reset) line to a Pi GPIO:
# Connect Pi Header Pin Number 12 (GPIO 18) to nRF52 RESET (White wire)
bcm2835gpio_srst_num 18

# Connect Pi 3.3V (Red) and GND (Purple) to nRF52 VDD and GND

###############################################################################
# Transport

transport select swd

###############################################################################
# Target

set WORKAREASIZE 0
source [find target/nrf52.cfg]

# Configure reset to use SRST line
reset_config srst_only srst_nogate
adapter_nsrst_delay 100
adapter_nsrst_assert_width 100

###############################################################################
# Execution

init
Entre no prompt de comando ...

# Iniciar OpenOCD
sudo /home/pi/openocd/src/openocd \
   -s /home/pi/openocd/tcl \
   -d4 \
   -f swd-pi.ocd

-d4 é opcional

Devemos ver o seguinte log ...

Open On-Chip Debugger 0.10.0+dev-00935-g31100927 (2019-09-25-18:38)
...
Debug: 226 17 bitbang.c:496 bitbang_swd_read_reg(): OK DP read reg 0 = 2ba01477
Info : 235 17 adi_v5_swd.c:136 swd_connect(): SWD DPIDR 0x2ba01477
Debug: 236 17 arm_adi_v5.c:653 dap_dp_init(): nrf52.dap
...
Debug: 534 670 gdb_server.c:3397 gdb_target_start(): starting gdb server for nrf52.cpu on 3333
Info : 535 670 server.c:311 add_service(): Listening on port 3333 for gdb connections
Info : 536 670 server.c:311 add_service(): Listening on port 6666 for tcl connections
Info : 537 670 server.c:311 add_service(): Listening on port 4444 for telnet connections
Debug: 538 670 command.c:143 script_debug(): command - init init

 Enquanto o OpenOCD está em execução, abra um segundo prompt de comando e digite ...

telnet localhost 4444
(desabilite qualquer firewall)

 Execute os comandos necessários para gravar o U-BLOX NINA B112/302. Abaixo alguns exemplos:

reset init
reset halt
nrf5 mass_erase
set WORKAREASIZE 0x4000
program c:/openOCD/bin/s132_nrf52_2.0.1_softdevice.hex verify
program c:/openOCD/bin/led_switch.ino.hex verify
reset run
exit

CONFIGURANDO PINOS NO RASPBERRY




Dúvidas:

 

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

 

quarta-feira, 17 de julho de 2019

Programando NINA B112 com ST-LINK V2 (SWD) Gravador de Baixo Custo.

Programando NINA B112 com ST-LINK V2 (SWD)
Gravador de Baixo Custo.

O objetivo deste BLOG é demonstrar como é possível utilizar o ST-LINK V2 para programar o módulo U-BLOX NINA B112. Foi utilizado o módulo NINA B112. 

Como posso então gravar um HEX pronto de terceiros para dentro do NINA B112 ? A resposta é OPENOCD + ST-LINK V2


O preço Médio deste gravador é de 25 a 30 reais.




NINA B112


Abaixo o roteiro para você seguir:

Configuração do driver para ST-LINK V2

Faça o download do driver do ST-LINK V2
https://os.mbed.com/teams/ST/wiki/ST-Link-Driver
Plug ST-LINK V2 na USB

Faça o download do Zadig

Iniciar o Zadig
Selecione Opções -> Listar Todos os Dispositivos
Conecte e desconecte seu dispositivo para descobrir o que muda e selecione a Interface 2 no menu suspenso do dispositivo
Clique em Substituir Driver
NOTA: Para reverter para o driver original, acesse: Gerenciador de dispositivos -> clique com o botão direito no dispositivo -> caixa de seleção para "Excluir o software do driver para este dispositivo" e clique em Desinstalar

Instale o OPENOCD
https://gnutoolchains.com/arm-eabi/openocd/
Descompacte em C:\



Dentro do diretório bin,  crie um arquivo chamado openocd_nrf52.cfg e copie para dentro o seguinte texto:

#
# Nordic Semiconductor NRF52 Development Kit (nRF52832)
#
source [find interface/stlink-v2.cfg]

transport select hla_swd

source [find target/nrf52.cfg]

EXECUTE OPENOCD

Agora é hora de você abrir o prompt do D.O.S ok ?

Dentro da pasta bin, execute o seguinte comando:

openocd -d2 -f openocd_nrf52.cfg


Ele vai abrir um servidor que escutará na porta 4444 e aceitar comandos por esta porta TCP. 

Para acessar esta porta, execute TELNET localhost 4444, então abra mais um prompt do D.O.S



Abaixo alguns comandos;

reset init
reset halt
nrf51 mass_erase
set WORKAREASIZE 0x4000
program c:/openOCD/bin/s132_nrf52_2.0.1_softdevice.hex verify
program c:/openOCD/bin/led_switch.ino.hex verify
reset run
exit


Neste exemplo, foi gravado um exemplo de programa juntamente com softdevice, que implementa BLE.

Também foi testado o APP da U-BLOX que transforma o NINA B112 em um módulo BLE programado com comandos AT. Foram gravados os quatro arquivos HEX.

NINA-B11X-BOOT-SW-3.0.2-001.hex
NINA-B11X-SW-5.0.0-011.hex
s132_nrf52_6.1.0_softdevice.hex
valid_s132_nrf52_6.1.0_softdevice.hex

ARDUINO


O ARDUINO para NRF5  (sandeepmistry) também faz uso do Openocd para transferência de programas, neste caso, você não necessita se preocupar com a instalação do Openocd, apenas com o ZADIG.

Mas como regra, não esqueça de gravar o BOOTLOADER e então selecionar o STLINK-V2 no menu do Arduino.





Mais imagens com com uso do OPENOCD


Dúvidas:

 

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