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:
- Download des Fedora Core 6 ISO Image FC-6-i386-DVD.iso
- Anlegen einer neuen virtuellen Maschine in Virtual PC 2007
- Name z.B. 'Fedora Core 6'
- 256 MB RAM
- 1. Festplatte: 16 GB (5 GB reichen auch, aber so hat man genug Reserve)
- Netzwerk: Netzwerkkarte des PC mit Internetanbindung
- Keine Hardware Virtualisierung (Fedora Installation hing bei meinem Athlon XP2)
- Maschine starten
- Menü 'CD - ISO Abbild erfassen...' und FC Image angeben
- Maschine neu starten (Menü 'Aktion - Zurücksetzen')
- Am Fedora Boot Prompt 'linux text' eingeben
- Paketauswahl nach Belieben, Entwicklung sollte aber dabei sein, Installation abschließen
- Nach der Installation Fedora im Textmodus anpassen
- In der Datei /boot/grub/menu.lst 'clock=pit' am Ende der 'kernel' Zeile hinzufügen
- In der Datei /etc/X11/xorg.conf den Wert für 'DefaultDepth' von 24 auf 16 ändern
- Optional in /etc/fstab einen Eintrag für CD hinzufügen: '/dev/cdrom /media iso9660 ro,user 0 0'
- Fedora anpassen
- Grafische Benutzeroberfläche starten ('startx')
- Unter 'System - Administration - Security Level and Firewall' Firewall und SELinux deaktivieren
- compat-libstdc++-33-3.2.3-61.i386.rpm installieren (über 'Application - Add/Remove Software - List')
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
- Download des STLinux 2.0 ISO Images release-2.0-sh4-install.iso
- Optional Download des STLinux 2.0 Source ISO Images release-2.0-sh4-source.iso
- ST ISO Image als CD Abbild erfassen (bzw. CD einlegen)
- Falls nicht im Textmodus, eine Shell öffnen (Applications - Accessories - Terminal)
- Falls nicht root, mit 'su' wechseln
- Falls Image nicht automatisch gemounted wird, 'mount /media' eingeben
- Auf Installationsverzeichnis der CD wechseln: 'cd /media/ST_Linux_2.0_RPMS/ST_Installer'
- Installation starten: 'sh install -a'
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