# Tworzenie Własnego Firmware dla Mesa 7i92TF (Efinix Trion T20) Karta **Mesa 7i92TF** (wersja z żeńskim portem DB25 oraz złączem IDC26 2x13) jest oparta na układzie FPGA **Efinix Trion T20F256**. Oznacza to, że do edycji i kompilacji oprogramowania układowego wykorzystuje się środowisko **Efinity IDE** firmy Efinix, a sam kod opisany jest w języku VHDL (architektura HostMot2). Poniżej znajduje się kompletny przewodnik krok po kroku, jak przygotować i skompilować własną konfigurację pinów. --- ## Krok 1: Instalacja Efinity IDE 1. Zarejestruj się na stronie producenta układu FPGA: [Efinix Inc.](https://www.efinixinc.com/). 2. Pobierz i zainstaluj oprogramowanie **Efinity IDE** (zalecana wersja to `2021.2` lub nowsza, zgodnie z konfiguracją projektu w pliku `.xml`). 3. Pobierz plik licencji Efinix (jest wymagany do działania kompilatora). --- ## Krok 2: Przygotowanie plików źródłowych W Twoim katalogu ze źródłami (`source/`) znajduje się spakowany projekt dla tego układu: 1. Rozpakuj plik **`7i92t-hm2.zip`** (zawierający projekt dla układu T20F256) do nowego folderu roboczego, np.: ```bash unzip 7i92t-hm2.zip -d 7i92t_workspace ``` 2. Przejdź do nowo utworzonego folderu. --- ## Krok 3: Stworzenie nowej konfiguracji pinów (VHDL) Rozkład pinów dla złącz na karcie Mesa 7i92TF jest zdefiniowany w plikach o nazwie `PIN_*.vhd`. * **P2 (DB25 Female):** Piny wejścia/wyjścia od `I/O 00` do `I/O 16`. * **P1 (IDC26 2x13):** Piny wejścia/wyjścia od `I/O 17` do `I/O 33`. ### Instrukcja tworzenia własnego pliku pinów: 1. Skopiuj istniejący plik (np. popularny standard 5-osiowy `PIN_5ABOBx2D_34.vhd`) na nową nazwę: ```bash cp PIN_5ABOBx2D_34.vhd PIN_MOJA_KONFIGURACJA_34.vhd ``` 2. Otwórz plik `PIN_MOJA_KONFIGURACJA_34.vhd` w edytorze tekstu. 3. Zmień nazwę pakietu (package) w nagłówku i stopce pliku: ```vhdl package PIN_MOJA_KONFIGURACJA_34 is ... end PIN_MOJA_KONFIGURACJA_34; ``` 4. **Zdefiniuj moduły sprzętowe (`ModuleID`):** W sekcji `constant ModuleID` określasz, ile maksymalnie sprzętowych modułów (StepGen, QCount, PWM) ma być aktywnych w strukturze FPGA. 5. **Przypisz piny do funkcji (`PinDesc`):** W sekcji `constant PinDesc` przypisujesz fizycznym pinom `I/O` odpowiednie funkcje. * Przypisanie jako StepGen (krok): `IOPortTag & x"00" & StepGenTag & StepGenStepPin` * Przypisanie jako StepGen (kierunek): `IOPortTag & x"00" & StepGenTag & StepGenDirPin` * Przypisanie jako standardowe wejście/wyjście (GPIO): `IOPortTag & x"00" & NullTag & NullPin` * *Uwaga:* Druga kolumna bajtowa (np. `x"00"`, `x"01"`) określa numer instancji danego modułu (np. StepGen 0, StepGen 1...). --- ## Krok 4: Podłączenie konfiguracji w projekcie Musisz poinstruować plik główny (Top-level), aby użył Twojej nowej konfiguracji: 1. Otwórz plik **`TopEthernet16HostMot2_efx.vhd`**. 2. Odszukaj listę klauzul `use work.PIN_...`. 3. Zakomentuj obecnie aktywną linię (wstawiając `--` na początku), np.: ```vhdl --use work.PIN_PBXMAXD_34.all; ``` 4. Dodaj i odkomentuj swoją konfigurację: ```vhdl use work.PIN_MOJA_KONFIGURACJA_34.all; ``` --- ## Krok 5: Kompilacja w Efinity IDE 1. Uruchom program **Efinity IDE**. 2. Otwórz projekt, wybierając plik **`seveni92t.xml`** z folderu roboczego. 3. Dodaj swój nowy plik `PIN_MOJA_KONFIGURACJA_34.vhd` do listy plików projektu w zakładce *Design* (jeśli nie został automatycznie dodany). 4. Kliknij przycisk **Generate Bitstream** (ikona odtwarzania/zielona strzałka). 5. Środowisko przeprowadzi syntezę, placement i routing. 6. Po pomyślnej kompilacji, gotowy plik wyjściowy `.bin` znajdziesz w podkatalogu **`outflow/`** (np. `seveni92t.bin`). --- ## Krok 6: Wgranie nowego firmware na kartę Gdy masz już skompilowany plik `.bin`, wgraj go za pomocą programu `mesaflash`: 1. **Zapisz firmware do pamięci użytkownika:** ```bash mesaflash --device 7i92t --addr 192.168.1.121 --write outflow/seveni92t.bin ``` 2. **Zweryfikuj poprawność zapisu:** ```bash mesaflash --device 7i92t --addr 192.168.1.121 --verify outflow/seveni92t.bin ``` 3. **Załaduj nowy firmware (reset karty):** ```bash mesaflash --device 7i92t --addr 192.168.1.121 --reload ``` *Po przeładowaniu karta zacznie działać z Twoją własną konfiguracją pinów.*