Soft Core OS

Nachdem ein Soft-Core-Prozessor in ein FPGA geladen wurde, folgt das Aufsetzen des OS. Bei Altera ist dies Nios2, bei Xilinx MicroBlaze.

Remote Zugriff auf OS
Per SSH (bzw. Nios Shell) wird auf den Softcore zugegriffen.

Ordner und Programme
Baut man einen Softprozessor ein, bildet dieser im Synthese Ordner ein Unterordner Software

synthese/software/

In diesen Ordner kann man notwendige Scripts und Settings ablegen.

Board Support Packet erzeugen
Das Script create bildet die Support Packete (und Ordner dazu)

./create

Kompilieren

./compile

Programm auf FPGA laufen lassen

./run

debian auf raspberry pi 2

Debian auf SD-Karte laden

Schritte von Juan:

  1. Download and extract the jessie-rpi2-*.img.gz to get an .img file
  2. On any debian-based linux type sudo apt-get install bmap-tools  and install it.
  3. 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).
  4. 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

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

RAM

SRAM   (Statisches RAM)
Speicherzellen sind mit Transistoren realsiert. Sie behalten den Zustand auch im Ruhezustand. Bei steigender Flanke werden die Bits übertragen.

DRAM (Dynamisches RAM)
Speicherzellen sind Kondensatoren. Diese verlierten die Daten und muss zyklisch „refreshed“ werden. Dies erfolgt Zeilenweise. Jede Zeile wird in einen Zeilenbuffer geladen, dort verstärkt und zurückgeladen.
Das Auffrischen muss auch im Ruhezstand statt finden, weshalb energiesensitive Geräte auf DRAM verzichten

DDR-SRAM     (Double-Data-Rate SRAM)
Die Verdopplung der Datenübertragung erfolgt, weil auch bei der fallenden Flanke Bits übertragen werden. Ausgelesen werden 2 Bit aufs Mal, wobei eines direkt mit dem Takt verarbeitet werden kann und das zweite in den Speicher abgelegt wird und zusätzlich ausgelesen werden muss.

Es braucht daszu die doppelte Busbreite, als für SRAM

DDR_RAM

PC Bewertung

Prozessor
LenovoThinkPad Ines:               Core-i7, CPU, 620@2.0 GHz x 4
Core i7-620M,    2 x 2.6 GHz
Latop M30 Ines:                            Core-i5-4210U, 4 x 1.7 GHz

OS-Typ
LenovoThinkPad Ines:               64 Bit
Latop Ines:                                    64 Bit

Memory
LenovoThinkPad Ines:               4 GB DDR3-SRAM, @ 1 GHz
Latop Ines:                                    4 GB

Disk                                                aktuell:  keine SSD-Harddisk
Lenovo ThinkPad Ines:               320 GB ,    5400RPM
Latop M-30 Ines:                           500 GB,    5400 rpm, HDD

Graphics
LenovoThinkPad Ines:               Intel: Ironlake Mobile
Latop Ines:                                    HD Graphics 4400,   @1GHz

Anschlüsse
LenovoThinkPad Ines:               3 x USB 2.0, RJ45, VGA, Audio 2 x 3.5mm Klinke
Latop Ines:                                    3 x USB 3.0, RJ45, HDMI, Audio 1 x 3.5 Kllinke

www.notebookcheck.net