Dies ist eine alte Version des Dokuments!
Die folgende Anleitung erklärt die Installation von Emdebian Grip (Wheezy) auf den phyCORE-MPC5200B-tiny oder phyCORE-MPC5200B-IO von Phytec.
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
git clone https://github.com/torvalds/linux
git clone https://github.com/ntb-ch/linux-phycore-mpc5200b
git chekout v3.19
cp ../linux-phycore-mpc5200b/kernel/jffs2.patch .
patch -p1 < ../jffs2.patch
export ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-
cp ../linux-phycore-mpc5200b/kernel/linux-3.19/defconfig .config
make menuconfig
make menuconfig
) und der Kernel mit make uImage
übersetzt werden.
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: inf04-server.ntb.ch2). Anstatt das Root-FS und den Kernel selbst zu erstellen, können auch die in der Box „Download“ bereitgestellten Dateien verwendet werden.
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
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 ssh://username@inf05-server.ntb.ch/git/projects/eeros.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.ko) kann der sich auf dem Phytec Board befindliche Cyclone II programmiert werden. Dazu sind folgende Schritte notwendig:
insmod fpga_loader.ko
geladen werden.
dd if=myDesign.rbf of=/dev/fpga_loader bs=5M
auf das FPGA geladen werden.