integrate and clean

This commit is contained in:
2026-03-09 16:43:04 +01:00
parent cde38d3f75
commit cc484d9458
10 changed files with 702 additions and 784 deletions

89
main.c
View File

@@ -34,6 +34,7 @@
#include "Utils.h"
#include "Draw.h"
#include "Test_Common.h"
#include "Test_Address.h"
#include "Test_Data.h"
#include "Test_Data_Huge.h"
@@ -78,7 +79,7 @@ const char szHelp[] =
" -n, --num <N> Number of loops (default: 1).\n"
" -l, --log <file> Log file path.\n"
" --silent Silent mode (suppress normal output).\n"
" -t, --tsv <file> TSV output file path.\n"
/*" -t, --tsv <file> TSV output file path.\n"*/
"\n"
"Verbosity:\n"
" -v Increase log level by one step (repeatable).\n"
@@ -99,8 +100,10 @@ const char szHelp[] =
" --tmu1-ram <MB> Force TMU1 RAM size: -1=auto, 1..4=MB.\n"
"\n"
"Examples:\n"
" ./v2memtest --tmu0 --address -vv --tsv out.tsv\n"
" ./v2memtest --tmu0 --tmu1 --data --tmu0-ram 2 --tmu1-ram -1 -n 10\n";
/*" ./v2-tmu-memtester --tmu0 --address -v --tsv out.tsv\n"*/
" ./v2-tmu-memtester --tmu0 --address -v\n"
" ./v2-tmu-memtester --tmu0-ram 2 --tmu1-ram -1 -n 10\n"
" ./v2-tmu-memtester --tmu1 --data-huge\n";
def_sOptions sOptions = {
.eLogLevel = E_LOGLEVEL__INFO,
@@ -123,7 +126,7 @@ static struct option long_args[] = {
{"num", required_argument, NULL, 'n'},
{"log", required_argument, NULL, 'l'},
{"silent", no_argument, &sOptions.bSilent, true},
{"tsv", required_argument, NULL, 't'},
/*{"tsv", required_argument, NULL, 't'},*/
{"tmu0", no_argument, &sOptions.bTestTMU0, true},
{"tmu1", no_argument, &sOptions.bTestTMU1, true},
{"address", no_argument, &sOptions.bTestTMUAddress, true},
@@ -141,6 +144,8 @@ ar_dFaultScores[NB_FAULT_SOURCE];
def_sFaultSourceScoreRec
ar_dFaultScores_sorted[NB_FAULT_SOURCE];
#define _DEF_TEST_TIME_PER_MB_S 5
int main(int argc, char **argv)
{
int Status = 0;
@@ -153,7 +158,6 @@ int main(int argc, char **argv)
while((opt=getopt_long(argc,argv,"hvn:t:l:",long_args,&option_index)) != -1)
{
//printf("Parse Arg %d, %d\n",option_index,opt);
switch(opt)
{
/* other long options ? */
@@ -198,11 +202,11 @@ int main(int argc, char **argv)
case 'l':
strncpy(sOptions.szLogFileName, optarg, 2048);
break;
/*
case 't':
strncpy(sOptions.szTSVFile, optarg, 2048);
break;
*/
case 'h':
puts(szHelp);
bQuit = true;
@@ -338,7 +342,7 @@ int main(int argc, char **argv)
}
if(bTestTMU1 && !bTestTMU0)
{
logW("/!\\ testing TMU1 without TMU0 is not recommended !\n\n");
logW("/!\\ make sure you did test TMU0 BEFORE TMU1.\n\n");
}
ISET(sstregs->lfbMode, SST_LFB_RGBALANES_ARGB | SST_LFB_READFRONTBUFFER);
@@ -352,13 +356,20 @@ int main(int argc, char **argv)
if((tmu == 0) && !bTestTMU0) continue;
if((tmu == 1) && !bTestTMU1) continue;
logI("## Testing Board %d, TMU %d, %ldMB \n",boardNum,tmu,(unsigned long)devInfo.tmuMemSize[tmu]);
logI("## testing Board %d, TMU %d, %ldMB \n",boardNum,tmu,(unsigned long)devInfo.tmuMemSize[tmu]);
if(sOptions.bTestTMUAddress)
{
unsigned long long err=0;
logI("### pre-heating\n");
HeatMemAndTMU(&devInfo,sst,sstregs,tmu,0x000000);
logI("### address & control lines test - cumulated\n");
for(int j=0;j<100;j++)
clearScreen(sstregs,0x00000000,256,256);
clock_t test_begin = clock();
do
{
err = RenderTestAddress(&devInfo,
sst,
@@ -367,9 +378,13 @@ int main(int argc, char **argv)
devInfo.tmuMemSize[tmu],
ar_dFaultScores);
ullNbErrorAll += err;
logI( err ? "E" : "-");
logI( err ? "E" : ".");
fflush(stdout);
}
while(!err
&& (((double)(clock() - test_begin)/CLOCKS_PER_SEC)
< (devInfo.tmuMemSize[tmu]*_DEF_TEST_TIME_PER_MB_S)));
logI("\n");
if(err)
{
@@ -382,8 +397,15 @@ int main(int argc, char **argv)
if(sOptions.bTestTMUData)
{
unsigned long long err=0;
logI("### pre-heating\n");
HeatMemAndTMU(&devInfo,sst,sstregs,tmu,0x000000);
logI("### data test - single bit move\n");
for(int j=0;j<100;j++)
clearScreen(sstregs,0x00000000,256,256);
clock_t test_begin = clock();
do
{
err = test_TMU_datalines(&devInfo,
sst,
@@ -393,9 +415,13 @@ int main(int argc, char **argv)
devInfo.tmuMemSize[tmu],
ar_dFaultScores);
ullNbErrorAll += err;
logI( err ? "E" : "-");
logI( err ? "E" : ".");
fflush(stdout);
}
while(!err &&
(((double)(clock() - test_begin)/CLOCKS_PER_SEC)
< (devInfo.tmuMemSize[tmu]*_DEF_TEST_TIME_PER_MB_S)));
logI("\n");
if(err)
{
@@ -403,9 +429,15 @@ int main(int argc, char **argv)
logW("skiping next tests.\n\n");
continue;
}
err=0;
logI("### pre-heating\n");
HeatMemAndTMU(&devInfo,sst,sstregs,tmu,0x000000);
logI("### data test - random patterns\n");
for(int j=0;j<100;j++)
clearScreen(sstregs,0x00000000,256,256);
test_begin = clock();
do
{
err = test_TMU_datalines(&devInfo,
sst,
@@ -415,9 +447,13 @@ int main(int argc, char **argv)
devInfo.tmuMemSize[tmu],
ar_dFaultScores);
ullNbErrorAll += err;
logI( err ? "E" : "-");
logI( err ? "E" : ".");
fflush(stdout);
}
while(!err &&
(((double)(clock() - test_begin)/CLOCKS_PER_SEC)
< (devInfo.tmuMemSize[tmu]*_DEF_TEST_TIME_PER_MB_S)));
logI("\n");
if(err)
{
@@ -430,8 +466,15 @@ int main(int argc, char **argv)
if(sOptions.bTestTMUDataHuge)
{
unsigned long long err=0;
logI("### pre-heating\n");
HeatMemAndTMU(&devInfo,sst,sstregs,tmu,0x000000);
logI("### data test - huge data set\n");
for(int j=0;j<1;j++)
clearScreen(sstregs,0x00000000,256,256);
clock_t test_begin = clock();
do
{
err = test_TMU_datalines_Huge( &devInfo,
sst,
@@ -440,15 +483,19 @@ int main(int argc, char **argv)
devInfo.tmuMemSize[tmu],
ar_dFaultScores);
ullNbErrorAll += err;
logI( err ? "E" : "-");
logI( err ? "E" : ".");
fflush(stdout);
}
while(!err &&
(((double)(clock() - test_begin)/CLOCKS_PER_SEC)
< (devInfo.tmuMemSize[tmu]*_DEF_TEST_TIME_PER_MB_S)));
logI("\n");
if(err)
{
logW("error detected on data line (huge data set) !\n");
/*logW("skiping next tests.\n\n");
continue;*/
logW("skiping next tests.\n\n");
continue;
}
}
logI("\n");
@@ -458,7 +505,7 @@ int main(int argc, char **argv)
FaultSource_getSorted(ar_dFaultScores_sorted,ar_dFaultScores);
FaultSource_display(ar_dFaultScores_sorted);
logI("Test Complete, ullNbErrorAll = %lld\n",ullNbErrorAll);
logI("test completed, ullNbErrorAll = %lld\n",ullNbErrorAll);
logI("\n");
if(ullNbErrorAll)
logI(szKool);