95 lines
4.3 KiB
Markdown
95 lines
4.3 KiB
Markdown
# 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.*
|