From 1dc1ac83d84691eef3547852e922b5e12c63d9ba Mon Sep 17 00:00:00 2001 From: Andrea Enrici <andrea.enrici@nokia.com> Date: Thu, 16 Apr 2015 14:07:14 +0000 Subject: [PATCH] completed the correction of errors. It compiles. But CP routines have been commented. --- .../ctranslator/AdaifOperationMEC.java | 4 +- src/tmltranslator/ctranslator/CwaMEC.java | 3 +- src/tmltranslator/ctranslator/CwlMEC.java | 3 +- src/tmltranslator/ctranslator/CwmMEC.java | 3 +- src/tmltranslator/ctranslator/CwpMEC.java | 3 +- src/tmltranslator/ctranslator/FftMEC.java | 3 +- .../ctranslator/IntlOperationMEC.java | 7 ++-- .../ctranslator/MappOperationMEC.java | 9 ++-- src/tmltranslator/ctranslator/SumMEC.java | 3 +- .../ctranslator/TMLCCodeGeneration.java | 42 +++++++++++++------ 10 files changed, 53 insertions(+), 27 deletions(-) diff --git a/src/tmltranslator/ctranslator/AdaifOperationMEC.java b/src/tmltranslator/ctranslator/AdaifOperationMEC.java index 6c408ee3a7..de3433c2e3 100644 --- a/src/tmltranslator/ctranslator/AdaifOperationMEC.java +++ b/src/tmltranslator/ctranslator/AdaifOperationMEC.java @@ -54,7 +54,9 @@ public class AdaifOperationMEC extends OperationMEC { public AdaifOperationMEC( String ctxName, String ID0, String OD0 ) { name = "AdaifOperationMEC"; - exec_code = "adaif_do(&" + ctxName + ");" + CR; + exec_code = TAB + "int status;" + CR + TAB + + "adaif_wait(&" + ctxName + ");" + CR + TAB + + "status = adaif_wait(&" + ctxName + ");" + CR; init_code = "void init_" + ctxName.split("_ctx")[0] + "( void )\t{" + CR + TAB + diff --git a/src/tmltranslator/ctranslator/CwaMEC.java b/src/tmltranslator/ctranslator/CwaMEC.java index 1f9869bf77..77ba345ea1 100644 --- a/src/tmltranslator/ctranslator/CwaMEC.java +++ b/src/tmltranslator/ctranslator/CwaMEC.java @@ -55,6 +55,7 @@ public class CwaMEC extends FepOperationMEC { name = "Component Wise Addition MEC"; exec_code = TAB + "/*firm instruction*/" + CR + TAB + + "int status;" + CR + TAB + "fep_set_l(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ inSignalName + "].pBuff)->num_samples);" + CR + TAB + "fep_set_qx(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ inSignalName + "].pBuff)->bank);" + CR + TAB + "fep_set_bx(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ inSignalName + "].pBuff)->base_address);" + CR + TAB + @@ -66,7 +67,7 @@ public class CwaMEC extends FepOperationMEC { "fep_set_bz(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ outSignalName + "].pBuff)->base_address);" + CR + TAB + "fep_set_tz(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ outSignalName + "].pBuff)->data_type);" + CR + TAB + "/*start execution*/" + CR + TAB + - "fep_do(&"+ _ctxName + ");" + CR; + "status = fep_do(&"+ _ctxName + ");" + CR; init_code ="/***** INIT "+ _ctxName.split("_ctx")[0] + " *******/" + CR + "void init_"+ _ctxName.split("_ctx")[0] + "(void){" + CR + TAB + diff --git a/src/tmltranslator/ctranslator/CwlMEC.java b/src/tmltranslator/ctranslator/CwlMEC.java index 8a72180968..7a3e32185c 100755 --- a/src/tmltranslator/ctranslator/CwlMEC.java +++ b/src/tmltranslator/ctranslator/CwlMEC.java @@ -55,6 +55,7 @@ public class CwlMEC extends FepOperationMEC { name = "Component Wise Lookup MEC"; exec_code = TAB + "/*firm instruction*/" + CR + TAB + + "int status;" + CR + TAB + "fep_set_l(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->num_samples);" + CR + TAB + "fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR + TAB + "fep_set_bx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->base_address);" + CR + TAB + @@ -63,7 +64,7 @@ public class CwlMEC extends FepOperationMEC { "fep_set_bz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->base_address);" + CR + TAB + "fep_set_tz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->data_type);" + CR + TAB + "/*start execution*/" + CR + TAB + - "fep_do(&" + _ctxName + ");" + CR; + "status = fep_do(&" + _ctxName + ");" + CR; init_code ="/***** INIT " + _ctxName.split("_ctx")[0] + " *******/" + CR + "void init_" + _ctxName.split("_ctx")[0] + "(void){" + CR + TAB + diff --git a/src/tmltranslator/ctranslator/CwmMEC.java b/src/tmltranslator/ctranslator/CwmMEC.java index ca5a9b4365..d131740c11 100755 --- a/src/tmltranslator/ctranslator/CwmMEC.java +++ b/src/tmltranslator/ctranslator/CwmMEC.java @@ -55,6 +55,7 @@ public class CwmMEC extends FepOperationMEC { name = "Component Wise Multiplication MEC"; exec_code = TAB + "/*firm instruction*/" + CR + + "int status;" + CR + TAB + "fep_set_l(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->num_samples);" + CR + "fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR + "fep_set_bx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->base_address);" + CR + @@ -63,7 +64,7 @@ public class CwmMEC extends FepOperationMEC { "fep_set_bz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->base_address);" + CR + "fep_set_tz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->data_type);" + CR + "/*start execution*/" + CR + - "fep_do(&" + _ctxName + ");" + CR; + "status = fep_do(&" + _ctxName + ");" + CR; init_code ="/***** INIT " + _ctxName.split("_ctx")[0] + " *******/" + CR + "void init_" + _ctxName.split("_ctx")[0] + "(void){" + CR + TAB + diff --git a/src/tmltranslator/ctranslator/CwpMEC.java b/src/tmltranslator/ctranslator/CwpMEC.java index 14147a0c6a..057f0b534a 100755 --- a/src/tmltranslator/ctranslator/CwpMEC.java +++ b/src/tmltranslator/ctranslator/CwpMEC.java @@ -55,6 +55,7 @@ public class CwpMEC extends FepOperationMEC { name = "Component Wise Product MEC"; exec_code = TAB + "/*firm instruction*/" + CR + TAB + + "int status;" + CR + TAB + "fep_set_l(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->num_samples);" + CR + TAB + "fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR + TAB + "fep_set_bx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->base_address);" + CR + TAB + @@ -63,7 +64,7 @@ public class CwpMEC extends FepOperationMEC { "fep_set_bz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->base_address);" + CR + TAB + "fep_set_tz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->data_type);" + CR + TAB + "/*start execution*/" + CR + TAB + - "fep_do(&" + _ctxName + ");" + CR; + "status = fep_do(&" + _ctxName + ");" + CR; init_code ="/***** INIT " + _ctxName.split("_ctx")[0] + " *******/" + CR + "void init_" + _ctxName.split("_ctx")[0] + "(void){" + CR + TAB + diff --git a/src/tmltranslator/ctranslator/FftMEC.java b/src/tmltranslator/ctranslator/FftMEC.java index 6d517ee9a2..88f8daee9b 100644 --- a/src/tmltranslator/ctranslator/FftMEC.java +++ b/src/tmltranslator/ctranslator/FftMEC.java @@ -54,6 +54,7 @@ public class FftMEC extends FepOperationMEC { public FftMEC( String _ctxName, String inSignalName, String outSignalName ) { name = "Fast Fourier Transform MEC"; exec_code = TAB + "/*firm instruction*/" + CR + + "int status;" + CR + TAB + "fep_set_l(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->num_samples);" + CR + TAB + "fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR + TAB + "fep_set_bx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->base_address);" + CR + TAB + @@ -62,7 +63,7 @@ public class FftMEC extends FepOperationMEC { "fep_set_bz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->base_address);" + CR + TAB + "fep_set_tz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->data_type);" + CR + TAB + "/*start execution*/" + CR + TAB + - "fep_do(&" + _ctxName + ");" + CR; + "status = fep_do(&" + _ctxName + ");" + CR; init_code ="/***** INIT " + _ctxName.split("_ctx")[0] + " *******/" + CR + "void init_" + _ctxName.split("_ctx")[0] + "(void){" + CR + TAB + diff --git a/src/tmltranslator/ctranslator/IntlOperationMEC.java b/src/tmltranslator/ctranslator/IntlOperationMEC.java index 869907379d..948d63b484 100644 --- a/src/tmltranslator/ctranslator/IntlOperationMEC.java +++ b/src/tmltranslator/ctranslator/IntlOperationMEC.java @@ -53,9 +53,10 @@ public class IntlOperationMEC extends OperationMEC { public IntlOperationMEC( String ctxName, String ID0, String OD0 ) { name = "InterleaverOperationMEC"; - exec_code = TAB + "/*firm instruction*/" + CR + TAB + - "/*start execution*/" + CR + TAB + - "intl_do(&" + ctxName + ");" + CR; + exec_code = TAB + "/*start execution*/" + CR + TAB + + "int status;" + CR + TAB + + "intl_start(&" + ctxName + ");" + CR + TAB + + "status = intl_wait(&" + ctxName + ");" + CR; init_code ="/***** INIT " + ctxName.split("_ctx")[0] + " *******/" + CR + "void init_" + ctxName.split("_ctx")[0] + "(void){" + CR + TAB + diff --git a/src/tmltranslator/ctranslator/MappOperationMEC.java b/src/tmltranslator/ctranslator/MappOperationMEC.java index 595a50df21..df1aab4c35 100644 --- a/src/tmltranslator/ctranslator/MappOperationMEC.java +++ b/src/tmltranslator/ctranslator/MappOperationMEC.java @@ -47,16 +47,15 @@ package tmltranslator.ctranslator;; import java.util.*; -//import Ctranslator.*; public class MappOperationMEC extends OperationMEC { - public MappOperationMEC( String ctxName, String ID0, String OD0 ) { name = "MapperOperationMEC"; - exec_code = TAB + "/*firm instruction*/" + CR + TAB + - "/*start execution*/" + CR + TAB + - "mapper_do(&" + ctxName + ");" + CR; + exec_code = TAB + CR + TAB + "/*start execution*/" + CR + TAB + + "int status;" + CR + TAB + + "mapper_start(&" + ctxName + ");" + CR + TAB + + "status = mapper_wait(&" + ctxName + ");" + CR; init_code ="/***** INIT " + ctxName.split("_ctx")[0] + " *******/" + CR + "void init_" + ctxName.split("_ctx")[0] + "(void){" + CR + TAB + diff --git a/src/tmltranslator/ctranslator/SumMEC.java b/src/tmltranslator/ctranslator/SumMEC.java index 225c69a030..ddf2f2df1c 100644 --- a/src/tmltranslator/ctranslator/SumMEC.java +++ b/src/tmltranslator/ctranslator/SumMEC.java @@ -53,9 +53,10 @@ public class SumMEC extends FepOperationMEC { public SumMEC( String _ctxName, String inSignalName, String outSignalName ) { name = "Sum MEC"; exec_code = TAB + "/*firm instruction*/" + CR + TAB + + "int status;" + CR + TAB + "fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR + TAB + "/*start execution*/" + CR + TAB + - "fep_do(&" + _ctxName + ");" + CR; + "status = fep_do(&" + _ctxName + ");" + CR; init_code = "void init_" + _ctxName.split("_ctx")[0] + "(void){" + CR + TAB + diff --git a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java b/src/tmltranslator/ctranslator/TMLCCodeGeneration.java index fb895e6207..e1073c4fb9 100755 --- a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java +++ b/src/tmltranslator/ctranslator/TMLCCodeGeneration.java @@ -696,10 +696,10 @@ public class TMLCCodeGeneration { "#include <embb/mapper.h>" + CR + "#include <embb/adaif.h>" + CR + "#include <embb/memory.h>" + CR2 + - "char fep_mss[0x10000];" + CR + - "char adaif_mss[0x10000];" + CR + - "char intl_mss[0x10000];" + CR + - "char mapper_mss[0x10000];" + CR2; + "extern char fep_mss[];" + CR + + "extern char adaif_mss[];" + CR + + "extern char intl_mss[];" + CR + + "extern char mapper_mss[];" + CR2; return s; } @@ -809,6 +809,14 @@ public class TMLCCodeGeneration { for( Signal sig: signalsList ) { s.append( sig.getName() + "," + CR ); } + s.append( postexList.get(0).getName() + "," + CR ); + /*for( Operation op: operationsList ) { + if( op.isPostex() ) { + TraceManager.addDev( "OPERATION: " + op.getName() ); + TraceManager.addDev( "\t\tinSignal = " + op.getInSignals().get(0).getName() ); + } + } + System.exit(0);*/ s.append( "NUM_SIGS };" + CR2 + "enum ops_enu {" + CR ); for( Operation op: operationsList ) { @@ -908,18 +916,20 @@ public class TMLCCodeGeneration { for( Operation op: operationsList ) { if( op.getType() == Operation.SDR ) { - programString.append( generateSDROperation( op, op.getSDRTasks().get( Operation.X_TASK ), op.getSDRTasks().get( Operation.F_TASK ) ) ); + programString.append( generateSDROperation( op ) ); } } } - private String generateSDROperation( Operation op, TMLTask xTask, TMLTask fTask ) { + private String generateSDROperation( Operation op ) { //For SDR operations the xTask is used to retrieve the mapped unit String signalOutName = ""; String signalInName = ""; - String ctxName = op.getContextName(); StringBuffer code = new StringBuffer(); + String ctxName = op.getContextName(); + TMLTask xTask = op.getSDRTasks().get( Operation.X_TASK ); + TMLTask fTask = op.getSDRTasks().get( Operation.F_TASK ); OperationMEC xTaskOperation = xTask.getOperationMEC(); @@ -930,7 +940,10 @@ public class TMLCCodeGeneration { signalInName += sig.getName(); } - code.append( "int op_" + op.getName() + "()\t{" + CR + getTaskAttributes( fTask ) + CR ); + code.append( "int op_" + op.getName() + "()\t{" + CR /*+ getTaskAttributes( fTask )*/ + CR ); + if( op.isPrex() ) { + code.append( TAB + "int status = 0;" + CR ); + } //Mark input signals as false for( Signal sig: op.getInSignals() ) { @@ -1067,6 +1080,7 @@ public class TMLCCodeGeneration { attributes = tmlcplib.getAssignedAttributes(); String name = tmlcplib.getName().split("::")[0]; programString.append( "int op_" + name + "()\t{" + CR ); + programString.append( TAB + "int status = 0;" + CR ); for( Signal sig: dt.getInSignals() ) { programString.append( TAB + "sig[ " + sig.getName() + " ].f = false;" + CR ); @@ -1075,14 +1089,14 @@ public class TMLCCodeGeneration { TraceManager.addDev( "CPMEC: " + cpMEC + "\n" + attributes.toString() ); if( cpMEC instanceof CpuMemoryCopyMEC ) { CpuMemoryCopyMEC mec = new CpuMemoryCopyMEC( ctxName, "", "", "", "" ); - programString.append( mec.getExecCode() ); + programString.append( "/*" + mec.getExecCode() + "*/" ); } if( cpMEC instanceof SingleDmaMEC ) { destinationAddress = attributes.get( SingleDmaMEC.destinationAddressIndex ); sourceAddress = attributes.get( SingleDmaMEC.sourceAddressIndex ); counter = attributes.get( SingleDmaMEC.counterIndex ); SingleDmaMEC mec = new SingleDmaMEC( ctxName, destinationAddress, sourceAddress, counter ); - programString.append( mec.getExecCode() ); + programString.append( "/*" + mec.getExecCode() + "*/" ); } if( cpMEC instanceof DoubleDmaMEC ) { destinationAddress1 = attributes.get( DoubleDmaMEC.destinationAddress1Index ); @@ -1092,7 +1106,7 @@ public class TMLCCodeGeneration { sourceAddress2 = attributes.get( DoubleDmaMEC.sourceAddress2Index ); counter2 = attributes.get( DoubleDmaMEC.counter2Index ); DoubleDmaMEC mec = new DoubleDmaMEC( ctxName, destinationAddress1, sourceAddress1, counter1, destinationAddress2, sourceAddress2, counter2 ); - programString.append( mec.getExecCode() ); + programString.append( "/*" + mec.getExecCode() + "*/" ); } for( Signal sig: dt.getOutSignals() ) { @@ -1171,6 +1185,10 @@ public class TMLCCodeGeneration { String inSignalName, outSignalName; initFileString.append( "#include \"" + applicationName + ".h\"" + CR2 ); initFileString.append( "/**** variables ****/" + CR2 ); + initFileString.append( "char fep_mss[0x10000];" + CR ); + initFileString.append( "char adaif_mss[0x10000];" + CR ); + initFileString.append( "char intl_mss[0x10000];" + CR ); + initFileString.append( "char mapper_mss[0x10000];" + CR ); initFileString.append( buffersAndInstructionsDeclaration( false ) + CR2 ); generateCodeToInitializeBuffers(); generateCodeToInitializeSignals(); @@ -1245,7 +1263,7 @@ public class TMLCCodeGeneration { generateInitRoutinesForCPs(); - initFileString.append( "/**** init contexts ****/" + CR + "void init_operations_context(void)\t{" + CR ); + initFileString.append( "/**** init contexts ****/" + CR + "void init_operations(void)\t{" + CR ); for( Operation op: operationsList ) { if( op.getType() == Operation.SDR ) { TMLTask xTask = op.getSDRTasks().get( Operation.X_TASK ); -- GitLab