Skip to content
Snippets Groups Projects
Commit 6bf0f899 authored by Rodrigo Cortes's avatar Rodrigo Cortes
Browse files

Created new libsyscams to contain basic Software communication functions to...

Created new libsyscams to contain basic Software communication functions to the SoClib component gpio2vci.(syscams)
parent dd3f21aa
No related branches found
No related tags found
1 merge request!72Syscams
Showing
with 595 additions and 226 deletions
......@@ -16,6 +16,8 @@ export PATH
updateruntime:
cp mutekh/libmwmr/*.c mutekh/examples/avatar
cp mutekh/libmwmr/include/mwmr/mwmr.h mutekh/examples/avatar
cp mutekh/libsyscams/*.c mutekh/examples/avatar
cp mutekh/libsyscams/*.h mutekh/examples/avatar
cp src/*.c ~/TTool/MPSoC/mutekh/examples/avatar
cp src/*.h ~/TTool/MPSoC/mutekh/examples/avatar
......
......@@ -26,6 +26,7 @@
CONFIG_MWMR
CONFIG_MWMR_SOCLIB
CONFIG_MUTEK_SCHEDULER_STATIC
CONFIG_LIBSYSCAMS
%include $(SRC_DIR)/examples/common/build_options.conf
%include $(SRC_DIR)/examples/common/platforms.conf
......
......@@ -29,6 +29,9 @@ CONFIG_PTHREAD_ATTRIBUTES
CONFIG_MWMR
CONFIG_MWMR_SOCLIB
#fin ajoute DG
#changes RCP
CONFIG_LIBSYSCAMS
#end changes RCP
CONFIG_MUTEK_SCHEDULER_STATIC
%include $(SRC_DIR)/examples/common/build_options.conf
......
objs += gpio2vci_iface.o gpio2vci_address.o
#ifndef GPIO2VCI_ADDRESS_H
#define GPIO2VCI_ADDRESS_H
#include <string.h>
#include <stdio.h>
int get_address(char name[]);
#endif //GPIO2VCI_ADDRESS_H
#include "gpio2vci_iface.h"
void write_gpio2vci(int data, char name[]) {
int * wr_ptr;
//wr_ptr = (int*)AMS_CLUSTER_WRITE; //Address of the GPIO2VCI component.
//wr_ptr = (int*)get_address(index);
wr_ptr = (int*)get_address(name);
*wr_ptr = data;
}
int read_gpio2vci(char name[]) {
int * rd_ptr;
rd_ptr = (int*)(get_address(name)+4);
return *rd_ptr;
}
#ifndef GPIO2VCI_IFACE_H
#define GPIO2VCI_IFACE_H
#include "gpio2vci_address.h"
void write_gpio2vci(int data, char name[]);
int read_gpio2vci(char name[]);
#endif //GPIO2VCI_IFACE_H
%config CONFIG_LIBSYSCAMS
desc Enable SYSCAMS library
module libsyscams
%config end
This diff is collapsed.
/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
*
* ludovic.apvrille AT enst.fr
*
* This software is a computer program whose purpose is to allow the
* edition of TURTLE analysis, design and deployment diagrams, to
* allow the generation of RT-LOTOS or Java code from this diagram,
* and at last to allow the analysis of formal validation traces
* obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
* from INRIA Rhone-Alpes.
*
* This software is governed by the CeCILL license under French law and
* abiding by the rules of distribution of free software. You can use,
* modify and/ or redistribute the software under the terms of the CeCILL
* license as circulated by CEA, CNRS and INRIA at the following URL
* "http://www.cecill.info".
*
* As a counterpart to the access to the source code and rights to copy,
* modify and redistribute granted by the license, users are provided only
* with a limited warranty and the software's author, the holder of the
* economic rights, and the successive licensors have only limited
* liability.
*
* In this respect, the user's attention is drawn to the risks associated
* with loading, using, modifying and/or developing or reproducing the
* software by the user in light of its specific status of free software,
* that may mean that it is complicated to manipulate, and that also
* therefore means that it is reserved for developers and experienced
* professionals having in-depth computer knowledge. Users are therefore
* encouraged to load and test the software's suitability as regards their
* requirements in conditions enabling the security of their systems and/or
* data to be ensured and, more generally, to use and operate it in the
* same conditions as regards security.
*
* The fact that you are presently reading this means that you have had
* knowledge of the CeCILL license and that you accept its terms.
*/
/**
* Class AVATAR2CSOCLIB
* Creation: 28/08/2018
* @version 1.0 28/08/2018
* @author Rodrigo CORTES PORTO
*/
package ddtranslatorSoclib.toSoclib;
import ddtranslatorSoclib.toTopCell.TopCellGenerator;
import ddtranslatorSoclib.AvatarAmsCluster;
public class Gpio2VciAddress {
private final static String INCLUDE_HEADER = "#include \"gpio2vci_address.h\"\n";
private final static String GET_ADDRESS_DEC = "int get_address(char name[]) {\n";
private final static String CR = "\n";
private final static String CR2 = "\n\n";
private String name;
private String code;
public Gpio2VciAddress(String _name) {
name = _name;
}
public String getName() {
return name;
}
public void buildAddressCode() {
code = INCLUDE_HEADER + CR + GET_ADDRESS_DEC;
for(AvatarAmsCluster amsCluster : TopCellGenerator.avatardd.getAllAmsCluster ()) {
if(amsCluster.getNo_amsCluster() == 0) {
code += "if(strcmp(name, \""+amsCluster.getAmsClusterName()+"\") == 0) {\n";
code += "return 0xc"+Integer.toHexString(amsCluster.getNo_amsCluster())+"200000;\n";
code += "} ";
} else {
code += "else if(strcmp(name, \""+amsCluster.getAmsClusterName()+"\") == 0) {\n";
code += "return 0xc"+Integer.toHexString(amsCluster.getNo_amsCluster())+"200000;\n";
code += "} ";
}
}
code += "else {\n";
code += "printf(\"ERROR getting address for cluster: \\\"%s\\\"\\n\", name);\n";
code += "return -1;\n";
code += "}\n}";
}
public String getAddressCode() {
return code;
}
}
......@@ -41,6 +41,7 @@
package ddtranslatorSoclib.toSoclib;
import ddtranslatorSoclib.toTopCell.TopCellGenerator;
/**
* Class AVATAR2CSOCLIB
......@@ -54,7 +55,7 @@ public class TaskFileSoclib {
//added mwmr.h
private final static String INCLUDE_HEADER = "#include <stdio.h>\n#include <unistd.h>\n#include <stdlib.h>\n";
private final static String LOCAL_INCLUDE_HEADER = "#include \"request.h\"\n#include \"syncchannel.h\"\n#include \"request_manager.h\"\n#include \"debug.h\"\n#include \"defs.h\"\n#include \"mytimelib.h\"\n#include \"random.h\"\n#include \"tracemanager.h\"\n#include \"main.h\"\n#include \"mwmr.h\"\n ";
private final static String LOCAL_INCLUDE_HEADER = "#include \"request.h\"\n#include \"syncchannel.h\"\n#include \"request_manager.h\"\n#include \"debug.h\"\n#include \"defs.h\"\n#include \"mytimelib.h\"\n#include \"random.h\"\n#include \"tracemanager.h\"\n#include \"main.h\"\n#include \"mwmr.h\"\n";
private final static String CR = "\n";
......@@ -82,8 +83,12 @@ public class TaskFileSoclib {
public String getFullHeaderCode() {
String s = "#ifndef " + name + "_H\n#define " + name + "_H\n";
s += INCLUDE_HEADER + CR + LOCAL_INCLUDE_HEADER + CR + CR;
s += headerCode;
s += INCLUDE_HEADER + CR + LOCAL_INCLUDE_HEADER;
if(TopCellGenerator.avatardd.getNbAmsCluster() > 0) {
s += "#include \"gpio2vci_iface.h\"\n";
}
s += CR + headerCode;
s += "#endif\n";
return s;
}
......@@ -99,4 +104,4 @@ public class TaskFileSoclib {
public void addToMainCode(String _code) {
mainCode += _code;
}
}
\ No newline at end of file
}
......@@ -96,6 +96,7 @@ public class TasksAndMainGenerator {
private MainFileSoclib mainFile;
private Vector<TaskFileSoclib> taskFiles;
private Gpio2VciAddress gpio2vciAddressFile;
private String makefile_src;
private String makefile_SocLib;
......@@ -147,6 +148,9 @@ public class TasksAndMainGenerator {
// Makefile for SocLib
makeMakefileSocLib();
FileUtils.saveFile(path + "Makefile.soclib", makefile_SocLib);
TraceManager.addDev("Generating gpio2vci_address file in "+path+"mutekh/libsyscams/" + gpio2vciAddressFile.getName());
FileUtils.saveFile(path + "mutekh"+File.separator+"libsyscams"+File.separator + gpio2vciAddressFile.getName(), Conversion.indentString(gpio2vciAddressFile.getAddressCode(), 4));
}
public Vector<?> getWarnings() {
......@@ -158,6 +162,8 @@ public class TasksAndMainGenerator {
tracing = _tracing;
mainFile = new MainFileSoclib("main");
gpio2vciAddressFile = new Gpio2VciAddress("gpio2vci_address.c");
gpio2vciAddressFile.buildAddressCode();
avspec.removeCompositeStates();
avspec.removeLibraryFunctionCalls();
......
......@@ -622,8 +622,8 @@ public class JDialogSysCAMSExecutableCodeGeneration extends javax.swing.JFrame i
}
}
}
jta.append("Validation for \""+(syscalsspec.getCluster()).getClusterName()+"\" completed.\n");
}
jta.append("Validation for \""+(syscalsspec.getCluster()).getClusterName()+"\" completed.\n");
} catch (InterruptedException ie) {
System.err.println("Interrupted");
jta.append("Interrupted\n");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment