Entwicklungsumgebung für Kathrein UFS-910 HDTV Receiver

Für die Entwicklung von Programmen für den UFS-910 wird ein PC mit Linux und STLinux 2.0 benötigt. Statt eines PC verwendet man auch gerne die Installation in einer virtuellen Maschine. STMicroelectronics ist der Hersteller des im UFS-910 verwendeten ST40 Prozessors. STLinux ist das vom UFS-910 verwendete Betriebssystem.

Auswahl und Installation des Host Systems

Als Host Betriebssystem für STLinux werden RedHat und Fedora unterstütz (siehe STLinux: Linux installation on the host PC). Ich habe mich für Fedora Core 6 entschieden, da ich es auch beruflich nutze und daher kenne. Für STLinux 2.0 wird zwar nur Fedora Core 4 offiziell unterstützt, es funktioniert aber mit Core 6, wenn man ein paar Anpassungen vornimmt.

Installation Fedora Core 6 auf einem VirtualPC

VirtualPC 2007 ist eine kostenlose Virtualisierungslösung von Mircosoft für Windows XP. Die Installation von Fedora ist einfach, wenn man folgenden Anweisungen folgt:

Die DefaultDepth muss vor dem Starten von X11 auf den von VirtualPC verwendeten Wert geändert werden, da Fedora die 16-Bit Einstellung nicht automatisch erkennt. Daher muss auch die Installation im Textmodus erfolgen.

Firewall und SELinux müssen deaktiviert werden, da es sonst zu Problemen bei der Nutzung von STLinux kommen kann.

Die compat-libstdc++ Bibliothek wird später von STLinux 2.0 benötigt.

STLinux installieren

STLinux sollte jetzt unter '/opt/STM/STLinux-2.0' installiert sein. Die Installation der optionalen Source Pakete ist auf den STLinux Seiten beschrieben.

Entwicklungsumgebung einrichten

Zur Entwicklung sollte man einen speziellen Benutzer anlegen. Auf einer virtuellen Installation ist dieser dann meist der einzige. Folgende Einträge in der Datei '~/.bashrc' des Benutzers sorgen dafür, dass die STLinux Cross Compiler statt der X86 Versionen verwendet werden:

export CC="/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-gcc"
export CXX="/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-g++"

Für Pakete mit 'configure' Script muss der Aufruf später mit dem Parameter '--host=sh4-linux' erfolgen.

Jetzt sollte man im Home Verzeichnis des Benutzers ein Verzeichnis für UFS Entwicklung anlegen (z.B. 'UFS-910'). Diese Verzeichnis kann man auch auf ein vorhandenes externes NFS Share mounten.

Dateien zum UFS-910 kopieren

Um Programme später vom Entwicklungsrechner auf den UFS-910 zu kopieren, müssen beide per Netzwerk verbunden sein.

FTP

Ist auf dem UFS-910 ein FTP Server installiert, kann man folgendes kleine Script zum Hochladen verwenden (z.B. auch unter install in Makefiles):

# !/bin/bash
# to-ufs.sh: Copy a file to UFS-910 using ftp
#
# Jochen Arndt <joe127@t-online.de>

# IP address of UFS-910
UFS_IP="192.168.178.19"
# Default destination directory
DESTDIR="/data"
# Use "-v" to be verbose or "" to be not verbose
#VERBOSE=""
VERBOSE="-v"

FTP=`which ftp`
if [ "$FTP" = "" ]; then
    echo "Error: ftp program not found."
    exit 1
fi

CHMOD=""
if [ "$1" = "-c" ]; then
    CHMOD="yes"
    shift
fi

if [ "$1" = "" -o "$1" = "-h" -o "$1" = "--help" ]; then
    echo "Usage: $0 [-c] <file-name> [dest-dir [dest-file]]"
    echo " -c        = change mode to 755 after copying"
    echo " file-name = file to be copied"
    echo " dest-dir  = destination directory (/data by default)"
    echo " dest-file = file name on target (basename of file-name by default)"
    exit 0
fi
if [ ! -e "$1" ]; then
    echo "Error: File '$1' not found."
    exit 1
fi
if [ ! -f "$1" ]; then
    echo "Error: '$1' is not a file."
    exit 1
fi

# Default name on destination host
DESTNAME=`basename $1`
test -n "$2" && DESTDIR="$2"
test -n "$3" && DESTNAME="$3"

test -n "$CHMOD" && CHMOD="chmod 755 $DESTNAME"

"$FTP" "$VERBOSE" -u -n "$UFS_IP" <<-EOF
    user root kathrein
    binary
    cd $DESTDIR
    put $1 $DESTNAME
    $CHMOD
    quit
EOF
NFS

Alternativ kann auch auf dem Entwicklungsrechner ein NFS Server eingerichtet werden, der das Verzeichnis mit den Entwicklungsdateien freigibt (falls das Verzeichnis nicht selbst schon ein gemountetes NFS Share ist). Auf dem UFS kann man den NFS Share dann automatisch beim Booten einbinden (Datei '/config/nfs' anlegen):

NFS <IP>:<SHARE> false soft,udp,nolock,async,wsize=8192,rsize=8192,noatime

oder manuell per 'mount':

mkdir /tmp/nfs
mount -t nfs -o soft,udp,nolock,async,wsize=8192,rsize=8192,noatime <IP>:<SHARE> /tmp/usb/nfs

[English Home Page]English Home Page    [Startseite]Startseite