FFTC当中,经常出现下面这段代码,我不是很懂这段代码,可不可以解释下这段代码的含义,或者这段代码的目的。
while ((CSL_semAcquireDirect (FFTC_APP_SEM)) == 0);
Fftc_osalBeginMemAccess ((void *)&bIsCoreTestDone, sizeof(UInt32));
bIsCoreTestDone ++;
Fftc_osalEndMemAccess ((void *)&bIsCoreTestDone, sizeof(UInt32));
CSL_semReleaseSemaphore (FFTC_APP_SEM);
Fftc_osalLog ("Waiting for other cores to finish … \n");
do {
Fftc_osalBeginMemAccess ((void *)&bIsCoreTestDone, sizeof(UInt32));
Fftc_osalBeginMemAccess ((void *)&bIsSysInitDone, sizeof(UInt32));
} while (bIsCoreTestDone < bIsSysInitDone);
King Wang1:
我来猜一下,前面一段程序是为了防止多个核同时去操作bIsCoreTestDone 变量,这样可能会导致bIsCoreTestDone 变量少加的错误。
后面是一个同步过程,保证能读到bIsCoreTestDone 变量最新的信息,因为该变量可能被别的核改变。
TI中文支持网