Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Schuetz2012-09-07 15:14:22 +0000
committerThomas Schuetz2012-09-07 15:14:22 +0000
commitbfbe68da512aa6a87cddb70aa77baf4b40e7d43f (patch)
tree92fcb6b0a9bdd84e5971592f5a013919ad809a6a /runtime
parent873d1ba8fc0592de341acec91d254940b8d4f591 (diff)
downloadorg.eclipse.etrice-bfbe68da512aa6a87cddb70aa77baf4b40e7d43f.tar.gz
org.eclipse.etrice-bfbe68da512aa6a87cddb70aa77baf4b40e7d43f.tar.xz
org.eclipse.etrice-bfbe68da512aa6a87cddb70aa77baf4b40e7d43f.zip
[runtime.c / generator.c] reorganized structure of runtime / moved and renamed etGlobalFlags.h to project specific config/etRuntimeConfig.h
Diffstat (limited to 'runtime')
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/.cproject11
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h2
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/platform/etMemory.h6
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/config/etRuntimeConfig.h (renamed from runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etGlobalFlags.h)4
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etDatatypes.h (renamed from runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etDatatypes.h)0
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etLogger.c (renamed from runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etLogger.c)0
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etPlatform.c (renamed from runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etPlatform.c)0
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etTimer.c (renamed from runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etTimer.c)0
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/info.txt (renamed from runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/info.txt)0
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etDatatypes.h72
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etLogger.c78
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.c291
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.h36
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etTimer.c99
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etDatatypes.h72
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etLogger.c96
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etPlatform.c (renamed from runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etGlobalFlags.h)80
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etTimer.c69
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/info.txt1
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h2
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etTimer.c2
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/naming-convention.txt9
22 files changed, 890 insertions, 40 deletions
diff --git a/runtime/org.eclipse.etrice.runtime.c/.cproject b/runtime/org.eclipse.etrice.runtime.c/.cproject
index 3df281dc8..b7b292441 100644
--- a/runtime/org.eclipse.etrice.runtime.c/.cproject
+++ b/runtime/org.eclipse.etrice.runtime.c/.cproject
@@ -9,7 +9,7 @@
<externalSetting>
<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/org.eclipse.etrice.runtime.c"/>
<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/Debug"/>
- <entry flags="RESOLVED" kind="libraryFile" name="org.eclipse.etrice.runtime.c"/>
+ <entry flags="RESOLVED" kind="libraryFile" name="org.eclipse.etrice.runtime.c" srcPrefixMapping="" srcRootPath=""/>
</externalSetting>
</externalSettings>
<extensions>
@@ -42,6 +42,7 @@
<option id="gnu.c.compiler.mingw.lib.debug.option.debugging.level.1083191317" name="Debug Level" superClass="gnu.c.compiler.mingw.lib.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
<option id="gnu.c.compiler.option.include.paths.790097072" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/platforms/generic}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/config}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/common}&quot;"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.361048721" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
@@ -51,8 +52,8 @@
</toolChain>
</folderInfo>
<sourceEntries>
- <entry excluding="platforms/MSP430" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
<entry excluding="test|src" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ <entry excluding="platforms/ST_MSP430_G2553_CCS5_LaunchPad|platforms/ST_MSP430_F5438_CCS5_HWElevator|platforms/ST_MSP430_F5438_CCS5_EXP430F5438|platforms/MSP430" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
@@ -64,7 +65,7 @@
<externalSetting>
<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/org.eclipse.etrice.runtime.c"/>
<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/Release"/>
- <entry flags="RESOLVED" kind="libraryFile" name="org.eclipse.etrice.runtime.c"/>
+ <entry flags="RESOLVED" kind="libraryFile" name="org.eclipse.etrice.runtime.c" srcPrefixMapping="" srcRootPath=""/>
</externalSetting>
</externalSettings>
<extensions>
@@ -97,8 +98,8 @@
</toolChain>
</folderInfo>
<sourceEntries>
- <entry excluding="platforms/MSP430" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
<entry excluding="test|src" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ <entry excluding="platforms/ST_MSP430_G2553_CCS5_LaunchPad|platforms/ST_MSP430_F5438_CCS5_HWElevator|platforms/ST_MSP430_F5438_CCS5_EXP430F5438|platforms/MSP430" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
@@ -120,4 +121,6 @@
<storageModule moduleId="refreshScope" versionNumber="1">
<resource resourceType="PROJECT" workspacePath="/org.eclipse.etrice.runtime.c"/>
</storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+ <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
</cproject>
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h b/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h
index b1720cec5..2ab4c8ecf 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h
@@ -13,7 +13,7 @@
#ifndef _ETMSCLOGGER_H_
#define _ETMSCLOGGER_H_
-#include "etGlobalFlags.h"
+#include "etRuntimeConfig.h"
void etMSCLogger_open(char* logPath, char* mscName);
void etMSCLogger_close(void);
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/platform/etMemory.h b/runtime/org.eclipse.etrice.runtime.c/src/common/platform/etMemory.h
index 997c7053c..61c283a24 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/platform/etMemory.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/platform/etMemory.h
@@ -14,7 +14,7 @@
#define _ETMEMORY_H_
#include "etDatatypes.h"
-#include "etGlobalFlags.h"
+#include "etRuntimeConfig.h"
#define CONSTANT_MEM_CEIL(n) \
((n)+(((int32)STRUCT_ALIGN-((n)&((int32)STRUCT_ALIGN-1)))&((int32)STRUCT_ALIGN-1)))
@@ -22,8 +22,4 @@
#define MEM_ALIGNMENT STRUCT_ALIGN /* power of 2 and >= sizeof(int) ! */
#define MEM_CEIL(n) CONSTANT_MEM_CEIL(n)
-/* pool and block size */
-#define MESSAGE_POOL_MAX 50
-#define MESSAGE_BLOCK_SIZE 64
-
#endif /* _ETMEMORY_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etGlobalFlags.h b/runtime/org.eclipse.etrice.runtime.c/src/config/etRuntimeConfig.h
index bb645b40e..b1759ab47 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etGlobalFlags.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/config/etRuntimeConfig.h
@@ -25,5 +25,9 @@
#define ET_RUNTIME_MAXLOOP 100
//#define ET_RUNTIME_ENDLESS
+/* pool and block size */
+#define MESSAGE_POOL_MAX 50
+#define MESSAGE_BLOCK_SIZE 64
+
#endif /* ETGLOBALFLAGS_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etDatatypes.h
index a831f66ff..a831f66ff 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etDatatypes.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etDatatypes.h
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etLogger.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etLogger.c
index d43a953ba..d43a953ba 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etLogger.c
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etLogger.c
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etPlatform.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etPlatform.c
index 1650cd8a4..1650cd8a4 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etPlatform.c
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etPlatform.c
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etTimer.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etTimer.c
index cdffb9636..cdffb9636 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etTimer.c
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etTimer.c
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/info.txt b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/info.txt
index 71c5f9f3f..71c5f9f3f 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/info.txt
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/info.txt
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etDatatypes.h
new file mode 100644
index 000000000..aa948e6b4
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etDatatypes.h
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2011 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+#ifndef _ETDATATYPES_H_
+#define _ETDATATYPES_H_
+
+/*
+ * typedefs for platform specific datatypes
+ * Version for TI MSP 430
+ *
+ * */
+
+#include <stdio.h>
+
+/* unsigned integer datatypes */
+typedef unsigned char uint8;
+typedef unsigned short int uint16;
+typedef unsigned long uint32;
+/* typedef unsigned long long uint64; */ /* not available on this platform */
+
+/* signed integer datatypes */
+typedef char int8;
+typedef short int int16;
+typedef long int32;
+/* typedef long long int64; */ /* not available on this platform */
+
+
+/* float datatypes */
+typedef float float32;
+/* typedef double float64; */ /* not available on this platform */
+
+/* boolean datatypes and values */
+typedef char bool; /* TODO: bool, Bool, Boolean, and boolean are already defined in some platforms*/
+typedef bool boolean;
+#ifndef TRUE
+ #define TRUE 1
+#endif
+#ifndef FALSE
+ #define FALSE 0
+#endif
+
+/*
+ * typedefs for eTrice Runtime and Testing
+ *
+ * */
+
+typedef int8 etInt8;
+typedef int16 etInt16;
+typedef int32 etInt32;
+
+typedef uint8 etUInt8;
+typedef uint16 etUInt16;
+typedef uint32 etUInt32;
+
+typedef bool etBool;
+
+typedef float32 etFloat32;
+
+typedef FILE* etFileHandle;
+
+typedef int8 etAddressId;
+
+#endif /* _DATATYPES_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etLogger.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etLogger.c
new file mode 100644
index 000000000..9b20f31a3
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etLogger.c
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2011 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+/*
+ * etLogger.c
+ *
+ * Created on: 16.01.2012
+ * Author: tschuetz
+ */
+
+
+#include "debugging/etLogger.h"
+
+#include <stdarg.h>
+
+
+void etLogger_logError(const char* message){
+ printf("ERROR: %s\n", message);
+}
+
+void etLogger_logWarning(const char* message){
+ printf("WARNING: %s\n", message);
+}
+
+void etLogger_logInfo(const char* message){
+ printf("INFO: %s\n", message);
+}
+
+void etLogger_logErrorF(const char* format, ... ){
+ printf("ERROR: ");
+ va_list arglist;
+ va_start( arglist, format );
+ vprintf( format, arglist );
+ va_end( arglist );
+ printf("\n");
+}
+
+void etLogger_logWarningF(const char* format, ... ){
+ printf("WARNING: ");
+ va_list arglist;
+ va_start( arglist, format );
+ vprintf( format, arglist );
+ va_end( arglist );
+ printf("\n");
+}
+
+void etLogger_logInfoF(const char* format, ... ){
+ printf("INFO: ");
+ va_list arglist;
+ va_start( arglist, format );
+ vprintf( format, arglist );
+ va_end( arglist );
+ printf("\n");
+}
+
+etFileHandle etLogger_fopen(const char* filename, const char* mode){
+ return( fopen(filename, mode) );
+}
+
+int etLogger_fclose(etFileHandle file){
+ return( fclose(file) );
+}
+
+void etLogger_fprintf(etFileHandle file, const char* format, ... ){
+ va_list arglist;
+ va_start( arglist, format );
+ vfprintf(file, format, arglist );
+ va_end( arglist );
+}
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.c
new file mode 100644
index 000000000..9c2f2c586
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.c
@@ -0,0 +1,291 @@
+/*******************************************************************************
+ * Copyright (c) 2012 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+#include "msp430f5438a.h"
+#include "platform/etTimer.h"
+#include "hal_pmm.h"
+#include "etPlatform.h"
+
+void enableLatchOutput(void);
+void initClockSystem(void);
+void initPortsForElevator(void);
+void setData(unsigned char data);
+void allLedsOff(void);
+void genLatchClock(unsigned int mask);
+unsigned char getFloorButtons(unsigned char floor);
+void initMotor(void);
+void initHw(void);
+void enableInterrupt(void);
+
+
+const unsigned char _7seg[15]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F, ~0xBF,~0x86,~0xDB,~0xCF,~0xE6};
+const unsigned int latchClockFloorLowPattern[6]={0x0410,0x0440,0x0801,0x0804,0x0810,0x0840};
+const unsigned int latchClockFloorHighPattern[6]={0x0420,0x0480,0x0802,0x0808,0x0820,0x880};
+const unsigned int latchClockMotorPattern[12]={0x0201,0x0202,0x0204,0x0208,0x0210,0x0220,0x0240,0x0280,0x0401,0x0402,0x0404,0x0408};
+
+
+const unsigned int doorPattern1[12]={0x0000,0x0201,0x0303,0x0387,0x03CF,0x03FF,0x03FF,0x03CF,0x0387,0x0303,0x0201,0x0000};
+const unsigned int doorPattern2[12]={0x0000,0x0030,0x0078,0x00FC,0x01FE,0x03FF,0x03FF,0x01FE,0x00FC,0x0078,0x0030,0x0000};
+const unsigned int doorPattern3[12]={0x0000,0x0200,0x0300,0x0380,0x03C0,0x03E0,0x03F0,0x03F8,0x03FC,0x03FE,0x03FF,0x03FF};
+
+
+volatile unsigned char execute;
+unsigned int floorLatchShadow[6];
+unsigned char motorLatchShadow[12];
+
+
+/* implemenatation for eTrice interfaces*/
+
+void etUserEntry(void){
+ initHw();
+ etTimer_init();
+}
+
+void etUserPreRun(void){
+ enableInterrupt();
+}
+
+void etUserPostRun(void){ }
+void etUserExit(void){ }
+
+
+/* platform specific functions */
+
+
+
+/*****************************************************/
+
+
+void initHw(void) {
+volatile unsigned int i=0;
+volatile unsigned char j,m;
+
+ WDTCTL = WDTPW + 0x36; //WDT as Timer;
+
+ SetVCore(PMMCOREV_3);
+ initClockSystem();
+
+ initPortsForElevator();
+ allLedsOff();
+ enableLatchOutput();
+ initMotor();
+}
+
+void enableInterrupt(void){
+ SFRIE1|=WDTIE;
+ _enable_interrupt();
+}
+void initPortsForElevator(void){
+ P2DIR |= 0x02;
+ P2OUT &= ~0x02;
+
+ P4OUT = 0x00;
+ P4DIR = 0xFF;
+
+ P3OUT = 0xC0;
+ P3DIR = 0xFF;
+
+ P8OUT = 0x00;
+ P8DIR = 0x00;
+ P8REN = 0xE0;
+}
+
+void toggleTestLed(void){
+ P2OUT ^= 0x02;
+}
+void enableLatchOutput(void){
+ P3OUT &= ~0x80;
+}
+
+void setData(unsigned char data){
+ P4OUT = data;
+ P3OUT &= ~0x01;
+ P3OUT |= 0x01;
+}
+
+void allLedsOff(void){
+unsigned int i;
+ P3OUT &= ~0x40;
+ setData(0xFF);
+ P4OUT &= ~0xFF;
+ P3OUT &= ~0x1E;
+ P3OUT |= 0x1E;
+ P4OUT |= 0xFF;
+ P3OUT &= ~0x1E;
+ P3OUT |= 0x1E;
+ for(i=0;i<6;i++){
+ floorLatchShadow[i]=0;
+ }
+}
+
+void writeTo7Seg(unsigned char data){
+ if (data<=9){
+ setData(_7seg[data]);
+ genLatchClock(0x1001);
+ }
+}
+
+void genLatchClock(unsigned int mask){
+unsigned char dataLow, dataHigh;
+ dataLow=mask & 0xFF;
+ dataHigh=((mask >> 8) & 0xFF);
+ P4OUT = ~dataLow;
+ P3OUT &= ~dataHigh;
+ P3OUT |= dataHigh;
+ P4OUT = 0xFF;
+ P3OUT &= ~dataHigh;
+ P3OUT |= dataHigh;
+}
+
+void updateFloorLatch(floor){
+unsigned char dataLow, dataHigh;
+
+ dataLow=(unsigned char)(floorLatchShadow[floor]);
+ dataHigh=(unsigned char) (floorLatchShadow[floor]>>8);
+
+ setData(~dataLow);
+ genLatchClock(latchClockFloorLowPattern[floor]);
+
+ setData(~dataHigh);
+ genLatchClock(latchClockFloorHighPattern[floor]);
+}
+
+void updateMotorLatch(void){
+unsigned char i;
+ for(i=0;i<12;i++){
+ setData(~motorLatchShadow[i]);
+ genLatchClock(latchClockMotorPattern[i]);
+ }
+}
+
+unsigned char getMotorPosition(void){
+
+ if (motorLatchShadow[10]==0x3C) return 0x80;
+ if ((motorLatchShadow[7]==0xC0)&(motorLatchShadow[8]==0x03)) return 0x81;
+ if (motorLatchShadow[5]==0x78) return 0x82;
+ if ((motorLatchShadow[2]==0xC0)&(motorLatchShadow[3]==0x03)) return 0x83;
+ if (motorLatchShadow[0]==0x78) return 0x84;
+ return 0x00;
+
+}
+
+void shiftMotorUp(void){
+unsigned char i;
+ if(motorLatchShadow[0]&0x01)return;
+ for(i=0;i<11;i++){
+ motorLatchShadow[i]>>=1;
+ if (motorLatchShadow[i+1]&0x01){motorLatchShadow[i]|=0x80;}
+ }
+ motorLatchShadow[11] >>=1;
+ updateMotorLatch();
+}
+
+void shiftMotorDown(void){
+unsigned char i;
+ if (motorLatchShadow[11]&0x02)return;
+ for(i=11;i>0;i--){
+ motorLatchShadow[i]<<=1;
+ if (motorLatchShadow[i-1]&0x80){motorLatchShadow[i]|=0x01;}
+ }
+ motorLatchShadow[0] <<=1;
+ updateMotorLatch();
+}
+
+void initMotor(void){
+unsigned char i;
+ for(i=0;i<12;i++){
+ motorLatchShadow[i]=0x00;
+ }
+ motorLatchShadow[11]=0x03;
+ motorLatchShadow[10]=0xC0;
+ updateMotorLatch();
+}
+
+void writeToButtonLed(unsigned char floor, unsigned char id, unsigned char onOff){
+unsigned int data;
+ data=id;
+ data<<=10;
+ if (floor>5)return;
+ switch (onOff){
+ case ON:
+ floorLatchShadow[floor] |= data;
+ break;
+ case OFF:
+ floorLatchShadow[floor] &= ~data;
+ break;
+ case TOGGLE:
+ floorLatchShadow[floor]^=data;
+ break;
+ default:break;
+ };
+ updateFloorLatch(floor);
+}
+
+void writeToDoor(unsigned char floor, unsigned char data){
+ // clear door bits
+ // avoid array out of bound access
+ if (data > 11)return;
+ if(floor > 5)return;
+ floorLatchShadow[floor] &= ~0x03FF;
+ // set door bits according data
+ floorLatchShadow[floor] |= (doorPattern3[data] & 0x3FF);
+ updateFloorLatch(floor);
+}
+
+unsigned char getButtonStatus(unsigned char floor, unsigned int id){
+unsigned char mask = 0x01;
+unsigned char retVal=0;
+ if ((floor == 0) && (id == DOWN_BUTTON_ID)){return 0;}
+ if (id == CABINE_DOOR_BUTTON_ID){floor = 0; id=DOWN_BUTTON_ID;}
+ mask <<= floor;
+ P8OUT = mask;
+ P8DIR = mask;
+ if (P8IN & id) retVal=1;
+ P8DIR = 0x00;
+ return retVal;
+}
+
+unsigned char getFloorButtons(unsigned char floor){
+unsigned char mask = 0x01;
+ mask <<= floor;
+ P8OUT = mask;
+ P8DIR = mask;
+ mask = P8IN & 0xE0;
+ P8DIR = 0x00;
+
+ return mask;
+}
+
+void initClockSystem(void){
+ //Select DCO range 4..60Mhz
+ UCSCTL1=DCORSEL_6;
+ //enable XT1
+ P7SEL|=0x01;
+ UCSCTL6=0x01CC;
+ // wait until Clock is ok
+ while(UCSCTL7&0x0002){UCSCTL7=0;}
+
+ // DCO => appr. 50Mhz
+ // SMCLK MCLK => 25Mhz
+ UCSCTL2 = FLLD_1 + 0x2f8;
+
+ // Loop until XT1,XT2 & DCO fault flag is cleared
+ do
+ {
+ UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
+ // Clear XT2,XT1,DCO fault flags
+ SFRIFG1 &= ~OFIFG; // Clear fault flags
+ }while (SFRIFG1&OFIFG); // Test oscillator fault flag
+
+}
+
+
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.h
new file mode 100644
index 000000000..40d0048bb
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.h
@@ -0,0 +1,36 @@
+/*
+ * etPlatform.h
+ *
+ * Created on: 23.06.2012
+ * Author: junggtho
+ */
+
+#ifndef ETPLATFORM_H_
+#define ETPLATFORM_H_
+
+
+#define UP_SWITCH_LED 0x02
+#define DOWN_SWITCH_LED 0x01
+#define CABINE_SWITCH_LED 0x04
+
+#define CABINE_BUTTON_ID 0x80
+#define UP_BUTTON_ID 0x40
+#define DOWN_BUTTON_ID 0x20
+#define CABINE_DOOR_BUTTON_ID 0x10
+
+#define ON 0x01
+#define OFF 0x02
+#define TOGGLE 0x03
+
+
+void writeTo7Seg(unsigned char data);
+void writeToDoor(unsigned char floor, unsigned char data);
+unsigned char getButtonStatus(unsigned char floor, unsigned int id);
+void writeToButtonLed(unsigned char floor, unsigned char id, unsigned char onOff);
+void shiftMotorDown(void);
+void shiftMotorUp(void);
+unsigned char getMotorPosition(void);
+void toggleTestLed(void);
+
+
+#endif /* ETPLATFORM_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etTimer.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etTimer.c
new file mode 100644
index 000000000..67f193b29
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etTimer.c
@@ -0,0 +1,99 @@
+#include "msp430f5438a.h"
+#include "platform/etTimer.h"
+
+/* global timer */
+
+static etTargetTime_t targetTime;
+static etTargetTime_t lastTargetTime;
+static volatile etBool etTimer_executeFlag = FALSE;
+
+void etTimer_init(void){
+ targetTime.nSec=0;
+ targetTime.sec=0;
+ lastTargetTime.nSec=0;
+ lastTargetTime.sec=0;
+}
+
+etBool etTimer_executeNeeded(void){
+ if (etTimer_executeFlag == TRUE){
+ etTimer_executeFlag = FALSE;
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+int isTimeGreaterThanActualTime(const etTargetTime_t *t) {
+
+ _disable_interrupt();
+ if (t->sec > targetTime.sec) {
+ _enable_interrupt();
+ return 1;
+ }
+
+ if (t->sec < targetTime.sec) {
+ _enable_interrupt();
+ return 0;
+ }
+
+ if (t->nSec > targetTime.nSec) {
+ _enable_interrupt();
+ return 1;
+ }
+ else {
+ _enable_interrupt();
+ return 0;
+ }
+}
+
+uint32 getNSecFromTarget(void){
+ etTargetTime_t time;
+ getTimeFromTarget(&time);
+ return time.nSec;
+}
+
+uint32 getSecFromTarget(void){
+ etTargetTime_t time;
+ getTimeFromTarget(&time);
+ return time.sec;
+}
+
+
+void getTimeFromTarget(etTargetTime_t *t) {
+ _disable_interrupt();
+ *t = targetTime;
+ _enable_interrupt();
+}
+
+#define ET_TIMER_TIME_BASE_NS 15625000L
+#define ET_TIMER_TIME_BASE_US ET_TIMER_TIME_BASE_NS / 1000L
+#define ET_TIMER_TIME_BASE_MS ET_TIMER_TIME_BASE_US / 1000L
+
+uint32 getTimeBaseNS(void){
+ return ET_TIMER_TIME_BASE_NS;
+}
+
+uint32 getTimeBaseUS(void){
+ return ET_TIMER_TIME_BASE_US;
+}
+
+uint32 getTimeBaseMS(void){
+ return ET_TIMER_TIME_BASE_MS;
+}
+
+
+/* the timer interrupt */
+#pragma INTERRUPT(wdt_isr)
+#pragma vector=WDT_VECTOR
+void wdt_isr(void) {
+// this interrupt will be called every 15,625ms
+
+ etTimer_executeFlag = TRUE;
+ targetTime.nSec += 15625000L;
+
+ if (targetTime.nSec >= 1000000000L) {
+ targetTime.nSec -= 1000000000L;
+ targetTime.sec++;
+ }
+} // end interrupt
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etDatatypes.h
new file mode 100644
index 000000000..aa948e6b4
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etDatatypes.h
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2011 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+#ifndef _ETDATATYPES_H_
+#define _ETDATATYPES_H_
+
+/*
+ * typedefs for platform specific datatypes
+ * Version for TI MSP 430
+ *
+ * */
+
+#include <stdio.h>
+
+/* unsigned integer datatypes */
+typedef unsigned char uint8;
+typedef unsigned short int uint16;
+typedef unsigned long uint32;
+/* typedef unsigned long long uint64; */ /* not available on this platform */
+
+/* signed integer datatypes */
+typedef char int8;
+typedef short int int16;
+typedef long int32;
+/* typedef long long int64; */ /* not available on this platform */
+
+
+/* float datatypes */
+typedef float float32;
+/* typedef double float64; */ /* not available on this platform */
+
+/* boolean datatypes and values */
+typedef char bool; /* TODO: bool, Bool, Boolean, and boolean are already defined in some platforms*/
+typedef bool boolean;
+#ifndef TRUE
+ #define TRUE 1
+#endif
+#ifndef FALSE
+ #define FALSE 0
+#endif
+
+/*
+ * typedefs for eTrice Runtime and Testing
+ *
+ * */
+
+typedef int8 etInt8;
+typedef int16 etInt16;
+typedef int32 etInt32;
+
+typedef uint8 etUInt8;
+typedef uint16 etUInt16;
+typedef uint32 etUInt32;
+
+typedef bool etBool;
+
+typedef float32 etFloat32;
+
+typedef FILE* etFileHandle;
+
+typedef int8 etAddressId;
+
+#endif /* _DATATYPES_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etLogger.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etLogger.c
new file mode 100644
index 000000000..0ed0a557b
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etLogger.c
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2011 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+/*
+ * etLogger.c
+ *
+ * Created on: 16.01.2012
+ * Author: tschuetz
+ */
+
+//#define ET_LOGGER_ACTIVATE 1
+#include "debugging/etLogger.h"
+
+#include <stdarg.h>
+
+
+void etLogger_logError(const char* message){
+#ifdef ET_LOGGER_ACTIVATE
+ printf("ERROR: %s\n", message);
+#endif
+}
+
+void etLogger_logWarning(const char* message){
+#ifdef ET_LOGGER_ACTIVATE
+ printf("WARNING: %s\n", message);
+#endif
+}
+
+void etLogger_logInfo(const char* message){
+#ifdef ET_LOGGER_ACTIVATE
+ printf("INFO: %s\n", message);
+#endif
+}
+
+void etLogger_logErrorF(const char* format, ... ){
+#ifdef ET_LOGGER_ACTIVATE
+ printf("ERROR: ");
+ va_list arglist;
+ va_start( arglist, format );
+ vprintf( format, arglist );
+ va_end( arglist );
+ printf("\n");
+#endif
+}
+
+void etLogger_logWarningF(const char* format, ... ){
+#ifdef ET_LOGGER_ACTIVATE
+ printf("WARNING: ");
+ va_list arglist;
+ va_start( arglist, format );
+ vprintf( format, arglist );
+ va_end( arglist );
+ printf("\n");
+#endif
+}
+
+void etLogger_logInfoF(const char* format, ... ){
+#ifdef ET_LOGGER_ACTIVATE
+ printf("INFO: ");
+ va_list arglist;
+ va_start( arglist, format );
+ vprintf( format, arglist );
+ va_end( arglist );
+ printf("\n");
+#endif
+}
+
+etFileHandle etLogger_fopen(const char* filename, const char* mode){
+#ifdef ET_LOGGER_ACTIVATE
+ return( fopen(filename, mode) );
+#endif
+}
+
+int etLogger_fclose(etFileHandle file){
+#ifdef ET_LOGGER_ACTIVATE
+ return( fclose(file) );
+#endif
+}
+
+void etLogger_fprintf(etFileHandle file, const char* format, ... ){
+#ifdef ET_LOGGER_ACTIVATE
+ va_list arglist;
+ va_start( arglist, format );
+ vfprintf(file, format, arglist );
+ va_end( arglist );
+#endif
+}
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etGlobalFlags.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etPlatform.c
index 92df9f69b..08798627a 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etGlobalFlags.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etPlatform.c
@@ -1,28 +1,52 @@
-/*******************************************************************************
- * Copyright (c) 2012 protos software gmbh (http://www.protos.de).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * CONTRIBUTORS:
- * Thomas Schuetz (initial contribution)
- *
- *******************************************************************************/
-
-#ifndef ETGLOBALFLAGS_H_
-#define ETGLOBALFLAGS_H_
-
-/* flags for debugging */
-//#define ET_MSC_LOGGER_ACTIVATE /* needs ET_LOGGER_ACTIVATE */
-//#define ET_LOGGER_ACTIVATE
-
-#define STRUCT_ALIGN 2
-
-/* timing and scheduling */
-//#define FREQUENCY 100L
-//#define ET_RUNTIME_MAXLOOP 100000
-#define ET_RUNTIME_ENDLESS
-
-
-#endif /* ETGLOBALFLAGS_H_ */
+/*******************************************************************************
+ * Copyright (c) 2012 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+#include "msp430g2553.h"
+#include "platform/etTimer.h"
+
+
+/* forward declarations */
+
+
+/* implemenatation for eTrice interfaces*/
+
+void etUserEntry(void){
+ //Use WDT as interrupt timer
+ WDTCTL = WDTPW + 0x16;
+
+ DCOCTL = CALDCO_16MHZ;
+ BCSCTL1 = CALBC1_16MHZ;
+ BCSCTL2 = 0x00;
+ BCSCTL3 = 0x0C;
+
+ P1DIR = 0x01;
+
+ IE1 |= 1;
+
+ etTimer_init();
+
+ _enable_interrupt();
+
+
+}
+
+void etUserPreRun(void){
+ _enable_interrupt();
+}
+
+void etUserPostRun(void){ }
+void etUserExit(void){ }
+
+
+/* platform specific functions */
+
+
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etTimer.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etTimer.c
new file mode 100644
index 000000000..d3fd107ab
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etTimer.c
@@ -0,0 +1,69 @@
+#include "msp430g2553.h"
+#include "platform/etTimer.h"
+
+/* global timer */
+
+static etTargetTime_t targetTime;
+static etTargetTime_t lastTargetTime;
+static volatile etBool etTimer_executeFlag = FALSE;
+
+void etTimer_init(void){
+ targetTime.nSec=0;
+ targetTime.sec=0;
+ lastTargetTime.nSec=0;
+ lastTargetTime.sec=0;
+}
+
+etBool etTimer_executeNeeded(void){
+ if (etTimer_executeFlag == TRUE){
+ etTimer_executeFlag = FALSE;
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+uint32 getNSecFromTarget(void){
+ etTargetTime_t time;
+ getTimeFromTarget(&time);
+ return time.nSec;
+}
+
+uint32 getSecFromTarget(void){
+ etTargetTime_t time;
+ getTimeFromTarget(&time);
+ return time.sec;
+}
+
+
+void getTimeFromTarget(etTargetTime_t *t) {
+ _disable_interrupt();
+ *t = targetTime;
+ _enable_interrupt();
+}
+
+/* the timer interrupt */
+#pragma INTERRUPT(wdt_isr)
+#pragma vector=WDT_VECTOR
+
+void wdt_isr(void) {
+// this interrupt will be called every 15,625ms
+
+ static unsigned char secCounter = 0;
+ etTimer_executeFlag = TRUE;
+
+ targetTime.nSec += 15625000L;
+
+ if (targetTime.nSec >= 1000000000L) {
+ targetTime.nSec -= 1000000000L;
+ targetTime.sec++;
+ }
+ secCounter++;
+
+ if (secCounter >= 64) {
+ secCounter = 0;
+// P1OUT^=0x01;
+ }
+
+} // end interrupt
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/info.txt b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/info.txt
new file mode 100644
index 000000000..b8f84e38c
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/info.txt
@@ -0,0 +1 @@
+TI-MSP430
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h
index ef9ba469b..e3ca3c088 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h
@@ -43,7 +43,7 @@ typedef char* charPtr;
/* boolean datatypes and values */
typedef char bool; /* TODO: bool, Bool, Boolean, and boolean are already defined in some platforms*/
-//typedef bool boolean;
+typedef bool boolean;
#ifndef TRUE
#define TRUE 1
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etTimer.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etTimer.c
index e12f587c3..a0076c25a 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etTimer.c
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etTimer.c
@@ -2,7 +2,7 @@
#include <sys/time.h>
-#include "etGlobalFlags.h"
+#include "etRuntimeConfig.h"
void etTimer_init(void){
}
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/naming-convention.txt b/runtime/org.eclipse.etrice.runtime.c/src/platforms/naming-convention.txt
new file mode 100644
index 000000000..ae52add6e
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/naming-convention.txt
@@ -0,0 +1,9 @@
+Naming convention for platforms:
+<threading-type>_<processor-family and/or operating-system>_<processor or operating-system derivative>_<compiler>(_<board or application type>)
+
+<threading-type> : ST(single treaded) MT(multi-threaded)
+
+Examples:
+ST_MSP430_F5438_CCS5_EXP430F5438 : single threaded, processor-family:TI-MSP430, derivative:F5438, compiler: Code Composer Studio 5, board: EXP430F5438
+MT_POSIX_GENERIC_GCC : multi threaded, operation-system: POSIX, derivative: GENERIC, compiler: Gnu C++ Compiler
+

Back to the top