This commit is contained in:
2026-07-08 14:08:05 +02:00
commit 29622a99f2
60 changed files with 4584 additions and 0 deletions

View File

@@ -0,0 +1,94 @@
# 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.*