Inhaltsverzeichnis

Installation von Emdebian Grip oder Buildroot-FS auf den Phytec phyCORE-MPC5200B

Die folgende Anleitung erklärt die Installation von Emdebian Grip (Wheezy) auf den phyCORE-MPC5200B-tiny oder phyCORE-MPC5200B-IO von Phytec.

Downloads

In diesem Verzeichnis befindet sich auch ein bereits compilierter Kernel, ein fertiges Root-Filesystem, ein DeviceTree Blob und ein uBoot-Image.

Voraussetzung

Root-Filesystem erstellen (Emdebian)

Wir benutzen Multistrap für das Root-Filesystem gemäss Anleitung: Root-Filesystem erstellen.

Root-Filesystem erstellen (Buildroot)

Siehe allgemeine Anleitung Buildroot.

Neuen Kernel compilieren (v3.19, ohne Real-time)

Siehe Anleitung für v3.19.

Neuen Real-time-Kernel compilieren (v4.1.15-rt17+)

Siehe Anleitung für v4.1.15 Real-Time.

Device Tree Blob

Erstelle Device Tree Blob aus den Device Tree Files, siehe Device Tree erstellen. Quellen: Für alle Boards mpc5200b.dtsi, für tiny-Board pcm030.dts, für io-Board pcm032_ntb.dts und ntb-c32-Board ntb_c32.dts.

dtc -I dts -O dtb -S 0x40000 -o oftree-ntbc32.dtb ntb_c32.dts

Installation vorbereiten

Für die Installation auf dem phyCORE-MPC5200B müssen die benötigten Dateien auf einem TFTP-Server bereit gestellt werden. Am NTB kann hierfür der FTP-Server des INF-Instituts verwendet werden: inf004.ntb.ch2).

Falls auf dem Board kein Bootloader mehr installiert ist (z.B. weil es mit deep vewendet wurde), muss erst U-Boot wieder installiert werden. Dazu wird das U-Boot Image mittels BDI2000 oder BDI3000 ins Flash kopiert. Achtung: Neuere Kernel benötigen mindestens UBoot 1.3.2.

Dazu folgende Befehle im BDI eingeben:

unlock 0xfff00000 0x10000 4
erase 0xfff00000 0x10000 4
prog 0xfff00000 phycore_mpc5200b/uboot/u-boot-high-pcm032.bin bin

Danach das BDI trennen und den Reset Knopf drücken. Über ein Terminal mit Baudrate 115200 sollte U-Boot nun verfügbar sein.

Linux Kernel und Root File System installieren

Flash Partitionstabelle

Sämtliche Adressen sind relativ zur Basisadresse des Flash-Speichers!

32 MB Version:
Basis-Adresse: 0xFE00 0000

Von Bis Grösse Verwendung
0x0000 0000 0x0003 FFFF 256k U-Boot LOW
0x0004 0000 0x002F FFFF 2816k Linux Kernel
0x0030 0000 0x01EF FFFF 28672k Root FS
0x01F0 0000 0x01F3 FFFF 256k U-Boot HIGH
0x01F4 0000 0x01F7 FFFF 256k Env. U-Boot
0x01F8 0000 0x01FB FFFF 256k Device Tree
0x01FC 0000 0x01FF FFFF 256k Free Space

64 MB Version:
Basis-Adresse: 0xFC00 0000

Von Bis Grösse Verwendung
0x0000 0000 0x0003 FFFF 256k U-Boot LOW
0x0004 0000 0x002F FFFF 2816k Linux Kernel
0x0030 0000 0x03EF FFFF 60416k Root FS
0x03F0 0000 0x03F3 FFFF 256k U-Boot HIGH
0x03F4 0000 0x03F7 FFFF 256k Env. U-Boot
0x03F8 0000 0x03FB FFFF 256k Device Tree
0x03FC 0000 0x03FF FFFF 256k Free Space
  1. Board anschliessen und starten:
    1. Carrierboard über RS-232 mit PC verbinden (beim Phytec PCM-973 sind die Leitungen auf dem Board bereits gekreuzt, so dass ein 1:1-Kabel verwendet werden muss, beim NTB C32 Carrierboard ist hingegen ein Nullmodem-Kabel zu verwenden).
    2. Netzwerkkabel anschliessen
    3. Auf dem Entwicklungs-PC ein serielles Terminal öffnen (115200 Baud/s, 8 Data Bit, 1 Start Bit, 1 Stop Bit, kein Parity)
    4. Board starten (Versorgung anschliessen) → jetzt müsste im Terminal die Boot-Ausgaben von uboot zu sehen sein
    5. Beliebige Taste drücken, um Autostart abzubrechen → nun steht eine U-Boot-Kommanduzeile bereit: uboot>
  2. Netzwerkkonfiguration von U-Boot überprüfen und wenn notwendig anpassen. Wenn das Environment von U-Boot im Flash gelöscht ist, holt sich U-Boot gewisse Parameter aus seinem 'Environment' vom EEPROM. Man kann diesen Inhalt überschreiben (siehe http://www.phytec.eu/europe/support/faq/faq-phycore-mpc5200b-io.html unter U-Boot Update).
    1. Aktuelle Konfiguration anzeigen:
      uboot> printenv
    2. Neue IP-Adresse setzen:
      uboot> setenv ipaddr 146.136.39.53
    3. Netzwerkmaske festlegen:
      uboot> setenv netmask 255.255.252.0
    4. Server IP-Adresse festlegen:
      uboot> setenv serverip 146.136.36.50
    5. Gateway festlegen:
      uboot> setenv gateway 146.136.36.1
    6. MAC-Adresse setzen (unter Phytec phyCORE-MPC5200B-I/O Adresse für bestimmtes Board herauslesen):
      uboot> setenv ethaddr 50:2D:F4:03:E3:89
  3. Kernel Image einrichten:
    1. Flash löschen:
      uboot> protect off 0xfe040000 +0x2c0000
      uboot> erase 0xfe040000 +0x2c0000
    2. Image von TFTP Server herunterladen:
      uboot> tftp 0x400000 uImage
    3. Image vom RAM ins Flash kopieren:
      uboot> cp.b 0x400000 0xfe040000 $(filesize)
  4. Root FS einrichten:
    1. Flash löschen:
      uboot> protect off 0xfe300000 +0x1c00000
      uboot> erase 0xfe300000 +0x1c00000
    2. Image von TFTP Server herunterladen:
      uboot> tftp 0x400000 rfs.jffs2
    3. Image vom RAM ins Flash kopieren:
      uboot> cp.b 0x400000 0xfe300000 $(filesize)
  5. Device Tree einrichten:
    1. Flash löschen:
      uboot> protect off 0xfff80000 +0x40000
      uboot> erase 0xfff80000 +0x40000
    2. Device Tree von TFTP Server herunterladen (boardspezifisch):
      uboot> tftp 0x400000 oftree-ntbc32.dtb
    3. Device Tree vom RAM ins Flash kopieren:
      uboot> cp.b 0x400000 0xfff80000 $(filesize)
  6. Boot-Konfiguration anpassen:
    1. setenv bootargs console=ttyPSC0,115200 rw root=/dev/mtdblock2 rw rootfstype=jffs2
    2. setenv bcmd_flash bootm 0xfe040000 - 0xfff80000
    3. saveenv

Installation testen

Jetzt kann in U-Boot mit dem Befehl

run bcmd_flash

Linux gebootet werden. Auf der Konsole erscheint eine Login-Shell.
Natürlich kann die Konfiguration von U-Boot auch gespeichert werden, (siehe U-Boot).

EEROS Installation

  1. Cross Toolchain installieren Anleitung für Debian.
  2. Tools installieren
     sudo apt-get install git make cmake 
  3. EEROS clonen:
     git clone https://github.com/eeros-project/eeros-framework.git 
  4. Zum develop branch wechseln:
    cd eeros 
    git checkout develop
  5. EEROS build Ordner erstellen:
     mkdir build-mpc5200 
  6. Toolchain Datei erstellen:
    # cd mkdir build-mpc5200 
    nano mpc5200.cmake
    mpc5200.cmake
    set(CMAKE_SYSTEM_NAME Linux)
    SET(CMAKE_CXX_COMPILER powerpc-linux-gnu-g++-4.7)
    SET(CMAKE_C_COMPILER  powerpc-linux-gnu-gcc-4.7)
    # where is the target environment
    SET(CMAKE_FIND_ROOT_PATH /usr/powerpc-linux-gnu )
    # search for programs in the build host directories
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    # for libraries and headers in the target directories
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set(CMAKE_CXX_FLAGS "-std=c++0x" CACHE STRING "" FORCE)
    set(LINUX TRUE CACHE BOOL "" FORCE)
  7. EEROS builden:
    cmake .. -DCMAKE_TOOLCHAIN_FILE=mpc5200.cmake
    make 
  8. Falls flink verwendet wird muss folgender Befehl verwendet werden:
    cmake .. -DCMAKE_TOOLCHAIN_FILE=../../mpc5200.cmake -DLIBFLINK:BOOL=true -DADDITIONAL_INCLUDE_DIRS:PATH=/home/mpc5200/flinklib/include/ -DADDITIONAL_LINK_DIRS:PATH=/home/mpc5200/flinklib/build-mpc5200/lib/ 
    make
  9. EEROS auf das Target kopieren:

Auf dem Entwicklungsrechner:

 nc -l -p 3333 < /src/libeeros.so 

Auf dem Target:

nc serverip 3333 > /usr/lib/libeeros.so 
ldconfig 

Siehe flink on Phytec PCM032 Board (mpc5200)

FPGA vom Prozessor aus laden

Mithilfe eines Kernel Modules (fpga_loader) kann der sich auf dem Phytec Board befindliche Cyclone II programmiert werden. Dazu sind folgende Schritte notwendig:

  1. NTB MPC5200 Daten holen mit:
     git clone https://github.com/ntb-ch/linux-phycore-mpc5200b
  2. Ins Verzeichnis kernel/FPGA/loader wechseln und Modul übersetzen:
    ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- KERNELDIR=~/mpc5200/kernel/linux-3.19 make
  1. Als nächstes muss für das FPGA eine .rbf (Raw Binary Format) Datei erzeugt werden. Dazu in Quartus unter Device→Device and Pin options → Programming Files bei Raw Binary File den Haken setzen.
  2. Danach das Design kompilieren.
  3. Die erzeugten .rbf Datei auf das Target kopieren, z.B. mit netcat (siehe How to use netcat) oder OpenSSH.
  4. Auf dem Target zuerst das Loader Modul laden mit
    insmod fpga_loader.ko

    Ab diesem Moment steht die serielle Schnittstelle auf der PSC6 nicht mehr zur Verfügung!

  5. Jetzt kann ein Design mit
    dd if=myDesign.rbf of=/dev/fpga_loader bs=5M

    auf das FPGA geladen werden.

  6. Dann muss das Modul mit
    rmmod fpga_loader.ko

    wieder entladen werden, damit die serielle Schnittstelle wieder gebraucht werden kann.

1)
Diese Anleitung wurde mit Kubuntu 14.04 getestet
2)
Bitte Unterordner mit dem eigenen Benutzernamen erstellen. Dateien und Ordner, die ausserhalb dieses Ordners erstellt werden, werden ohne Vorwarnung wieder gelöscht!