Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
software:linux:emdebian:phycore-mpc5200b [2015-05-26 13:07] – graf | software:linux:emdebian:phycore-mpc5200b [2016-11-21 10:17] (aktuell) – ditaranto |
---|
====== Installation von Emdebian Grip auf den Phytec phyCORE-MPC5200B ====== | ====== Installation von Emdebian Grip oder Buildroot-FS auf den Phytec phyCORE-MPC5200B ====== |
| |
Die folgende Anleitung erklärt die Installation von [[:Software:Linux:Emdebian:start]] Grip (Wheezy) auf den [[:Embedded Systems:MPC5200:phyCORE-MPC5200B-tiny:start]] oder [[:Embedded Systems:MPC5200:phyCORE-MPC5200B-IO:start]] von Phytec. | Die folgende Anleitung erklärt die Installation von [[:Software:Linux:Emdebian:start]] Grip (Wheezy) auf den [[:Embedded Systems:MPC5200:phyCORE-MPC5200B-tiny:start]] oder [[:Embedded Systems:MPC5200:phyCORE-MPC5200B-IO:start]] von Phytec. |
| |
<box blue right 38% | **Downloads**> | <box blue right 38% | **Downloads**> |
* {{.:phytec:uImage | Kernel Image (3.19 / 7.April 2015)}} | * https://github.com/ntb-ch/linux-phycore-mpc5200b.git |
* {{.:phytec:rfs.jffs2 | Root-Filesystem (9.Okt.2014)}} | In diesem Verzeichnis befindet sich auch ein bereits compilierter Kernel, ein fertiges Root-Filesystem, ein DeviceTree Blob und ein uBoot-Image. |
* {{.:phytec:oftree-ntbc32.dtb | Device Tree Blob für io und C32 (23.Sept.2014)}} | |
* {{.:phytec:u-boot-pcm032.bin | U-Boot Image (von Phytec)}} | |
</box> | </box> |
| |
* Wir verwenden einen Standardkernel. Dieser muss gepatcht werden. Der Patch, die angepasste Kernelkonfiguration, die angepassten Device Tree Files und das u-Boot Image können alle aus einem eigenen Repository unter <code>https://github.com/ntb-ch/linux-phycore-mpc5200b.git</code> geholt werden. | * Wir verwenden einen Standardkernel. Dieser muss gepatcht werden. Der Patch, die angepasste Kernelkonfiguration, die angepassten Device Tree Files und das u-Boot Image können alle aus einem eigenen Repository unter <code>https://github.com/ntb-ch/linux-phycore-mpc5200b.git</code> geholt werden. |
| |
===== Root-Filesystem erstellen ===== | ===== Root-Filesystem erstellen (Emdebian) ===== |
Wir benutzen Multistrap für das Root-Filesystem gemäss Anleitung: [[software:linux:emdebian:rootfs_erstellen|Root-Filesystem erstellen]]. | Wir benutzen Multistrap für das Root-Filesystem gemäss Anleitung: [[software:linux:emdebian:rootfs_erstellen|Root-Filesystem erstellen]]. |
* Multistrap-Konfiguration: <file - phycorempc5200b.multistrap> | * Multistrap-Konfiguration: <file - phycorempc5200b.multistrap> |
* Dateisystemabbild erzeugen (zuvor unnötige Verzeichnisse löschen, siehe [[software:linux:emdebian:rootfs_erstellen|Root-Filesystem]], damit das Root-Filesystem in der Partition Platz hat): <code># mkfs.jffs2 -n -e 0x40000 -p 0x40000 -b -d /opt/multistrap -D device_table -o emdebian-wheezy-grip-phycore-mpc5200b.jffs2</code> | * Dateisystemabbild erzeugen (zuvor unnötige Verzeichnisse löschen, siehe [[software:linux:emdebian:rootfs_erstellen|Root-Filesystem]], damit das Root-Filesystem in der Partition Platz hat): <code># mkfs.jffs2 -n -e 0x40000 -p 0x40000 -b -d /opt/multistrap -D device_table -o emdebian-wheezy-grip-phycore-mpc5200b.jffs2</code> |
| |
===== Neuen Kernel compilieren ===== | ===== Root-Filesystem erstellen (Buildroot) ===== |
- Zuerst müssen alle Tools installiert sein, siehe unter [[..:ubuntu:crosstoolchain:start | Anleitung für Ubuntu]] oder [[.:cross-toolchain | Anleitung für Debian]]. Insbesondere muss GCC und die nCurses Bibliothek vorhanden sein. | Siehe [[software:linux:buildroot:start | allgemeine Anleitung Buildroot]]. |
- Kernel-Source-Code herunterladen z.B. mit: <code> git clone https://github.com/torvalds/linux </code> | |
- NTB MPC5200 Daten holen mit: <code> git clone https://github.com/ntb-ch/linux-phycore-mpc5200b</code> | ===== Neuen Kernel compilieren (v3.19, ohne Real-time) ===== |
- Ins Kernel Verzeichnis wechseln und die entsprechende Version auschecken: <code> git checkout v3.19 </code> | Siehe [[software:linux:phycore-mpc5200b:kernel_v3_19 | Anleitung für v3.19]]. |
- Patch in die Kernel Wurzel kopieren: <code> cp ../linux-phycore-mpc5200b/kernel/jffs2.patch . </code> | |
- Jffs2 Patch anwenden: <code>patch -p1 < ../jffs2.patch</code> | |
- Notwendige Variable definieren <code>export ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-</code> | ===== Neuen Real-time-Kernel compilieren (v4.1.15-rt17+) ===== |
- Defaultkonfiguration aus //linux-phycore-mpc5200b.git// nach //.config// in Wurzelverzeichnis kopieren. <code> cp ../linux-phycore-mpc5200b/kernel/linux-3.19/defconfig .config </code> | Siehe [[software:linux:phycore-mpc5200b:kernel_v4_4_15rt | Anleitung für v4.1.15 Real-Time]]. |
- Kernel konfigurieren (siehe [[software:linux:linux-kernel_crosscompilieren|Linux-Kernel crosscompilieren]]): <code> make menuconfig </code> | |
- Dann kann gemäss [[software:linux:linux-kernel_crosscompilieren|Linux-Kernel crosscompilieren]] die Konfiguration überprüft (''make menuconfig'') und der Kernel mit ''make uImage'' übersetzt werden. | |
| |
===== Device Tree Blob ===== | ===== Device Tree Blob ===== |
| |
===== Installation vorbereiten ===== | ===== 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: [[\\inf04-server.ntb.ch\ftp\pub\ | inf04-server.ntb.ch]]((Bitte Unterordner mit dem eigenen Benutzernamen erstellen. Dateien und Ordner, die ausserhalb dieses Ordners erstellt werden, werden ohne Vorwarnung wieder gelöscht!)). Anstatt das Root-FS und den Kernel selbst zu erstellen, können auch die in der Box "Download" bereitgestellten Dateien verwendet werden. | 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.ch\ftp\pub\ | inf004.ntb.ch]]((Bitte Unterordner mit dem eigenen Benutzernamen erstellen. Dateien und Ordner, die ausserhalb dieses Ordners erstellt werden, werden ohne Vorwarnung wieder gelöscht!)). |
| |
Falls auf dem Board kein Bootloader mehr installiert ist (z.B. weil es mit [[:Software:deep:start]] vewendet wurde), muss erst [[:software:linux:U-Boot]] wieder installiert werden. Dazu wird das {{.:phytec:u-boot-pcm032.bin | U-Boot Image}} mittels [[:Embedded Systems:Abatron BDI:start | BDI2000 oder BDI3000]] ins Flash kopiert. Achtung: Neuere Kernel benötigen mindestens UBoot 1.3.2. | Falls auf dem Board kein Bootloader mehr installiert ist (z.B. weil es mit [[http://deepjava.org/|deep]] vewendet wurde), muss erst [[:software:linux:U-Boot]] wieder installiert werden. Dazu wird das {{.:phytec:u-boot-pcm032.bin | U-Boot Image}} mittels [[:Embedded Systems:Abatron BDI:start | BDI2000 oder BDI3000]] ins Flash kopiert. Achtung: Neuere Kernel benötigen mindestens UBoot 1.3.2. |
| |
Dazu folgende Befehle im BDI eingeben: | Dazu folgende Befehle im BDI eingeben: |
- <code>setenv bootargs console=ttyPSC0,115200 rw root=/dev/mtdblock2 rw rootfstype=jffs2</code> | - <code>setenv bootargs console=ttyPSC0,115200 rw root=/dev/mtdblock2 rw rootfstype=jffs2</code> |
- <code>setenv bcmd_flash bootm 0xfe040000 - 0xfff80000</code> | - <code>setenv bcmd_flash bootm 0xfe040000 - 0xfff80000</code> |
| - <code>saveenv</code> |
| |
===== Installation testen ===== | ===== Installation testen ===== |
-Cross Toolchain installieren [[.:cross-toolchain | Anleitung für Debian]]. | -Cross Toolchain installieren [[.:cross-toolchain | Anleitung für Debian]]. |
-Tools installieren<code> sudo apt-get install git make cmake </code> | -Tools installieren<code> sudo apt-get install git make cmake </code> |
-EEROS clonen:<code> git clone ssh://username@inf05-server.ntb.ch/git/projects/eeros.git </code> | -EEROS clonen:<code> git clone https://github.com/eeros-project/eeros-framework.git </code> |
-Zum develop branch wechseln: <code>cd eeros | -Zum develop branch wechseln: <code>cd eeros |
git checkout develop</code> | git checkout develop</code> |
| |
===== FPGA vom Prozessor aus laden ===== | ===== FPGA vom Prozessor aus laden ===== |
Mithilfe eines Kernel Modules (//fpga_loader.ko//) kann der sich auf dem Phytec Board befindliche Cyclone II programmiert werden. Dazu sind folgende Schritte notwendig: | Mithilfe eines Kernel Modules (//fpga_loader//) kann der sich auf dem Phytec Board befindliche Cyclone II programmiert werden. Dazu sind folgende Schritte notwendig: |
-Als erstes muss 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. | - NTB MPC5200 Daten holen mit: <code> git clone https://github.com/ntb-ch/linux-phycore-mpc5200b</code> |
| - Ins Verzeichnis //kernel/FPGA/loader// wechseln und Modul übersetzen: <code>ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- KERNELDIR=~/mpc5200/kernel/linux-3.19 make</code> |
| |
| -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. |
-Danach das Design kompilieren. | -Danach das Design kompilieren. |
-Die erzeugte .rbf Datei auf das Target kopieren, z.B. mit netcat (siehe [[http://www.microhowto.info/howto/copy_a_file_from_one_machine_to_another_using_netcat.html | How to use netcat]]) oder [[software:linux:openssh:start|OpenSSH]]. | -Die erzeugten .rbf Datei auf das Target kopieren, z.B. mit netcat (siehe [[http://www.microhowto.info/howto/copy_a_file_from_one_machine_to_another_using_netcat.html | How to use netcat]]) oder [[software:linux:openssh:start|OpenSSH]]. |
- Dann muss das Modul mit <code>insmod fpga_loader.ko</code> geladen werden. | - Auf dem Target zuerst das Loader Modul laden mit <code>insmod fpga_loader.ko</code> Ab diesem Moment steht die serielle Schnittstelle auf der PSC6 nicht mehr zur Verfügung! |
- Zum Schluss kann ein Design mit <code>dd if=myDesign.rbf of=/dev/fpga_loader bs=5M</code> auf das FPGA geladen werden. | - Jetzt kann ein Design mit <code>dd if=myDesign.rbf of=/dev/fpga_loader bs=5M</code> auf das FPGA geladen werden. |
| - Dann muss das Modul mit <code>rmmod fpga_loader.ko</code> wieder entladen werden, damit die serielle Schnittstelle wieder gebraucht werden kann. |