MMDVM Pog: Questa sconosciuta

E’ da un po’ che gira sul noto sito di aste online questa versione “particolare” di MMDVM, e incuriosito me ne sono fatta arrivare una dagli amici asiatici.

Di cosa si tratta? Beh a prima vista ricorda la MMDVM-PI ufficiale, ovvero la versione MMDVM senza ARDUINO DUE che si monta direttamente come shield su RASPBERRY PI, ma in effetti ci troviamo di fronte ad un altro progetto, più semplificato ma altrettanto efficace, la MMDVM_POG, che prende il nome dal suo ideatore SQ6POG.

Le differenze sostanziali fra le 2 board sono innanzitutto le CPU, tutte e 2 delle ARM CORTEX a 32 Bit (e ovviamente nessuna delle due monta cpu ATMEL AT91SAM3X8E da 84Mhz di ARDUINO DUE) che condividono il produttore della CPU (ovvero STMicroelectronics), ma modelli differenti; infatti la MMDVM-PI monta una performante cpu serie ST32F4xx da 180Mhz mentre la POG un ST32F105 dai modesti 72Mhz; l’altra differenza è sulla parte di filtraggio, la POG è molto più simile a una MMDVM SHIELD classica, ma tolto questo le differenze sono praticamente terminate.

POG_PINOUTLa MMDVM_POG si presenta con una serie di led di stato che indicano, fra le altre cose, la modalità di funzionamento (DSTAR, DMR, YSF, P25) ad eccezione della nuova NXDN non ancora presente al momento della progettazione del pcb; oltre a questi è presente ovviamente un led di stato alimentazione, di attività sulla seriale, uno di ricezione, uno di trasmissione e quello dello stato del PTT. Sono presenti i soliti 2 trimmer per la regolazione hardware dei livelli di ingresso e di uscita, il pinout di tipo “dupont” con i collegamenti necessari per collegare uno o 2 RTX incluso RSSI (schema come da foto), un jumper per abilitare il bootloader del micro per programmarlo (che vedremo in seguito), sulla mia versione è stato anche installato un TCXO da 19,2Mhz per garantire la stabilità della cpu in condizioni di temperature alte.

Per quanto riguarda il firmware, ovviamente funziona con il classico MMDVM, ma se siete abituati a compilare lo sketch con la IDE di ARDUINO qui troverete qualche difficoltà dovuta alla compilazione per una piattaforma diversa. Intanto da premettere che la versione a bordo non era delle più recenti, e quindi era necessario un aggiornamento, e in giro purtroppo si trova poca documentazione sul come compilare e “flashare” MMDVM su ST32 e in particolare su ST32F105.

Per procedere all’aggiornamento fondamentalmente si possono fare 2 cose, la prima è trovare un precompilato e caricarlo su MMDVM il secondo è compilarselo su un raspberry utilizzando gli script di N4IRS MMDVM-INSTALL

INUTILE RICORDARE CHE NON SONO RESPONSABILE DI EVENTUALI DANNI PROVOCATI ALLA SCHEDA O AL RASPBERRY, AGITE SEMPRE RESPONSABILMENTE!


METODO 1 (COMPILAZIONE DA 0)

 

Nel GIT di MMDVM-INSTALL, oltre a dettagliate istruzioni su come compilare il firmware sono presenti anche dei precompilati che ha messo a disposizione N4IRS, purtroppo però i suoi precompilati sono comunque un po’ datati, e inoltre è configurato il TCXO da 12Mhz, quindi incompatibile con la scheda in mio possesso, quindi nel mio caso l’alternativa era solo ricompilare nel modo corretto.

La procedura descritta del GIT e che riporterò di seguito è valida su un immagine di PI-STAR qualsiasi, ma potenzialmente funziona su ogni distribuzione di raspbian, infatti gli script MMDVM-INSTALL recuperano tutto il necessario (o quasi) dalla rete, quindi crea l’ambiente con le toolchain per la compilazione.

Login su Pi-Star via ssh o console
sudo -s
rpi-rw
pistar-expand
reboot
Login su Pi-Star via ssh o console
rpi-rw
sudo -s
apt-get update
cd /srv
git clone https://github.com/N4IRS/MMDVM-Install.git
cd /srv/MMDVM-Install/STM32-DVM
chmod +x *.sh
./required-libs.sh
./get-src.sh

In questa fase vi descriverò la funzione di ogni comando che lanciate, in modo da avere la congnizione di quello che state facendo senza fare copia incolla come zombie, ma se non volete saperne nulla fate pure un copia incolla delle righe sora!
Dovete loggarvi all’interno del raspberry con protocollo SSH, se usate windows scaricate il client più noto che è Putty, vi rcordo l’user di default è pi-star e la password raspberry.
con sudo -s passate a utente root, con rpi-rw abilitate l’immagine pi-star in scrittura (disabilitata di default), poi pistar.expand vi allargherà il disco se non l’avete mai fatto prima (importante perchè lo spazio non è sufficiente al nostro scopo senza), a questo punto fate un riavvio con reboot e riloggatevi nuovamente a sistema riavviato, nuovamente riattivare la scrittura, ridiventate root e fate un apt-get update che allinerà gli aggiornamenti eventuali dei pacchetti dei repository con il vostro raspberry e spostatevi con cd /srv nella directory appunto srv e clonate il GIT con git clone, vi spostate nella directory del git appena clonato con cd /srv/MMDVM-Install/STM32-DVM che è quella che contiene il necessario per la nostra piattaforma, se non avete git installato (difficile perchè PI-STAR la tiene di default) con apt-get install git.
A questo punto con chmod +s *.sh rendere eseguibili tutti i file con estensione sh che sono shell script e lanciate ./required-libs.sh e ./get-src.sh, il primo installerà le librerie necessarie alla piattaforma da compilare, il secondo scarica dai repository i sorgenti (di solito i più recenti) di MMDVM.

systemctl stop pistar-watchdog
systemctl stop mmdvmhost

Con questi 2 comandi stoppate MMDVMHOST per liberare la seriale in uso sulla GPIO e disattivate il watchdog del pi-star per evitare che tenti di riavviare MMDVMHOST.

cd /srv/MMDVM
nano Config.h

A questo punto posizionatevi nella directory con i sorgenti di MMDVM e con l’editor nano (va bene anche pico o vi vim quello che preferite e che sapete usare meglio) e modificate il file per farlo assomigliare a questo:

// Allow for the use of high quality external clock oscillators
// The number is the frequency of the oscillator in Hertz.
//
// The frequency of the TCXO must be an integer multiple of 48000.
// Frequencies such as 12.0 Mhz (48000 * 250) and 14.4 Mhz (48000 * 300) are suitable.
// Frequencies such as 10.0 Mhz (48000 * 208.333) or 20 Mhz (48000 * 416.666) are not suitable.
//
// For 12 MHz
// #define EXTERNAL_OSC 12000000
// For 12.288 MHz
// #define EXTERNAL_OSC 12288000
// For 14.4 MHz
// #define EXTERNAL_OSC 14400000
// For 19.2 MHz
#define EXTERNAL_OSC 19200000

// Allow the use of the COS line to lockout the modem
// #define USE_COS_AS_LOCKOUT

// Use pins to output the current mode
#define ARDUINO_MODE_PINS

// For the original Arduino Due pin layout
// #define ARDUINO_DUE_PAPA

// For the ZUM V1.0 and V1.0.1 boards pin layout
// #define ARDUINO_DUE_ZUM_V10

// For the SQ6POG board
#define STM32F1_POG

// For the SP8NTH board
// #define ARDUINO_DUE_NTH

// For ST Nucleo-64 STM32F446RE board
// #define STM32F4_NUCLEO_MORPHO_HEADER
// #define STM32F4_NUCLEO_ARDUINO_HEADER

// Use separate mode pins to switch external filters/bandwidth for example
// #define STM32F4_NUCLEO_MODE_PINS

// Pass RSSI information to the host
#define SEND_RSSI_DATA

// Use the modem as a serial repeater for Nextion displays
// #define SERIAL_REPEATER

#endif

Come si nota ho decommentato l’oscillatore a 19Mhz e decommentato la board STM32F1_POG, ovviamente se avete un oscillatore diverso potete modificarlo.
A questo punto salvate e uscite.

Sul PI-STAR non è presente gcc-arm-none-eabi necessario per la compilazione, quindi lanciate il seguente comando per installarlo:

apt-get install gcc-arm-none-eabi

A questo punto procedete con la compilazione:

make -f Makefile.CMSIS

Se non vi ritorna erroti dovrebbe aver creato in /usr/src/MMDVM/bin i file: mmdvm.dis, mmdvm.elf, mmdvm.hex, mmdvm.map.

A questo punto se tutto è andato a buon fine vi basterà unire JP1 sulla scheda e togliere e ridare tensione alla scheda (potete con attenzione sollevarla leggermente dal connettore sulla GPIO e ricollegarla facendo MOLTA ATTENZIONE!), quando è in BOOTLOADER MODE i led ACT e DMR sono illuminati, in questa modalità lanciare il seguente comando:

program-STM32_DVM_PiHat

Se tutto è andato a buon fine vedrete la percentuale di programmazione andare avanti e un led lampeggiare sulla board, al 100% vi basterà spegnere il raspberry, togliere il ponticello su JP1 e riavviare la scheda, il gioco è fatto.

 

METODO 2 (FLASH PRECOMPILATO)

 

La seconda possibilità è di usare il precompilato fatto da me, la cosa è molto più semplice:

rpi-rw
sudo -s
cd /root
wget https://www.iz8gur.it/downloads/mmdvm_pog/mmdvm.hex
stm32flash -w mmdvm.hex -v /dev/ttyAMA0

Ricordatevi sempre di ponticellare JP1 prima di aggiornare e rimuoverlo dopo averlo fatto e di fare un bel riavvio alla fine.

La versione attuale del firmware precompilato è: 20180723


PER CONCLUDERE

Conviene acquistarla? Funziona bene?
La risposta secondo me è: SI!
Anche se le performance della CPU sembrano minori di ARDUINO 2 bastano e avanzano per il suo scopo, e non dobbiamo dimenticare che la scheda mi è costata 35 EURO SPEDITA quindi più che conveniente rispetto all’acquisto di arduino e della shield mmdvm, e che le dimensioni di tutto il sistema si rimpiccioliscono notevolmente!
Unico ovvio neo che ho riscontrato è il dover ponticellare JP1 per il flash, questo rende gli aggiornamenti impossibili da remoto senza intervento fisico sul luogo, a differenza di arduino due facilmente riprogrammabile da remoto.

Grazie per l’attenzione, alla prossima!

73 de IZ8GUR Fulvio

Lascia un commento