2016-06-05 15 views
1

Ich versuche, den LZMA-Algorithmus (Kompression/Dekompression-Algorithmus) im MPC5748G zu implementieren, aber ich brauche ein Beispiel dafür, wie mehr als einen Kern zu verwenden, da es 2 Kern von 160MHzWie verwende ich Multi-Core für den MPC5748G?

Ich bin mit LZMA Um die Blinkzeit zu reduzieren, wird die Datei zuerst komprimiert und dann an den MPC gesendet ... sie sollte dann die Datei dekomprimieren und den Blinkvorgang durchführen.

Der Algorithmus muss auf einem separaten Kern ausgeführt werden, da der andere Kern andere Dinge tut und eine Menge Aufgaben enthält. Die Ergebnisse sind nicht sehr gut und die Dekomprimierung benötigt zu viel Zeit.

als @Marcus kommentiert: das Problem einen lzma Decoder nicht zu schreiben, aber es auf einem anderen Kern

Jede Hilfe für die Verwendung des anderen Kerns sehr hilfreich sein zu laufen.

+0

also warte, dein Problem ist nicht, einen lzma Decoder zu schreiben, sondern um es auf einem anderen Kern laufen zu lassen? –

+0

ja genau ich habe deinen Ausdruck zu der Frage hinzugefügt –

Antwort

0

Wie wäre es mit Core_Boot (void)?

/******************************************************************************* 
Function Name : Core_Boot 
Engineer  : Lukas Zadrapa 
Date   : Apr-20-2016 
Parameters : NONE 
Modifies  : NONE 
Returns  : NONE 
Notes   : Start e200z4b and e200z2 cores 
Issues  : NONE 
*******************************************************************************/ 
void Core_Boot(void) 
{ 
    /* Enable e200z4b and e200z2 cores in RUN0-RUN3, DRUN and SAFE modes */ 
    MC_ME.CCTL[2].R = 0x00FC; /* e200z4b is active */ 
    MC_ME.CCTL[3].R = 0x00FC; /* e200z2 is active */ 

    /* Set start address for e200z4b and e200z2 cores */  
    MC_ME.CADDR[2].R = E200Z4B_BOOT_ADDRESS | 1; /* e200z4b boot address + RMC bit */ 
    MC_ME.CADDR[3].R = E200Z2_BOOT_ADDRESS | 1; /* e200z2 boot address + RMC bit */ 

    /* Mode change - re-enter the DRUN mode to start cores */ 
    MC_ME.MCTL.R = 0x30005AF0;  /* Mode & Key */ 
    MC_ME.MCTL.R = 0x3000A50F;  /* Mode & Key inverted */ 

    while(MC_ME.GS.B.S_MTRANS == 1); /* Wait for mode entry complete */ 
    while(MC_ME.GS.B.S_CURRENT_MODE != 0x3); /* Check DRUN mode entered */ 
}//Core_Boot 

Müssen Sie Daten zwischen den Kernen austauschen? Grüße