µCode in Demux laden evtl. fehlerhaft?

Sklaventreiber
Terminator
Einsteiger
Einsteiger
Beiträge: 219
Registriert: Donnerstag 20. Dezember 2001, 00:00

µCode in Demux laden evtl. fehlerhaft?

Beitrag von Terminator »

Ich habe a schon einen Thread wegen meines Problems mit meiner Nokia 2*I, AVIA500 Sat laufen und habe mir mal den Quellcode angesehen, an der Stelle, wo "microcode validation failed" ausgegeben wird.

Hier mal der Code aus gen-dmx.c:

void LoaduCode (u8 * microcode)
{
unsigned short *dst=(unsigned short*)&rh (RISC);
unsigned short *src=(unsigned short*)microcode;
int words=0x800/2;

rh(RR1) |= 1 << 5; // reset RISC
udelay (10);
rh(RR1) &= ~(1 << 5);

while (words--)
{
udelay(100);
*dst++=*src++;
}

dst=(unsigned short*) &rh (RISC);
src=(unsigned short*) microcode;
words=0x800 / 2;
while (words--)
if (*dst++ != *src++)
break;
if (words>=0)
{
printk(KERN_CRIT "microcode validation failed at %x\n", 0x800 - words);
return;
}
}

Diese Funktion lädt ja den Code byteweise in den Prozessor (*dst++=*src++) und wartet jeweils 100µs (?) bis zum nächsten Byte.

Danach wird noch ein Verify gemacht (if (*dst++ != *src++) break), der ja bei mir schiefzugehen scheint.

Könnte es sein, daß die Wartezeit von 100µs bei einigen Boxen zu gering ist?

Ich würde das ja gern mal selbst ändern, nur fehlt mir sowohl eine Linux-Büchse als auch jeder Funken Erfahrung mit gcc und Co.

Oder könnte mir mal jemand testweise ein gen-dmx.o mit udelay(200) bauen?

Erwähnte ich, daß die BN2.0 im Rahmen ihrer beschränkten Möglichkeiten wunderprächtig läuft ;-)

Gruß,

Terminator
Terminator
Einsteiger
Einsteiger
Beiträge: 219
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von Terminator »

Hi!

So, den Thread kann man wohl schließen, das Problem lag an einer anderen Stelle, für einige Nokia-Boxen braucht man ein gefixtes ppcboot, das man hier findet: http://www.noernet.de/dbox2/flash/ppcboot_ram_fix.bz2

Gruß,

Terminator