Em8300Microcode

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Links)
K
 
(10 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
==Einleitung==
 
==Einleitung==
 
Das Bild einer dxr3 Karte mit dem Microcode 0x29 flackerte gelegentlich im unteren Drittel des Bildschirms. Am 11.07.2006 hat PrakashP im VDR-Portal einen Microcode gepostet, der das Flackern unterbindet. Es stellt sich jedoch die Frage, ob dieser Microcode nur Vorteile bietet, oder ob auch mit Nachteilen zu rechnen ist. Aus diesem Grund befindet sich hier eine Tabelle mit den bisherigen Beobachtungen.
 
Das Bild einer dxr3 Karte mit dem Microcode 0x29 flackerte gelegentlich im unteren Drittel des Bildschirms. Am 11.07.2006 hat PrakashP im VDR-Portal einen Microcode gepostet, der das Flackern unterbindet. Es stellt sich jedoch die Frage, ob dieser Microcode nur Vorteile bietet, oder ob auch mit Nachteilen zu rechnen ist. Aus diesem Grund befindet sich hier eine Tabelle mit den bisherigen Beobachtungen.
 +
 +
==Microcode und Linux-Treiber==
 +
Bei der DXR3 wird der Microcode von dem Linux-Treiber (em8300.ko) beim Modulstart aus der Datei '''/usr/lib/hotplug/firmware/em8300.bin''' in den Realmagic-Chip geladen.
 +
Die aktuelle Version des Microcodes wird ausgegeben und kann z.B. mit dem Befehl ''dmesg'' ausgegeben werden und sieht wie folgt aus:
 +
<pre>
 +
linvdr:~# dmesg
 +
[..]
 +
[  27.613778] em8300: EM8300 8300 (rev 1) bus: 2, devfn: 32, irq: 18, memory: 0x40000000.
 +
[  27.613989] em8300: mapped-memory at 0xd0d00000
 +
[  27.614292] em8300: using MTRR
 +
[  27.614625] em8300_main.o: Chip revision: 2
 +
[  27.638338] adv717x.o: ADV7175A chip detected
 +
[  27.640002] adv717x.o: Configuring for PAL 60
 +
[  35.600301] adv717x.o: Configuring for PAL
 +
[  35.813157] em8300_audio.o: Analog audio enabled
 +
[  35.856481] em8300: Microcode version 0x29 loaded
 +
[  35.899781] adv717x.o: Configuring for PAL
 +
[  35.933605] em8300_audio.o: Analog audio enabled
 +
</pre>
 +
In diesem Fall wurde der Microcode in der Version 0x29 geladen. Wenn die Microcode-Datei nicht vorhanden ist, dann wird übrigens nur die erste Hälfte der Meldungen ausgegeben und die DXR3 gibt kein Bild aus ( [27.xxxxxx] und nicht [35.xxxxxx] ).
 +
  
 
==Microcodes beschaffen==
 
==Microcodes beschaffen==
 
Im VDR-Portal wurden einige Microcodes gepostet. Alternativ können mit dem Skript getDxr3Microcode.sh die Microcodes leicht erstellt werden.
 
Im VDR-Portal wurden einige Microcodes gepostet. Alternativ können mit dem Skript getDxr3Microcode.sh die Microcodes leicht erstellt werden.
  
Was macht das Skript?
+
===Was macht das Skript?===
  
 
1. download der Tools von dxr3.sourceforge.net
 
1. download der Tools von dxr3.sourceforge.net
Zeile 11: Zeile 32:
 
2. download der MS-dxr3-Treiber von SigmaDesigns
 
2. download der MS-dxr3-Treiber von SigmaDesigns
  
3. extrahieren des Microcodes aus dem SigmaDesigns Treiber
+
3. extrahieren des Microcodes aus dem SigmaDesigns Treiber nach MICROCODEPATH
  
Im Kopf des Skriptes kann folgendes eingestellt werden:
+
===Im Kopf des Skriptes kann folgendes eingestellt werden:===
 +
{| class="prettytable"
 +
!Variable||Beschreibung || Standardwert
 +
|-
 +
|MICROCODEPATH||Pfad in dem die Microcodes abgelegt werden||/usr/lib/hotplug/firmware
 +
|-
 +
|TMPPATH||tmp-Pfad für die Downloads||$(pwd)/dxr3MCtmp (aktuelles Verzeichnis+/dxr3MCtmp)
 +
|-
 +
|BUILD||Treiber-Release||2_41
 +
|}
  
1. Pfad in dem die Microcodes abgelegt werden
+
===Ergebnis des Skriptes===
 +
Das Skript ''getDxr3Microcode.sh'' lädt den Microcode herunter und extrahiert ihn.
 +
Die neuen Microcodes werden z.B. bei den Standardeinstellungen '''BUILD=2_41''' im Verzeichnis '''/usr/lib/hotplug/firmware''' in folgenden Dateien abgelegt:
 +
 
 +
{| class="prettytable"
 +
!Dateiname||Microcode Nr.
 +
|-
 +
|2_41microcode0.bin||0
 +
|-
 +
|2_41microcode1.bin||1
 +
|-
 +
|2_41microcode2.bin||2
 +
|}
  
2. tmp-Pfad für die Downloads
+
Es wurden also gleich mehrere Unter-Versionen (Nr.) des Microcodes extrahiert aus einem Treiber-Archiv. Die Versionsunterschiede sind weiter Unten erklärt.
  
3. Treiber-Release
+
Zu diesem Zeitpunkt ist noch kein neuer Microcode aktiv, dieser muss manuell wie im Folgenden beschrieben aktiviert werden.
  
Hier das vorläufige Skript
+
===Hier das vorläufige Skript===
  
 
{{Box Datei | getDxr3Microcode.sh |
 
{{Box Datei | getDxr3Microcode.sh |
Zeile 115: Zeile 157:
 
|-
 
|-
 
|HP2_41w1.zip ('''1''')
 
|HP2_41w1.zip ('''1''')
|0x2a
+
|0x2a / 0x2d
 
|1
 
|1
 
|7170
 
|7170
|ja
+
|teilweise
 
|7170:(B):++, (A) ++, (D) ++
 
|7170:(B):++, (A) ++, (D) ++
 
|
 
|
Zeile 133: Zeile 175:
 
|0x2d
 
|0x2d
 
|0
 
|0
|7170
+
|7170/7175A
 
|ja
 
|ja
 
|(B): ++
 
|(B): ++
Zeile 149: Zeile 191:
 
|0x2d
 
|0x2d
 
|2
 
|2
|7170
+
|7170/7175A
 
|ja
 
|ja
 
|adv717x(B):++
 
|adv717x(B):++
Zeile 157: Zeile 199:
 
|0x29
 
|0x29
 
|universal
 
|universal
|?
+
|?/7175A
 
|ja
 
|ja
 
|?
 
|?
|?
+
|7175A: Instabil bei OSD und schlechtem Datenstrom
 
|}
 
|}
Laut "cmp" (file compare) sind die aus HP2_41w1.zip und HP2_41k1.zip extrahierten Microcodes indentisch!<br>
+
Laut "cmp" (file compare) sind die aus HP2_41w1.zip und HP2_41k1.zip extrahierten Microcodes identisch!<br>
 
Warum sich der Microcode einmal mit 0x2a und dann mit 0x2d meldet ist noch nicht geklärt.<br>
 
Warum sich der Microcode einmal mit 0x2a und dann mit 0x2d meldet ist noch nicht geklärt.<br>
 +
EDIT: Bei meinem ADV7175 meldet sich der MC mit 0x2d obwohl laut obigem Bericht es 0x2a sein sollte<br>
 
Microcode Version und Video Encoder lassen sich auf dem VDR mit ''cat /proc/em8300/*'' ermitteln<br><br>
 
Microcode Version und Video Encoder lassen sich auf dem VDR mit ''cat /proc/em8300/*'' ermitteln<br><br>
  
Zeile 178: Zeile 221:
  
 
(D) - Ton-Synchronität
 
(D) - Ton-Synchronität
 +
 +
==Microcode-Empfehlung==
 +
{| border="1"
 +
!EM8300-Version
 +
!TV-Encoder
 +
!Microcode Version
 +
!Microcode Nr.
 +
!Stärken
 +
!Schwächen
 +
|-
 +
|EM8300 Rev.A
 +
|ADV7175A
 +
|0x2d
 +
|1
 +
|stabil, Bild und Ton ok <BR>
 +
- unempfindlich gegenüber schlechtem Eingabedatenstrom <BR>
 +
- OSD stabil
 +
|
 +
|}
 +
 +
==Aktivierung eines neuen Microcodes==
 +
Nach der Auswahl des passenden Microcodes für die jeweilige Karte und Situation, muss dieser manuell aktiviert werden.
 +
Da der Treiber seinen Microcode für die Hardware immer aus der Datei '''/usr/lib/hotplug/firmware/em8300.bin''' geladen, welche im Normalfall die universale Version 0x29 enthält.
 +
 +
===Beispiel: Aktivieren von Microcode Nr. 2===
 +
<pre>
 +
# Wegsichern des Originals
 +
mv /usr/lib/hotplug/firmware/em8300.bin /usr/lib/hotplug/firmware/em8300.bin_original
 +
# Aktivierung von Nr.2
 +
ln -s /usr/lib/hotplug/firmware/2_41microcode2.bin /usr/lib/hotplug/firmware/em8300.bin
 +
</pre>
 +
 +
===Zurückstellen auf Auslieferungszustand===
 +
Da der originale Microcode oben gesichert wurde, kann dieser wie folgt aktiviert werden:
 +
<pre>
 +
ln -s /usr/lib/hotplug/firmware/em8300.bin_original /usr/lib/hotplug/firmware/em8300.bin
 +
</pre>
  
 
==Links==
 
==Links==

Aktuelle Version vom 18. August 2013, 14:21 Uhr

Inhaltsverzeichnis

[Bearbeiten] Einleitung

Das Bild einer dxr3 Karte mit dem Microcode 0x29 flackerte gelegentlich im unteren Drittel des Bildschirms. Am 11.07.2006 hat PrakashP im VDR-Portal einen Microcode gepostet, der das Flackern unterbindet. Es stellt sich jedoch die Frage, ob dieser Microcode nur Vorteile bietet, oder ob auch mit Nachteilen zu rechnen ist. Aus diesem Grund befindet sich hier eine Tabelle mit den bisherigen Beobachtungen.

[Bearbeiten] Microcode und Linux-Treiber

Bei der DXR3 wird der Microcode von dem Linux-Treiber (em8300.ko) beim Modulstart aus der Datei /usr/lib/hotplug/firmware/em8300.bin in den Realmagic-Chip geladen. Die aktuelle Version des Microcodes wird ausgegeben und kann z.B. mit dem Befehl dmesg ausgegeben werden und sieht wie folgt aus:

linvdr:~# dmesg
[..]
[   27.613778] em8300: EM8300 8300 (rev 1) bus: 2, devfn: 32, irq: 18, memory: 0x40000000.
[   27.613989] em8300: mapped-memory at 0xd0d00000
[   27.614292] em8300: using MTRR
[   27.614625] em8300_main.o: Chip revision: 2
[   27.638338] adv717x.o: ADV7175A chip detected
[   27.640002] adv717x.o: Configuring for PAL 60
[   35.600301] adv717x.o: Configuring for PAL
[   35.813157] em8300_audio.o: Analog audio enabled
[   35.856481] em8300: Microcode version 0x29 loaded
[   35.899781] adv717x.o: Configuring for PAL
[   35.933605] em8300_audio.o: Analog audio enabled

In diesem Fall wurde der Microcode in der Version 0x29 geladen. Wenn die Microcode-Datei nicht vorhanden ist, dann wird übrigens nur die erste Hälfte der Meldungen ausgegeben und die DXR3 gibt kein Bild aus ( [27.xxxxxx] und nicht [35.xxxxxx] ).


[Bearbeiten] Microcodes beschaffen

Im VDR-Portal wurden einige Microcodes gepostet. Alternativ können mit dem Skript getDxr3Microcode.sh die Microcodes leicht erstellt werden.

[Bearbeiten] Was macht das Skript?

1. download der Tools von dxr3.sourceforge.net

2. download der MS-dxr3-Treiber von SigmaDesigns

3. extrahieren des Microcodes aus dem SigmaDesigns Treiber nach MICROCODEPATH

[Bearbeiten] Im Kopf des Skriptes kann folgendes eingestellt werden:

Variable Beschreibung Standardwert
MICROCODEPATH Pfad in dem die Microcodes abgelegt werden /usr/lib/hotplug/firmware
TMPPATH tmp-Pfad für die Downloads $(pwd)/dxr3MCtmp (aktuelles Verzeichnis+/dxr3MCtmp)
BUILD Treiber-Release 2_41

[Bearbeiten] Ergebnis des Skriptes

Das Skript getDxr3Microcode.sh lädt den Microcode herunter und extrahiert ihn. Die neuen Microcodes werden z.B. bei den Standardeinstellungen BUILD=2_41 im Verzeichnis /usr/lib/hotplug/firmware in folgenden Dateien abgelegt:

Dateiname Microcode Nr.
2_41microcode0.bin 0
2_41microcode1.bin 1
2_41microcode2.bin 2

Es wurden also gleich mehrere Unter-Versionen (Nr.) des Microcodes extrahiert aus einem Treiber-Archiv. Die Versionsunterschiede sind weiter Unten erklärt.

Zu diesem Zeitpunkt ist noch kein neuer Microcode aktiv, dieser muss manuell wie im Folgenden beschrieben aktiviert werden.

[Bearbeiten] Hier das vorläufige Skript

Datei
getDxr3Microcode.sh
#!/bin/bash

# This skript downloads microcode_extract.pl and msexpand.pl from dxr3.cvs.sourceforge.net
# and the MS drivers for the HollywoodPlus from ftp.sigmadesigns.com
# The microcodes will be stored at MICROCODEPATH

# A tmp path for the downloaded files
# Uncommed the path wich fits your needs
TMPPATH=$(pwd)/dxr3MCtmp
#TMPPATH=~/tmp/dxr3MCtmp

# Path where the microcodes will be stored
# Uncommed the path wich fits your needs

#Path for linvdr:
MICROCODEPATH=/usr/lib/hotplug/firmware
#MICROCODEPATH=~/tmp/microcode

#You can find the Build Version here: ftp://ftp.sigmadesigns.com/HollywoodPlus/readme.txt
# and here ftp://ftp.sigmadesigns.com/HollywoodPlus/
BUILD=2_41

# This variables should be ok
MC_extractRevision=1.4.4.1
msexpandRev=1.3
dxr3_PathRev=EM8300-0-15-3-ALSA

# Now lets go !!
mkdir -p $TMPPATH
cd $TMPPATH
wget http://dxr3.cvs.sourceforge.net/*checkout*/dxr3/em8300/scripts/microcode_extract.pl?revision=$MC_extractRevision&pathrev=$dxr3_PathRev &

wget http://dxr3.cvs.sourceforge.net/*checkout*/dxr3/em8300/scripts/msexpand.pl?revision=$msexpandRev&pathrev=pathrev=$dxr3_PathRev &


wget ftp://ftp.sigmadesigns.com/HollywoodPlus/HP${BUILD}k1.zip
unzip HP${BUILD}k1.zip

echo ""
echo "Waiting 20 seconds, ...."
echo ""
sleep 20

mv microcode_extract.pl?revision=$MC_extractRevision microcode_extract.pl
chmod 775 microcode_extract.pl

mv msexpand.pl?revision=$msexpandRev msexpand.pl
chmod 775 msexpand.pl

if [ ! -d $MICROCODEPATH ]; then
        mkdir -p $MICROCODEPATH;
fi

if [ -s rmquasar.sy_ ]; then
        $(pwd)/msexpand.pl rmquasar.sy_;
else
        $(pwd)/msexpand.pl rmquasar.vx_;
fi

if [ -s $(pwd)/rmquasar.sys ]; then
        $(pwd)/microcode_extract.pl rmquasar.sys $MICROCODEPATH ${BUILD}microcode
else
        $(pwd)/microcode_extract.pl rmquasar.vxd $MICROCODEPATH ${BUILD}microcode
fi
echo ""
echo "You can find the microcodes at $MICROCODEPATH"
echo "If you do not want to download other microcodes, you can delete the directory $TMPPATH now."[/code]
# end of skript


[Bearbeiten] Übersicht der Microcodes

Treiber Release    Microcode Version Microcode Nr. adv717x kompatibel bt865 kompatibel Stärken Schwächen
HP2_41w1.zip (1) 0x2a 0 7170 ja (B) ++ 7170: stotterndes Umschalten (2)
HP2_41w1.zip (1) 0x2a / 0x2d 1 7170 teilweise 7170:(B):++, (A) ++, (D) ++
HP2_41w1.zip (1) 0x2a 2 7170 ja (B): ++ 7170(A) -
HP2_41k1.zip 0x2d 0 7170/7175A ja (B): ++ bt865(A): o, (D): o
HP2_41k1.zip 0x2d 1 7170 teilweise adv717x(B): ++
HP2_41k1.zip 0x2d 2 7170/7175A ja adv717x(B):++ bt865(A): o,bt865(D): o
em8300-0.15.3 0x29 universal ?/7175A ja ? 7175A: Instabil bei OSD und schlechtem Datenstrom

Laut "cmp" (file compare) sind die aus HP2_41w1.zip und HP2_41k1.zip extrahierten Microcodes identisch!
Warum sich der Microcode einmal mit 0x2a und dann mit 0x2d meldet ist noch nicht geklärt.
EDIT: Bei meinem ADV7175 meldet sich der MC mit 0x2d obwohl laut obigem Bericht es 0x2a sein sollte
Microcode Version und Video Encoder lassen sich auf dem VDR mit cat /proc/em8300/* ermitteln

Abkürzungen:

(1): download der extrahierten Microcodes in diesem Beitrag
(2): Bild erscheint und verschwindet dann kurzzeitig noch einmal

(A) - Umschaltverhalten

(B) - Bildzittern behoben

(C) - AC3

(D) - Ton-Synchronität

[Bearbeiten] Microcode-Empfehlung

EM8300-Version TV-Encoder Microcode Version Microcode Nr. Stärken Schwächen
EM8300 Rev.A ADV7175A 0x2d 1 stabil, Bild und Ton ok

- unempfindlich gegenüber schlechtem Eingabedatenstrom
- OSD stabil

[Bearbeiten] Aktivierung eines neuen Microcodes

Nach der Auswahl des passenden Microcodes für die jeweilige Karte und Situation, muss dieser manuell aktiviert werden. Da der Treiber seinen Microcode für die Hardware immer aus der Datei /usr/lib/hotplug/firmware/em8300.bin geladen, welche im Normalfall die universale Version 0x29 enthält.

[Bearbeiten] Beispiel: Aktivieren von Microcode Nr. 2

# Wegsichern des Originals
mv /usr/lib/hotplug/firmware/em8300.bin /usr/lib/hotplug/firmware/em8300.bin_original
# Aktivierung von Nr.2
ln -s /usr/lib/hotplug/firmware/2_41microcode2.bin /usr/lib/hotplug/firmware/em8300.bin

[Bearbeiten] Zurückstellen auf Auslieferungszustand

Da der originale Microcode oben gesichert wurde, kann dieser wie folgt aktiviert werden:

ln -s /usr/lib/hotplug/firmware/em8300.bin_original /usr/lib/hotplug/firmware/em8300.bin

[Bearbeiten] Links

  1. Microcode aus MS-Treibern erzeugen
  2. Perlskripte dafür
  3. MS-Treiber Versionen
In anderen Sprachen