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.
https://github.com/ntb-ch/linux-phycore-mpc5200b.git
geholt werden.
Wir benutzen Multistrap für das Root-Filesystem gemäss Anleitung: Root-Filesystem erstellen.
[General] arch=powerpc directory=/opt/multistrap/ cleanup=true retainsources= noauth=true unpack=true bootstrap=Grip aptsources=Grip Debian [Grip] packages=ifupdown procps iputils-ping module-init-tools openssh-server nano source=http://www.emdebian.org/grip/ keyring=emdebian-archive-keyring suite=wheezy-grip [Debian] packages= source=http://ftp.ch.debian.org/debian/ keyring=debian-archive-keyring suite=wheezy
[emdebian-grip-ppc] description=Emdebian Grip Wheezy (PowerPC) aliases=emdebian-ppc type=directory directory=/opt/multistrap root-groups=root users=$USER groups=sbuild
#/etc/fstab for phyCORE-MPC5200B /dev/root / jffs2 defaults 0 0 proc /proc proc defaults 0 0 devtmpfs /dev devtmpfs defaults,mode=0755,nosuid 0 0 devpts /dev/pts devpts defaults 0 0 none /tmp tmpfs defaults,mode=1777,uid=0,gid=0 0 0 none /sys sysfs defaults 0 0 none /var/log tmpfs defaults,mode=0755,uid=0,gid=0 0 0 none /var/run tmpfs defaults,mode=0755,uid=0,gid=0 0 0 none /var/lock tmpfs defaults,mode=0755,uid=0,gid=0 0 0
/opt/multistrap/etc/inittab
#1:2345:respawn:/sbin/getty 38400 tty1 #2:23:respawn:/sbin/getty 38400 tty2 #3:23:respawn:/sbin/getty 38400 tty3 #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6
PSC0:2345:respawn:/sbin/getty -L ttyPSC0 115200 vt100
/opt/multistrap/etc/securetty
folgende Zeile zu finden sein: ttyPSC0
# name type mode uid gid major minor start inc count /dev/console c 600 0 0 5 1 0 0 - /dev/kmsg c 660 0 0 1 11 0 0 - #/dev/log s 666 0 0 - - - - - /dev/loop b 640 0 0 7 0 0 1 8 /dev/mem c 640 0 15 1 1 0 0 - /dev/null c 666 0 0 1 3 0 0 - /dev/pts d 755 0 0 - - - - - /dev/random c 666 0 0 1 8 0 0 - /dev/tty c 666 0 0 5 0 0 0 - /dev/tty c 666 0 0 4 0 0 1 6 /dev/urandom c 666 0 0 1 9 0 0 - /dev/zero c 666 0 0 1 5 0 0 - /dev/mtdblock2 b 666 0 6 31 2 0 0 - /dev/ttyPSC0 c 644 0 0 204 148 0 0 -
# mkfs.jffs2 -n -e 0x40000 -p 0x40000 -b -d /opt/multistrap -D device_table -o emdebian-wheezy-grip-phycore-mpc5200b.jffs2
Siehe Anleitung für v3.19.
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
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.
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 |
uboot>
uboot> printenv
uboot> setenv ipaddr 146.136.39.53
uboot> setenv netmask 255.255.252.0
uboot> setenv serverip 146.136.36.50
uboot> setenv gateway 146.136.36.1
uboot> setenv ethaddr 50:2D:F4:03:E3:89
uboot> protect off 0xfe040000 +0x2c0000 uboot> erase 0xfe040000 +0x2c0000
uboot> tftp 0x400000 uImage
uboot> cp.b 0x400000 0xfe040000 $(filesize)
uboot> protect off 0xfe300000 +0x1c00000 uboot> erase 0xfe300000 +0x1c00000
uboot> tftp 0x400000 rfs.jffs2
uboot> cp.b 0x400000 0xfe300000 $(filesize)
uboot> protect off 0xfff80000 +0x40000 uboot> erase 0xfff80000 +0x40000
uboot> tftp 0x400000 oftree-ntbc32.dtb
uboot> cp.b 0x400000 0xfff80000 $(filesize)
setenv bootargs console=ttyPSC0,115200 rw root=/dev/mtdblock2 rw rootfstype=jffs2
setenv bcmd_flash bootm 0xfe040000 - 0xfff80000
saveenv
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).
sudo apt-get install git make cmake
git clone https://github.com/eeros-project/eeros-framework.git
cd eeros git checkout develop
mkdir build-mpc5200
# cd mkdir build-mpc5200 nano 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)
cmake .. -DCMAKE_TOOLCHAIN_FILE=mpc5200.cmake make
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
Auf dem Entwicklungsrechner:
nc -l -p 3333 < /src/libeeros.so
Auf dem Target:
nc serverip 3333 > /usr/lib/libeeros.so ldconfig
Mithilfe eines Kernel Modules (fpga_loader) kann der sich auf dem Phytec Board befindliche Cyclone II programmiert werden. Dazu sind folgende Schritte notwendig:
git clone https://github.com/ntb-ch/linux-phycore-mpc5200b
ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- KERNELDIR=~/mpc5200/kernel/linux-3.19 make
insmod fpga_loader.ko
Ab diesem Moment steht die serielle Schnittstelle auf der PSC6 nicht mehr zur Verfügung!
dd if=myDesign.rbf of=/dev/fpga_loader bs=5M
auf das FPGA geladen werden.
rmmod fpga_loader.ko
wieder entladen werden, damit die serielle Schnittstelle wieder gebraucht werden kann.