Es gibt mal wieder ein neues Gadget. Das Terasic DE10-Nano Entwicklungsboard. Man bekommt es für einen vernünftigen Preis z.B. bei Mouser.

DE10-Nano

Initial wollte ich das Board "nur" für die Installation und Nutzung von MiSTer verwenden, da die Amiga und C64 Cores sehr gut funktionieren.

Da mich FPGAs aber schon länger fasziniert haben, wollte ich mich damit etwas intensiver in meiner Freizeit beschäftigen. Dazu benötige ich aber eine Entwicklungsumgebung, für die es keine macOS Version von der Altera (bzw. mittlerweile Intel) gibt. Ich habe mich daher dazu entschieden, eine Ubuntu Desktop Maschine unter VMWare Fusion zu betreiben, und die USB Verbindungen zum Entwicklungsboard (UART, USB Blaster) durchzuleiten.

Für die Standardinstallation verwende ich das Ubuntu Desktop 18.04.3 DVD Image. Die gewählten Einstellungen und Zusatzsoftware bei der Installation sind meine persönliche Präferenz.

  • Minimale Installation
  • Während Ubuntu installiert werden Aktualisierungen heruntergeladen
  • Install third-party software for graphics and Wi-Fi hardware and additional media formats

VMWare Tools / SSH Server

# System aktualisieren
sudo apt update
sudo apt upgrade

# VMWare Tools installieren
sudo apt install open-vm-tools open-vm-tools-desktop

# SSH Server, curl und ifconfig installieren
sudo apt install net-tools ssh curl

# Serial Terminal und git installieren
sudo apt install minicom git

# Verwaiste Pakete löschen
sudo apt --purge autoremove

# Neustart nach der Installation
sudo reboot

Zusätzliche Tools mit dem Ubuntu-Software Tool installieren

Da ich gerne noch einen grafischen Terminalemulator installiere, habe ich noch Tools aus dem Ubuntu Software Store installiert. Es gibt diese sicher auch per apt, aber ich wollte das Software Tool ausprobieren...

  • Desktop Terminal Emulator "Serial port terminal"
  • Gnome Tweak Tool "GNOME-Optimierung"

Chrome Browser

Mein favorisierter Browser, den ich anstelle des Firefox installiere.

cd ~/Downloads
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb

Firefox entfernen

sudo apt --purge remove firefox firefox-locale-de firefox-locale-en
sudo apt --purge autoremove

Verzeichnisnamen im Homeverzeichnis auf English

Da Quartus Prime 18.1 Lite für die Anlage des Desktop Icons einen fixen Pfad verwendet, werden die Benutzerverzeichnisse auf englische Bezeichnungen umgestellt. Dieser Schritt ist Optional, wenn im Homeverzeichnis bereits ein Ordner "Desktop" existiert.

  • Einstellungen -> Region und Sprache -> English (United States)
  • Update standard folders to current language? Update Names
  • Settings -> Region & Language -> German (Germany)
  • Standardordner auf die aktuelle Sprache aktualisieren? Nicht erneut fragen / Alte Namen beibehalten

Quartus Prime Lite 18.1 installieren

Quelle: siehe Thema "Ubuntu Virtual CAE System"

Download Quartus: http://fpgasoftware.intel.com/18.1/?edition=lite&platform=linux&download_manager=direct

Zielverzeichnis anlegen

sudo mkdir /opt/altera
sudo chown $(whoami):$(whoami) /opt/altera

mkdir -p /tmp/qi
cd /tmp/qi
-> Quartus-lite-18.1.0.625-linux.tar nach /tmp/qi kopieren
tar xvf Quartus-lite-18.1.0.625-linux.tar
./setup.sh
  • Installation directory: /opt/altera/18.1
  • Deselect all FPGA device families, except Cyclone V.

Update Quartus Prime Lite auf Version 18.1.1.646

cd /tmp/qi
chmod +x QuartusSetup-18.1.1.646-linux.run 
./QuartusSetup-18.1.1.646-linux.run
  • Installation directory: /opt/altera/18.1

Rollback Directory entfernen

rm -rf /opt/altera/18.1/uninstall/quartus-*-rollbackdir

PATH Variable aktualisieren

  • ~/.bashrc & /etc/skel/.bashrc
export QSYS_ROOTDIR="/opt/altera/18.1/quartus/sopc_builder/bin"

# Include the ALTERA fpga software
PATH="$PATH:/opt/altera/18.1/quartus/bin"

# Include the ALTERA Modelsim VHDL simulator
PATH="$PATH:/opt/altera/18.1/modelsim_ase/bin"

# Include the Platform Designer software
PATH="$PATH:/opt/altera/18.1/quartus/sopc_builder/bin"

export PATH

USB Blaster UDEV Rules erstellen

  • /etc/udev/rules.d/51-usbblaster.rules erstellen:
# Intel FPGA Download Cable
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666" 
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666"   

# Intel FPGA Download Cable II
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="0666"

Quartus starten und Probleme beheben

  • Da die libpng12 nicht vorhanden ist, kann man das u.g. Package installieren.
$ quartus
quartus: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory

cd ~/Downloads
wget http://security.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
sudo dpkg -i libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
  • Fehlende GTK Module
$ quartus
Gtk-Message: 12:22:39.024: Failed to load module "canberra-gtk-module"

sudo apt install libcanberra-gtk-module
  • Probleme mit "Unable to load image-loading module"
cd /opt/altera/18.1/quartus/linux64
mv libstdc++.so.6 libstdc++.so.6.quartus_distrib
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6

ModelSim starten und Probleme beheben

Auch ModelSim ist nicht direkt kompatibel mit der Ubuntu 18 Version, daher müssen dort auch ein paar Dinge angepasst werden um die Software zum laufen zu bekommen.

  • Der Pfad muss im Startskript anpassen
$ vsim
Error: cannot find "/opt/altera/18.1/modelsim_ase/bin/../linux_rh60/vsim"

cd /opt/altera/18.1/modelsim_ase
chmod u+w vco

Die Datei /opt/altera/18.1/modelsim_ase/vco an der unten stehenden Stelle anpassen.

      else
        case $utype in
          2.4.[7-9]*)       vco="linux" ;;
          2.4.[1-9][0-9]*)  vco="linux" ;;
          2.[5-9]*)         vco="linux" ;;
          2.[1-9][0-9]*)    vco="linux" ;;
          3.[0-9]*)             vco="linux" ;;
          *)                vco="linux_rh60" ;;

=> linux_rh60 muss hier durch linux ersetzt werden.

  • Es müssen noch fehlende 32 Bit Bibliotheken installiert werden
sudo apt install libc6:i386 libncurses5:i386 libxtst6:i386 libxft2:i386 libstdc++6:i386
  • libfreetype Problem beheben, indem man Freetype neu baut
$ vsim
Error in startup script:
Initialization problem, exiting.

Initialization problem, exiting.

    while executing
"InitializeINIFile quietly"
    invoked from within
"ncFyP12 -+"
    (file "/mtitcl/vsim/vsim" line 1)
** Fatal: Read failure in vlm process (0,0)

-> /etc/apt/sources.list anpassen und source urls (bionic und bionic-updates) hinzufügen

sudo apt update
sudo apt install libc6-dev-i386
sudo apt build-dep -a i386 libfreetype6
sudo apt-get install libharfbuzz-dev:i386 libicu-dev:i386
cd ~/Downloads
wget https://download.savannah.gnu.org/releases/freetype/freetype-2.8.1.tar.gz
tar xvzf freetype-2.8.1.tar.gz
cd freetype-2.8.1
./configure --build=i686-pc-linux-gnu --without-png "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
make -j8

mkdir /opt/altera/18.1/modelsim_ase/lib32
cp objs/.libs/libfreetype.so* /opt/altera/18.1/modelsim_ase/lib32/

-> In der Datei /opt/altera/18.1/modelsim_ase/vco hinter der folgenden Zeile den LD_LIBRARY_PATH einfügen:
dir=`dirname "$arg0"`

export LD_LIBRARY_PATH=/opt/altera/18.1/modelsim_ase/lib32
  • Wenn man ModelSim öffnet wird man feststellen, das die Font Größe der Sourcedateien extrem klein ist. Daher passt man die ModelSim Konfigurationsdatei an.
  1. Die Konfigrurationsdatei ~/.modelsim öffnen ("nano ~/.modelsim" im Terminal)
  2. Danach nach "PrefDefault = ... nach "textFontV2 {{Courier 10 Pitch} 12}" suchen. Der Fontname kann ein anderer sein, wobei sich Courier als Fixed-Width Font anbietet.
  3. Die Größe von 12 in -12 ändern. Beispiel: textFontV2 {{Courier 10 Pitch} -12}
  4. Konfiguration speichern und ModelSim erneut öffnen.
  • Aufräumen
rm -rf /tmp/qi

Intel SoC FPGA Embedded Development Suite

Download SoCEDS: http://fpgasoftware.intel.com/soceds/18.1/?edition=standard&download_manager=direct&platform=linux

mkdir -p /tmp/soceds
cd /tmp/soceds
-> SoCEDSSetup-18.1.0.625-linux.run nach /tmp/soceds kopieren
chmod +x SoCEDSSetup-18.1.0.625-linux.run

Vorraussetzungen installieren und Installation starten

sudo apt install libwebkitgtk-3.0
sudo apt install libc6:i386 libstdc++6:i386 zlib1g:i386

./SoCEDSSetup-18.1.0.625-linux.run
  • Installation directory: /opt/altera/18.1

Post-Installation Steps

# um die installation manuell zu starten:
cd /opt/altera/18.1/embedded/ds-5_installer
./install.sh
  • Installer for Arm DS-5 v5.29.1

    • (B) Continue with the installation
  • Installation Directory: /opt/altera/DS-5_v5.29.1

/opt/altera/DS-5_v5.29.1/bin/suite_exec select_default_toolchain

cd /opt/altera/DS-5_v5.29.1
./run_post_install_for_Arm_DS-5_v5.29.1.sh

cd /opt/altera/18.1/embedded/host_tools/altera/ds5_link
./ds5_link /opt/altera/DS-5_v5.29.1
  • ~/.bashrc & /etc/skel/.bashrc anpassen und den Pfad zur embedded_command_shell.sh hinzufügen
# Include Intel SoC FPGA Embedded Development Suite
PATH="$PATH:/opt/altera/18.1/embedded"

export PATH
rm -rf /tmp/soceds

Virtuelle Maschine aufräumen und shrinken

  • Filesystem defragmentieren
# Reboot um leere temp-Verzeichnisse zu erhalten
sudo reboot

# APT Dateien löschen
sudo apt clean

# Partition defragmentieren
sudo e4defrag /
  • Den ungenutzten Platz im Filesystem mit 0en füllen.
dd if=/dev/zero of=wipefile bs=1M; sync; rm wipefile
  • Den Shrink Prozess starten (open-vm-tools müssen installiert sein)
sudo vmware-toolbox-cmd disk shrinkonly

Nächster Beitrag Vorheriger Beitrag