Czat

2024-01-26, 14:09:11
admin: forum pod tym linkiem: https://k5.2je.eu/index.php?action=forum

2024-01-26, 13:55:37
admin: Witam


Welcome to Quansheng UV-K5 Modding Fan Forum. Please login or sign up.

Lis 22, 2024, 04:32

Login with username, password and session length

Recent

"Gotowanie" czyli kompilacja softu ze źródeł.

Zaczęty przez admin, Paź 05, 2023, 17:18

Poprzedni wątek - Następny wątek

admin

W artykule tym opisze, krok po kroku jak "ugotować" soft pod własne preferencje.
Software radia Quansheng uv-k5 i pochodnych ma status otwartego oprogramowania, w sieci istnieje wiele odmian i forków modyfikacji tego oprogramowania. Jednym z najlepszych i najbardziej popularnych są źródła dostępne tutaj:
https://github.com/egzumer/uv-k5-firmware-custom

Na ich podstawie pokaże jak utworzyć binarkę, którą będzie można wgrać do radia, a w następnym artykule opiszę jak się ją wgrywa. Poradnik zakłada wykorzystanie systemu Windows.

Wszystkie potrzebne informacje znajdują się w powyższym linku, ale że są po angielsku to opisze najważniejsze i okraszę sceenami.

Po pierwsze wchodzimy na link:
https://github.com/egzumer/uv-k5-firmware-custom/releases/tag/v0.7
i na dole strony pobieramy kod źródłowy spakowany w pliku zip Source code (zip)
W chwili pisania jest to najnowsza wersja 0.7 aby zmienić wersję klikany na górze strony link Releases

Alternatywną metodą pobrania aktualnej wersji źródeł jest wejście na stronę: https://github.com/egzumer/uv-k5-firmware-custom i bobranie pliku zip jak na poniższym screenie:
git download zip.png


Do gotowania potrzebyjemy garnek i łyżkę, czyli dwa programy:
- 1. kompilator "gcc-arm-none-eabi-10.3-2021.10-win32.exe" z https://developer.arm.com/downloads/-/gnu-rm
- 2. i dodatkowo "gnu_make-3.81.exe" z https://gnuwin32.sourceforge.net/packages/make.htm

Pobieramy i instalujemy pierwszy program, uruchamiamy instalator one-eabi-10.3-2021.10-win32.exe przechodzimy kolejne kroki i zatrzymujemy się na ostatnim kroku by dodać "ptaszka" w opcji dodawania ścieżki PATH, jeśli o tym zapomnimy trzeba będzie później dodać ścieżkę ręcznie.
gcc install.png


Pobieramy i instalujemy drugi program, uruchamiamy instalator make-3.81.exe przeklikujemy się na domyślnych opcjach.

W zasadzie mamy już niezbędne elementy, zabieramy się za gotowanie.
Rozpakowujemy wcześniej pobrane źródła do dowolnego folderu.
Wchodzimy do niego i namierzamy plik Makefile, który nie posiada rozszerzenia. Jest to główny plik konfiguracyjny który odpowiada za smak naszej "potrawy". Ustawia się w nim które komponenty mają być zawarte w sofcie, a które wyłączone aby oszczędzić miejsce. Miejsca w pamięci na soft jest mało i należy uważać aby nie przekroczyć krytycznej wartości gdyż kompilacja się nie powiedzie. Do edycji pliku polecam program Notepad ++. https://notepad-plus-plus.org/
Po ewentualnej korekcji pliku Makefile przystępujemy do kompilacji. W tym celu najprościej odnajdujemy plik "win_make.bat" i klikamy na niego by go uruchomić.
Jeżeli wyskoczy błąd "'make' is not recognized as an internal or external command,
operable program or batch file." oznacza to że wymagana zmienna środowiskowa path nie została dodana poprawnie.
Aby dodać ścieżkę do zmiennej środowiskowej PATH w systemie Windows, wykonaj następujące kroki:

Kliknij przycisk Start i wpisz Zmienne środowiskowe w polu wyszukiwania.
Wybierz opcję Edytuj zmienne środowiskowe dla Twojego konta.
W oknie Zmienne środowiskowe wybierz zmienną PATH i kliknij przycisk Edytuj.
Kliknij przycisk Nowy i wpisz ścieżkę do folderu, który chcesz dodać, np. C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin.
Kliknij przycisk OK, aby zapisać zmiany.

 
Po uruchomieniu pliku "win_make.bat" uruchomi się okno konsoli cmd z przebiegiem procesu kompilacji
gotowanie.png
Jeżeli wszysko przebiegnie poprawnie w folderze z kodem źródłowym pojawi się plik firmware.bin
Jest to ugotowana binarka z softem który można wgrać do radia.
Niestety oryginalnym oprogramowaniem producenta radia nie uda się wgrać tak przygotowanej binarki i potrzebujemy do tego programu k5prog, który można pobrać z linku: https://github.com/OneOfEleven/k5prog-win/raw/main/k5prog_win.exe

Opisana metoda gotowania nie jest zbyt profesjonalna i posiada pewne wady, ale na początek powinna wystarczyć.
Jak by był potrzebny python to można go pobrać z linku: https://www.python.org/downloads/

admin

#1
Można dostosować firmware, włączając lub wyłączając różne opcje kompilacji. Pozwala to usunąć niektóre funkcje oprogramowania sprzętowego, aby zrobić miejsce w pamięci flash dla innych. Opcje znajdziesz na początku pliku "Makefile" ('0' = wyłącz, '1' = włącz).
ENABLE_CLANG                  := 0     **eksperymentalna opcja kompilacji z użyciem kompilatora clang zamiast gcc (LTO zostanie wyłączone, jeśli włączysz tę opcję)
ENABLE_SWD                    := 0       potrzebna tylko wtedy, gdy używasz portu SWD procesora (debugowanie/programowanie)
ENABLE_OVERLAY                := 0       rzeczy związane z pamięcią FLASH procesora, niepotrzebne
ENABLE_LTO                    := 0     **eksperymentalna opcja, która zmniejsza rozmiar skompilowanego oprogramowania sprzętowego, ale może powodować problemy z odczytem pamięci EEPROM (OVERLAY zostanie wyłączone, jeśli włączysz tę opcję)
ENABLE_UART                   := 1       bez tej opcji nie możesz konfigurować radia przez komputer!
ENABLE_AIRCOPY                := 0       łatwiej jest po prostu wprowadzić częstotliwość za pomocą przycisków (kopiowanie radiowe kanałów między "kaczkami")
ENABLE_FMRADIO                := 0       odbiornik naziemnego radia FM
ENABLE_NOAA                   := 0       lista kanałów NOAA (przydatne tylko w USA)
ENABLE_VOICE                  := 0       głosowe komunikaty wybieranych opcji i wciskanych klawiszy
ENABLE_VOX                    := 0       funkcja VOX (głosowa aktywacja nadawania)
ENABLE_ALARM                  := 0       alarmy TX ("syrena alarmowa")
ENABLE_1750HZ                 := 0       klawisz boczny 1750Hz TX tone (starszy sposób dostępu do przemienników)
ENABLE_BIG_FREQ               := 0       duże czcionki częstotliwości (jak w oryginalnym oprogramowaniu sprzętowym QS)
ENABLE_SMALL_BOLD             := 1       pogrubiony kanał nazwa/numer (gdy tryb wyświetlania kanału nazwa + częstotliwość)
ENABLE_KEEP_MEM_NAME          := 1       zachowuje nazwę kanału podczas (ponownego) zapisywania kanału pamięci
ENABLE_WIDE_RX                := 1       pełny RX 18MHz do 1300MHz (chociaż przedwzmacniacz/PA nie jest zaprojektowany do pełnego zakresu)
ENABLE_TX_WHEN_AM             := 0       zezwala na nadawanie w FM, gdy RX jest ustawiony na AM
ENABLE_F_CAL_MENU             := 0       włącza/wyłącza ukryte menu kalibracji częstotliwości radia
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1       standardowe przesunięcie fazy ogona CTCSS zamiast oryginalnej metody tonu 55Hz
ENABLE_BOOT_BEEPS             := 0       udostępnia użytkownikowi informacje zwrotne o dźwięku na temat położenia pokrętła głośności podczas uruchamiania
ENABLE_SHOW_CHARGE_LEVEL      := 0       pokazuje dodatkowo poziom naładowania, gdy radio jest ładowane
ENABLE_REVERSE_BAT_SYMBOL     := 1       odwraca symbol baterii na pasku stanu (+ biegun po prawej stronie)
ENABLE_CODE_SCAN_TIMEOUT      := 0       włącza/wyłącza 32-sekundowy limit czasu skanowania CTCSS/DCS (naciśnij przycisk wyjścia  aby zakończyć skanowanie)
ENABLE_AM_FIX                 := 1       dynamicznie dostosowuje wzmocnienia przedwzmacniacza w trybie AM, aby zapobiec przesterowaniu demodulatora AM, ignoruje poziom RSSI na ekranie (na razie)
ENABLE_AM_FIX_SHOW_DATA       := 1       pokazuje dane debugowania dla AM fix (nadal je udoskonalam)
ENABLE_SQUELCH_MORE_SENSITIVE := 0       czyni poziomy squelch nieco bardziej czułymi - planuję umożliwić użytkownikom samodzielną regulację wartości
#ENABLE_FASTER_CHANNEL_SCAN   := 0       don't use (for now) .. increases the channel scan speed, but the squelch is also made more twitchy
ENABLE_RSSI_BAR               := 1       włącza graficzny pasek poziomu RSSI dBm/Sn zamiast małych symboli anteny
ENABLE_AUDIO_BAR              := 0       eksperymentalna opcja wyświetlania graficznego paska poziomu audio podczas transmisji
ENABLE_COPY_CHAN_TO_VFO       := 1       kopiuje bieżący kanał do VFO. Długie naciśnięcie klawisza Menu ('M')
#ENABLE_SINGLE_VFO_CHAN       := 1       jeszcze nie zaimplementowano - pojedynczy VFO na wyświetlaczu, gdy jest to możliwe
#ENABLE_BAND_SCOPE            := 1       jeszcze nie zaimplementowano - spectrum/pan-adapter

Nowe/zmodyfikowane klawisze funkcyjne:

    Długie naciśnięcie klawisza "M" .. Kopiuje wybrany kanał do tego samego VFO, a następnie przełącza VFO w tryb częstotliwości
    Długie naciśnięcie klawisza "7" .. Przełącza ustawienie listy skanowania wybranego kanału .. jeśli VOX jest wyłączony w pliku Makefile lub
    Długie naciśnięcie klawisza "5" .. Przełącza ustawienie listy skanowania wybranego kanału .. jeśli NOAA jest wyłączone w pliku Makefile
    Długie naciśnięcie klawisza "*" .. Uruchomia skanowanie, a następnie przełącza skanowanie między listami skanowania 1, 2 lub WSZYSTKIMI kanałami