Как использовать многоядерный процессор для MPC5748G?
Я пытаюсь реализовать алгоритм LZMA (алгоритм сжатия / распаковки) в MPC5748G, однако мне нужен пример того, как использовать более одного ядра, так как есть два ядра по 160 МГц
Я использую LZMA для уменьшения времени перепрошивки, файл сначала сжимается, а затем отправляется в MPC ... он должен затем распаковать файл и выполнить операцию перепрошивки.
Алгоритм должен работать на отдельном ядре, потому что другое ядро выполняет другие задачи и содержит много задач. Результаты не очень хороши, и распаковка занимает слишком много времени.
как заметил @marcus: проблема не в том, чтобы написать декодер lzma, а в том, чтобы запустить его на другом ядре
Любая помощь по использованию другого ядра будет очень полезна.
1 ответ
Как насчет 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
Вам нужно обмениваться данными между ядрами? С уважением