修改多核心同步函数,取消信号量控制方式

This commit is contained in:
SEEKFREE_BUDING
2023-03-22 11:45:49 +08:00
parent 65d2b4dcd0
commit 7832046168
16 changed files with 274 additions and 62 deletions

View File

@@ -37,12 +37,14 @@
#include "Ifxstm.h"
#include "Cpu0_Main.h"
#include "Cpu/Std/IfxCpu.h"
#include "zf_driver_delay.h"
#include "zf_common_interrupt.h"
#include "zf_common_clock.h"
App_Cpu0 g_AppCpu0; // Ƶ<><C6B5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
IFX_ALIGN(4) IfxCpu_syncEvent g_cpuSyncEvent = 0; // <20>¼<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 cpu_init_finsh[IfxCpu_Id_none]; // <20><><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ϵͳƵ<CDB3><C6B5>
@@ -106,8 +108,20 @@ void clock_init (void)
//-------------------------------------------------------------------------------------------------------------------
void cpu_wait_event_ready (void)
{
while(IfxCpu_waitEvent(&g_cpuSyncEvent, 5))
uint8 i;
uint8 all_cpu_init_finsh;
// <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD>־λ<D6BE><CEBB>һ
cpu_init_finsh[IfxCpu_getCoreId()] = 1;
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
do
{
IfxCpu_emitEvent(&g_cpuSyncEvent);
}
all_cpu_init_finsh = 1;
for(i = 0; i < IfxCpu_Id_none; i++)
{
all_cpu_init_finsh *= cpu_init_finsh[i];
}
system_delay_ms(1);
}while(0 == all_cpu_init_finsh);
}