- Programme mit Lizenzen herunterladen (quartus, questasim)
- Projektordner erstellen (siehe Intro): synthese, vhdl, simulation, code
- Mit quartus Projektdatei erstellen (*.qpf), ablegen in synthese-ordner
- VHDL Code schreiben (*.vhd) oder Schema (*.bdf) über Menu Symbol Tool zeichnen. Pin müssen zugewiesen werden. Dateien ablegen in vhdl-odner
- Datein ins Projekt einbinden: Menu Assignments/Settings /Files
- Eine Datei muss Top-Level sein. Auswählen per rechte Maus > set as top-level
- Pinzuweisung (Laden datei.tcl aus ordner synthese) aktivieren über
Tools/Tcl Script/ Run - Kompilieren bzw. Synthese mit Processing/Start Compilation (*.sof)
- Projekt auf Board laden: (Schalter auf Board auf „RUN“)
Tools/Programmer (ev. Projektdatei.sof zufügen) start
Fehlt die Lizenz, kann man nicht auf start drücken
Repository erstellen: Anleitung
Programme installieren
– Git
– Github: Ist die GUI für unter Windows
Konto auf öffentlicher Plattform
– Auf einer Plattform (z. B. Github) Konto errichten (user, email, passwort)
– Öffentliche Plattform: Pullen darf jeder vom Projekt, ohne passwort
– Pushen verlangt einen Namen und ein Passwort
– Repository ohne Lizenz: Man darf den Code nicht brauchen
Schritte lokale Synchronisation
– Auf Plattform den SSH-pfad kopieren
– lokal an Ort gehen, wo Hauptverzeichnis hinkommen soll.
Liegen bereits Ordner, dann diese wegkopieren und zuerst Repository anlegen
Windows:
Mit GUI Github auf + und dann Clone auswählen, Projekt anwäheln
git clone https://github.com/<user>/projektname.git
– Falls bestehende Ordner wegkopiert wurden, diese nun dem Projekt zufügen:
Windows:
Mit GUI Github auf + und add und die kopierten Dateien auswählen
der Committext kann direkt zugefügt werden
git status git add <file> git commit -m "text"
– gitignore ausfüllen
*~ für alle backupts *o für objektdateien directory/**/* ignoriert dieses Verzeichnis, ausser: !directory/blabla/datei.xxx ausser dieser Ordner oder diese Datei
– Daten hochladen aufs Repository
Windows:
Über sync (oben rechts)
git pull git push
Repository löschen
rm -rf .git
VHDL-Projekt Datenstruktur und Programme
Ordnerstruktur
Synthese (oder quartus)
. – Projektdatei: projekt.qpf
. – Pinzuweisung: datei.tcl
. [Ordner output_files] wird durch Synthese generiert
. – synthetisiertes File für FPGA: datei.sof
. – kompiliertes File für Memory: datei.pof
VHDL (oder source)
. – Es braucht ein Top-Level top.xxx (rechte Maus) Rechte zuweisen
. – Schaltpläne: datei.bdf
. – importierete Blöcke (IP): datei.qpf
. – eigene Blöcke datei.vhd
. – testbench: tb_datei.vhd
Software
. – files.c
. – files.h
Simulation (oder questasim)
. Ordner questasim
. – Simulatondatei: test_midi.mpf
. – Signaldatei: wave.do
. [Ordner work] wird durch questasim generiert
. Ordner script (Verzeichnis zum Aufrufen der Simulation)
. – compile.do
. – test_input.txt
. – test_output_results.txt
……………………………………………………………………………………..
FPGA Synthese: Quartus
Das Programm Quartus von altera (lizenz) ist sehr mächtig. Ohne Lizenz, kann die Datei nicht auf das FPGA geladen werden.
In der Synthese werden die Pins zugewisen, die Verbindungen gelegt, das FPGA-Innenleben designt.
Die Synthese dauert sehr lange. Nach dem Synthetisieren wird der Stream auf das Board oder auf den Flash-Memory geladen.
home/bin/quartus_x.sh
Simulation: Questasim
Das externe Programm questasim ist ein ausführliches Simulationsprogramm.
Quartus selbst wird mit Modelsim mitgeliefert, das jedoch begränzt in der Anzahl zu simulierenden Blöcke ist.
Simuliert über Testbenches, die man über die Konsole per Script ausführt.
debian auf raspberry pi 2
Debian auf SD-Karte laden
- Debian Jessie image für Pi 2: http://sjoerd.luon.net/posts/2015/02/debian-jessie-on-rpi2/
- Erhält Raspery Pi mit SD Karte strom, bootet das System von selbst
Schritte von Juan:
- Download and extract the jessie-rpi2-*.img.gz to get an .img file
- On any debian-based linux type sudo apt-get install bmap-tools and install it.
- Then type sudo bmaptool copy –nobmap jessie-rpi2.img /dev/sdx (Change yourlocation to the location of the .img file and sdx for the letter where the SD is mounted, if you don’t know it type sudo fdisk -l and look for it).
- Wait until it finishes and then put the SD on your rp2.
Erster SSH-Login zum Konfigurieren
- Das RPi durch Ethernet mit dem Router verbinden und dann am Strom anschliesen zum booten.
- Auf dem Router prüfen, welche IP-Adresse das RPi bekommen hat (durch Namen der Maschine)
- $ ssh root@192.168.1.158 mit Passwort debian
Grundsystem konfigurieren
- Kontos für ale und katrin erstellen. Login ohne Passwort, nur mit key.
- adduser katrin (+ale)
- auf Linux, SSH-key generieren: ssh-keygen (fragt um ein Pfad)
- scp id_rsa.pub katrin@192.168.1.158:.ssh/ (+ale)
- auf den rpi: cat id_rsa.pub >> .ssh/authorized_keys
- Zugangsrechte für ~.ssh/* auf r– setzen
- kein login für root und nur key login für den users:
- edit /etc/ssh/ssh_config ,
- PasswordAuthentication no und PermitRootLogin no setzen.
- Auf dem Router, Port forwarding für https einrichten
Owncloud installieren
- die externe festplatte in /etc/fstab hinzufügen
- die uuid der festplatte mit blkid auslesen
- in /etc/fstab die folgende Zeile hinzufügen:
UUID=375cae2c-e89e-45ef-80f3-ee65e54b27e2 /mnt/data ext4 defaults 0 2 - ln -s /mnt/data/owncloud /var/www/owncloud/data (falls data/ bereits exisitert, zuerst umbennen und dann den inhalt in den neuen data/ verzeichnis kopieren; es scheint nicht möglich zu sein, auf andere laufwerke zugreifen)
- user owncloud in der datenbank hinzufügen:
$ mysql –user=root –password mysql
create user ‚owncloud’@’localhost‘ identified by ‚owncloud‘ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO ‚owncloud’@’localhost‘;
SELECT User FROM mysql.user;
create database owncloud; - Community Debian Repository von Owncloud hinzufügen und das neuste Owncloud installieren
- php5-mysql dazu installieren
- Frage: sollten wir nginx statt apache brauchen? (http://etapien.com/guides/how-to-install-owncloud-on-debian-7-with-nginx/)
192.168.1.158/owncloud/
aufrufen, admin konto erstellen und unbedingt auf |> clicken um mysql als datenbank auszuwählen.- port für SSH auf nicht Standard setzen (22; https://www.adayinthelifeof.nl/2012/03/12/why-putting-ssh-on-another-port-than-22-is-bad-idea/)
-
Securing MySQL: MySQL ships with a few conveniences that are supposed to be removed when put on a real server, to do that type:
sudo mysql_secure_installation
DNS
- You need to log into your Domain Registra’s account and set the A-record for your domain (mysite.com) to point to your router’s public IP address.
SSL
- https://blog.hasgeek.com/2013/https-everywhere-at-hasgeek/
- https://hallard.me/enable-ssl-for-apache-server-in-5-minutes/
- http://www.startssl.com/?app=1
VPN
- You’ll need to forward port 1194 (UDP traffic) to your Raspberry Pi’s internal IP address.
- Install openvpn
- http://readwrite.com/2014/04/10/raspberry-pi-vpn-tutorial-server-secure-web-browsing
- http://www.raspberrypihelp.net/tutorials/1-openvpn-server-tutorial
- http://www.linuxuser.co.uk/news/create-a-vpn-with-the-raspberry-pi
WIFI als LAN-Verbindung zu Raspery Pi einrichten
- wicd-curses installieren (network manager)
- die netdev gruppe für beide users hinzufügen
- das wifi sollte automatisch erkannt werden, falls nicht:
- sudo iwlist eth2 scan zeigt alle access points
- in der Preferences von wicd wlan0 als device setzen und wicd neu starten
How to get the wifi to work: http://sjoerd.luon.net/posts/2015/02/debian-jessie-on-rpi2/#comment-2210d3fbce30bfee22ad73d751a14d31$
Andere programme
- usbutils for lsusb
- vim
- sudo update-alternatives –config editor
- sudo nmap -sP 192.168.1.0/24 to discover the ip addresses around you
Whitespace
In C++ enden alle Strings mit einer Whitespace.
Whitespace werden eingefügt bei:
– Enter
– Tabluator
– Beim Abstand im Text
stream bearbeiten
token
Aufteilen des Streams in Pakete.
Die Paketunterteilung erfolgt über intelligente Funktionen.
Die Token an sich haben noch keine Bedeutung, es sind uninterpretierte Pakete.
parsen
Nennt man den Vorgang, der den Paketen (Token) eine Bedeutung zuteilt.
Es ist die Interpretation der Pakete.
Mit den Pipe-Operatoren < und > können streams übergeben werden.
Dies kann als Parameter für ein anderes Programm oder in eine Datei sein.
Dateiablage Linux
root/bin Programme für OS, Konsole Bsp. bash, cat, rm
root/home/ Dateien von Users
root/opt Programme selbst installiert Bsp: Nios, Questsim, altera
root/etc/ Konfiguarationsdateien
root/sbin Programme für Kommunikation Bsp: dhcpclient, wpa_cli
root/sys Systemprogramme
root/usr Programme über install installiert Bsp: ADB, cpp, blabla
Systempfad und Umgebungsvariabl setzen
Programme werden von ihrem Ordner aus gestartet.
Will man Programme von überall her ausführen können,
muss der Pfad der Pfadvariable übergeben werden.
Pfad der Pfadvariable zufügen
PATH=$PATH:/home/katrin/bin
– Der Pfad wird immer vom root aus angegeben
– Pfade werden voneinander durch : getrennt
– Die alte PATH-Variable ($PATH) muss genannt werden.
Der neue Pfad wird nach Doppelpunkt angehängt
Pfad in .bashrc setzen
#include programm-paths export PATH=$PATH:/opt/altera/13.0sp1/quartus/bin
.bashrc liegt im home als versteckte Datei
Variable (in Windows) als Systemvariable setzen
System und Sicherheit/ System /Erweiterte Systemeinstellungen
In diesem Popup hat es ein Button: Umgebungsvariablen
Anklicken und der Variable einen Namen geben: LM_LICENSE:blabla_5
Der Variable einen Wert geben: blaba@blume.aus.ch: 563
Script Linux
Ablegeort
home/katrin/bin
Ausführen (bei Ablageort)
./<script>.sh
Im Verzeichnis selbst wird mit ./ das Script ausgeführt.
Script der PATH-Variable zuweisen
PATH=$PATH:/home/katrin/bin
Mit gesetzer Pfadvariable kann das Script von überall her aufgerufen werden.
Ausführen Script überall
<script>.sh
Inhalt
#!/bin/bash # add programm to global path PATH=$PATH:/opt/ACA_166 # go to directory cd /opt/ACA_166/ # open programm java -jar ./QDAca.jar
Hier wird nicht der Script-Pfad, sondern das auszuführende Programm dem Pfad zugeteilt.
Script als ausführbar definieren
chmod +x name.sh
Parameter per Konsole mitgeben
#!/bin/bash # Ausgabe in Konsole echo $1 "anzahl_messungen" echo $2 "anzahl_wiederholungen" for o in `seq 1 $1` do # packetlength ist eine lokale Variable for packetlength in 100 400 1400 1500 \ do # Ausgabe Konsole aktuelle Paketlänge echo $l for i in `seq 1 $2` do iperf3 -c 10.4.30.50 -l $ packetlength done done done
– echo gibt string an Konsole aus
– $.. sind Variablen
– echo $.. fordert eine Eingabe per Konsole mit whitespace (Enter oder Abstand)
script.sh 5 2
Wenn man die Parmeter vergisst, fragt das Programm beim Start danach
// ]]>
Aliases in Linux
– Alias ersetzen Befehle durch ein Keywort
– Der Aufruf des Keyworts startet den Befehlt- Aliase müssen im home/.bashrc eingetragen werden
– Aliase können nicht nur die Argumente enthalten (ohne Programm)
Syntax
// keyword = endocsope, Befehl = ssh alias endoscope = "ssh root@192.168.17" // Aufruf des Befehlts endoscope
Alias setzen
gedit home/katrin/.bashrc
# Aliase alias endoscope='ssh root@192.168.17'
source ~/.bashrc