2017-08-20 12:41:17 +00:00
|
|
|
|
ParaTNC wersja 1.0-19082017
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
1. WSTĘP
|
|
|
|
|
ParaTNC jest oprogramowaniem wbudowanym (firmware) przeznaczonym do pracy na płytce STM32VLDISCOVERY w charakterze
|
|
|
|
|
uniwersalnego radiomodemu/sterownika sieci APRS, wyposażonego w szereg funkcjonalności takich jak:
|
|
|
|
|
|
|
|
|
|
-> Digipeater retransmitujący pakiety posiadające ustawioną ścieżkę WIDE1-1.
|
2017-08-22 18:28:21 +00:00
|
|
|
|
-> Dwustronna komunikacja z komputerem przy użyciu protokołu KISS po łączu szeregowym (TTL-UART).
|
2017-08-20 12:41:17 +00:00
|
|
|
|
-> Stacja pogodowa z obsługą wiatromierza TX20, termometru Dallas DS12B20 oraz czujnika ciśnienia MS5611.
|
|
|
|
|
-> Telemetria umożliwiająca monitorowanie ilości odbieranych, nadawanych i powtarzanych pakietów.
|
|
|
|
|
|
|
|
|
|
Niewątpliwą zaletą ParaTNC są bardzo niskie koszta. Wynoszące jedynie 60~70pln bruttno na zakup STM32VLDISCOVERY.
|
|
|
|
|
Ponieważ dekodowanie i generowanie transmisji APRS odbywa się w pełni programowo nie ma konieczności użycia tandetnych
|
|
|
|
|
podróbek modemu TCM, sprzedawanych obecnie na ebay i aliexpress przez dostawców z Chin. Lutowanie ogranicza się wyłącznie
|
|
|
|
|
do wykonania odpowienich kabli połączeniowch. stosowna instrukcja z pinoutami znajduje się w pliku WIRING.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. LICENCJA
|
2017-08-20 15:47:37 +00:00
|
|
|
|
Warunki licencjonowania są zawarte w pliku LICENSE.
|
2017-08-20 12:41:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. KONFIGURACJA
|
|
|
|
|
Na chwilę obecną ParaTNC jest dostarczane w formie kodów źródłowych do samodzielnej kompilacji. Ponieważ dostępne jest
|
|
|
|
|
source, konfiguracja odbywa się przez edycję pliku ./include/station_config.h . Zawiera on komentarze tłumaczące znaczenie
|
|
|
|
|
poszczególnych opcji. Oprócz typowych i raczej trywialnych ustawień APRS takich jak znak wywoławczy i temu podobne,
|
|
|
|
|
użytkownik może włączać i wyłączać poszczególne tryby pracy urządzenia. Możliwe są następujące kombinacje
|
|
|
|
|
|
|
|
|
|
-> KISS
|
|
|
|
|
-> KISS + DIGI
|
|
|
|
|
-> KISS + DIGI + METEO
|
|
|
|
|
|
|
|
|
|
Włączenie funkcjonalności stacji pogodowej (przez odkomentowanie _METEO) automatycznie włącza digipeater nawet jeżeli
|
|
|
|
|
zakomentowane jest #define _DIGI w pliku konfiguracyjnym. Komunikacja z komputerem odbywa się na prędkości 9600bps, a sam
|
|
|
|
|
protokół KISS działa od samego początku pracy urządzenia i nie musi być w żaden sposób inicjalizowany ze strony PC.
|
|
|
|
|
|
2017-08-20 15:47:37 +00:00
|
|
|
|
Sterownik wysyła co 10 minut ramkę telemetryczną zawierającą informację o ilości odebranych, nadanych i powtórzonych
|
|
|
|
|
pakietów APRS przez okres minionych 10 minut. Ilość nadanych ramek jest sumą powtórzonych ramek i ramek własnych
|
|
|
|
|
wliczając w to ramki telemetrii. Co ok 75 minut nadawane są pełne opisy kanałów.
|
|
|
|
|
|
2017-08-22 18:28:21 +00:00
|
|
|
|
Sterownik nie umożliwia bezpośrednie transmitowanie jakichkolwiek danych do internetu (do serwerów APRS-IS) z powodów
|
|
|
|
|
oczywistych. Uruchomienie funkcjonalności igate wymaga podłączenia przez UART komputera PC, Raspberry-PI lub czegokolwiek
|
|
|
|
|
innego na czym można uruchomić oprogramowanie takie jak APRX, APRSIS32, czy UiView32. Na chwile obecną pakiety własne,
|
|
|
|
|
czyli generowane przez sterownik ramki pozycyjne, pogodowe czy telemetryczne są nadawane wyłącznie na port radiowy.
|
|
|
|
|
W przyszłości pojawi się funkcjonalność polegająca na wysyłaniu przez KISS do komputera nie tylko ramek odebranych drogą
|
|
|
|
|
radiową, ale również tych pochodzenia własnego.
|
|
|
|
|
|
2017-08-20 12:41:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. KOMPILACJA
|
|
|
|
|
Do kompilacji oprogramowania ParaTNC na płytkę STM32VLDISCOVERY potrzebny jest zestaw narzędzi GNU ARM Embedded Toolchain
|
2017-08-22 18:28:21 +00:00
|
|
|
|
w którego skład wchodzi kompilator gcc-arm-none-eabi, debugger gdb, linker, oraz zestaw bibliotek i plików include.
|
2017-08-20 12:41:17 +00:00
|
|
|
|
Dodatkowo niezbędny jest make i binutils znajdujący się w kazdej dystrybucji linuksa. ParaTNC został napisany i jest
|
|
|
|
|
rozwijany na systemie Xubuntu 16.04LTS z toolchainem w wersji 2016q-3, aczkolwiek bez problemu będzie się kompilował na
|
|
|
|
|
dowolnie nowszej wersji. Kompilacja w systemie Windows czy MacOS nie jest wspierana ale powinna się udać, jeżeli ktoś
|
|
|
|
|
potrafi odpowiednio skonfigurować całe środowisko.
|
|
|
|
|
|
|
|
|
|
W przypadku systemów Debian i ubunto-podobnych zdecydowanie zaleca się instalację toolchain przez aptitude z repozytorium
|
|
|
|
|
internetowego. Jest to szybkie, wygodne i powoduje, że wszystkie komponenty są kopiowane do domyślnych folderów instalacji,
|
|
|
|
|
co pozwala uniknąć serii błędów ze względu na niemożność odnalezienia ścieżki do np. gcc przez make.
|
|
|
|
|
|
|
|
|
|
Informację na temat GNU ARM Embedded Toolchain, jego źródła, skompilowane wersję dystrybucyjne i dokumentację znajdują się:
|
|
|
|
|
https://launchpad.net/gcc-arm-embedded
|
|
|
|
|
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm
|
|
|
|
|
Instrukcja konfiguracji repo i instalacji pakietu znajduje się tutaj.
|
|
|
|
|
https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa
|
|
|
|
|
|
|
|
|
|
Binutils i make znajduje się w repozytorium debiana/ubuntu, w przypadku GNU ARM Embedded należy zgodnie z instrukcją z
|
|
|
|
|
powyższego linku dodać odpowiednie repozytorium zewnętrzne.
|
|
|
|
|
|
|
|
|
|
'sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa'
|
|
|
|
|
'sudo aptiude update'
|
|
|
|
|
'sudo aptitude install make automake binutils gcc-arm-embedded'
|
|
|
|
|
|
|
|
|
|
Jeżeli źródła nie zostały jeszcze skonfigurowane należy zainstalować w systemie git i sklonować repozytorium kodu
|
|
|
|
|
na lokalny dysk twardy. W tym celu należy wydać polecenie będąc w katalogu gdzie chcemu aby znalazły się źródła:
|
|
|
|
|
|
|
|
|
|
'git clone https://github.com/sp8ebc/para-tnc'
|
|
|
|
|
|
|
|
|
|
a następnie skonfigurować plik ./include/station_config.h . Po instalacji wymaganego programowania należy wejść w podkatalog
|
|
|
|
|
Debug i wydać polecenie
|
|
|
|
|
|
|
|
|
|
'make'.
|
|
|
|
|
|
|
|
|
|
Źródła powinny się skompilować a w tymże katalogu pojawić się plik 'ParaTNC-ARM-Lite.hex' gotowy do wgrania do płytki.
|
2017-08-20 12:50:46 +00:00
|
|
|
|
Dowodem na poprawne zakończenie procesu są poniższe komunikaty w konsoli, które powinny pojawić się pod sam koniec procesu
|
|
|
|
|
kompilacji
|
|
|
|
|
|
|
|
|
|
Finished building target: ParaTNC-ARM-lite.elf
|
|
|
|
|
|
|
|
|
|
Invoking: Cross ARM GNU Create Flash Image
|
|
|
|
|
arm-none-eabi-objcopy -O ihex "ParaTNC-ARM-lite.elf" "ParaTNC-ARM-lite.hex"
|
|
|
|
|
Finished building: ParaTNC-ARM-lite.hex
|
|
|
|
|
|
|
|
|
|
Invoking: Cross ARM GNU Print Size
|
|
|
|
|
arm-none-eabi-size --format=berkeley "ParaTNC-ARM-lite.elf"
|
|
|
|
|
text data bss dec hex filename
|
|
|
|
|
36512 552 3312 40376 9db8 ParaTNC-ARM-lite.elf
|
|
|
|
|
Finished building: ParaTNC-ARM-lite.siz
|
|
|
|
|
|
2017-08-20 12:41:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5. WGRYWANIE PLIKU HEX DO PŁYTKI STM32VLDISCOVERY
|
|
|
|
|
Płytka STM32VLDISCOERY ma wbudowany programator/debugger sprzętowy ST-Link v1. Komunikacja z nim odbywa się przez
|
|
|
|
|
komendy SCSI passthrough a samo urządzenie wykrywa się w systemie jako pamięć masowa. W domyślnej konfiguracji po
|
|
|
|
|
podłączeniu płytki prez USB do komputera system (a dokładnie modprobe) automatycznie załaduje dla tego urządzenia sterownik
|
2017-08-22 18:28:21 +00:00
|
|
|
|
mass-storage, system zamontuje emulowany przez programator system plików jako pendrive, co uniemożiwi zaprogramowanie.
|
|
|
|
|
W związku z powyższym należy w jego konfiguracji zablokować takie zachowanie. Robi się to przy pomocy polecenia:
|
2017-08-20 12:41:17 +00:00
|
|
|
|
|
|
|
|
|
'sudo echo "options usb-storage quirks=483:3744:i" >> /etc/modprobe.d/stlink_v1.conf'
|
|
|
|
|
|
|
|
|
|
Po ponownym uruchomieniu komputera warto sprawdzić, czy konfiguracja działa. Po podłączeniu STM32VLDISCOERY żadna dodatkowa
|
|
|
|
|
pamięć masowa (pendrive) nie powinna zostać zamontowana. Po sprawdzeniu przez 'dmesg' na końcu powinno być miej więcej coś
|
|
|
|
|
takiego:
|
|
|
|
|
|
|
|
|
|
[90639.895886] usb 2-1.1: new full-speed USB device number 13 using ehci-pci
|
|
|
|
|
[90639.990288] usb 2-1.1: New USB device found, idVendor=0483, idProduct=3744
|
|
|
|
|
[90639.990294] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
|
|
|
|
|
[90639.990296] usb 2-1.1: Product: STM32 STLink
|
|
|
|
|
[90639.990298] usb 2-1.1: Manufacturer: STMicroelectronics
|
|
|
|
|
[90639.990300] usb 2-1.1: SerialNumber: QÿrI\xffffffc2\xffffff86RV%X\xffffffc2\xffffff87
|
|
|
|
|
[90639.990796] usb-storage 2-1.1:1.0: USB Mass Storage device detected
|
|
|
|
|
[90639.992973] usb-storage 2-1.1:1.0: device ignored
|
|
|
|
|
|
|
|
|
|
W dalszym ciągu należy zainstalować oprogramowanie texane-stlink które służy do obsługi programatora stlink-v1/v2 w
|
|
|
|
|
systemie linux.
|
|
|
|
|
|
|
|
|
|
'git clone git://github.com/texane/stlink.git'
|
|
|
|
|
'cd stlink.git'
|
|
|
|
|
'make'
|
|
|
|
|
'cd build/Relase'
|
|
|
|
|
'sudo cp st-* /usr/bin'
|
|
|
|
|
|
2017-08-20 12:50:46 +00:00
|
|
|
|
Na koniec, jeżeli programator działa można wrzucić program do płytki. Po przejściu do katalogu ./para-tnc/Debug
|
|
|
|
|
wywołuje się następujące polecenie
|
|
|
|
|
|
|
|
|
|
'sudo st-flash --format ihex write /dev/sr0 ParaTNC-ARM-lite.hex'
|
|
|
|
|
|
|
|
|
|
Jeżeli podczas programowania w konsoli wyskoczy błąd -1, lub jakikolwiek inny warto zresetować płytkę przez wyjęcie
|
|
|
|
|
i ponowne włożenie wtyczki USB (czarny przycisk RST jest podłączony do targetu a nie programatora).
|