diff --git a/ide/IAR-EWARM/Projects/lib/wolfSSH-Lib.ewp b/ide/IAR-EWARM/Projects/lib/wolfSSH-Lib.ewp
index c47eac1..62ac251 100644
--- a/ide/IAR-EWARM/Projects/lib/wolfSSH-Lib.ewp
+++ b/ide/IAR-EWARM/Projects/lib/wolfSSH-Lib.ewp
@@ -1,1971 +1,2152 @@
-
-
+
- 2
-
- Debug
-
- ARM
-
- 1
-
- General
- 3
-
- 24
- 1
+ 3
+
+ Debug
+
+ ARM
+
1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ICCARM
- 2
-
- 31
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- AARM
- 2
-
- 9
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- OBJCOPY
- 0
-
- 1
- 1
- 1
-
-
-
-
-
-
-
-
- CUSTOM
- 3
-
-
-
- 0
-
-
-
- BICOMP
- 0
-
-
-
- BUILDACTION
- 1
-
-
-
-
-
-
- ILINK
- 0
-
- 18
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IARCHIVE
- 0
-
- 0
- 1
- 1
-
-
-
-
-
-
- BILINK
- 0
-
-
-
-
- Release
-
- ARM
-
- 0
-
- General
- 3
-
- 24
- 1
+
+ General
+ 3
+
+ 31
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ICCARM
+ 2
+
+ 36
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AARM
+ 2
+
+ 10
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OBJCOPY
+ 0
+
+ 1
+ 1
+ 1
+
+
+
+
+
+
+
+
+ CUSTOM
+ 3
+
+
+
+ 0
+
+
+
+ BICOMP
+ 0
+
+
+
+ BUILDACTION
+ 1
+
+
+
+
+
+
+ ILINK
+ 0
+
+ 23
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IARCHIVE
+ 0
+
+ 0
+ 1
+ 1
+
+
+
+
+
+
+ BILINK
+ 0
+
+
+
+
+ Release
+
+ ARM
+
0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ICCARM
- 2
-
- 31
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- AARM
- 2
-
- 9
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- OBJCOPY
- 0
-
- 1
- 1
- 0
-
-
-
-
-
-
-
-
- CUSTOM
- 3
-
-
-
- 0
-
-
-
- BICOMP
- 0
-
-
-
- BUILDACTION
- 1
-
-
-
-
-
-
- ILINK
- 0
-
- 18
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IARCHIVE
- 0
-
- 0
- 1
- 0
-
-
-
-
-
-
- BILINK
- 0
-
-
-
-
- config
-
- $PROJ_DIR$\..\user_settings.h
-
-
-
- src
-
- $PROJ_DIR$\..\..\..\..\src\internal.c
-
-
- $PROJ_DIR$\..\..\..\..\src\io.c
-
-
- $PROJ_DIR$\..\..\..\..\src\keygen.c
-
-
- $PROJ_DIR$\..\..\..\..\src\log.c
-
-
- $PROJ_DIR$\..\..\..\..\src\port.c
-
-
- $PROJ_DIR$\..\..\..\..\src\ssh.c
-
-
- $PROJ_DIR$\..\..\..\..\src\wolfscp.c
-
-
- $PROJ_DIR$\..\..\..\..\src\wolfsftp.c
-
-
- $PROJ_DIR$\..\..\..\..\src\wolfterm.c
-
-
+
+ General
+ 3
+
+ 31
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ICCARM
+ 2
+
+ 36
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AARM
+ 2
+
+ 10
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OBJCOPY
+ 0
+
+ 1
+ 1
+ 0
+
+
+
+
+
+
+
+
+ CUSTOM
+ 3
+
+
+
+ 0
+
+
+
+ BICOMP
+ 0
+
+
+
+ BUILDACTION
+ 1
+
+
+
+
+
+
+ ILINK
+ 0
+
+ 23
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IARCHIVE
+ 0
+
+ 0
+ 1
+ 0
+
+
+
+
+
+
+ BILINK
+ 0
+
+
+
+
+ config
+
+ $PROJ_DIR$\..\user_settings.h
+
+
+
+ src
+
+ $PROJ_DIR$\..\..\..\..\src\internal.c
+
+
+ $PROJ_DIR$\..\..\..\..\src\io.c
+
+
+ $PROJ_DIR$\..\..\..\..\src\keygen.c
+
+
+ $PROJ_DIR$\..\..\..\..\src\log.c
+
+
+ $PROJ_DIR$\..\..\..\..\src\port.c
+
+
+ $PROJ_DIR$\..\..\..\..\src\ssh.c
+
+
+ $PROJ_DIR$\..\..\..\..\src\wolfscp.c
+
+
+ $PROJ_DIR$\..\..\..\..\src\wolfsftp.c
+
+
+ $PROJ_DIR$\..\..\..\..\src\wolfterm.c
+
+
-
-
diff --git a/ide/IAR-EWARM/Projects/myFilesystem.c b/ide/IAR-EWARM/Projects/myFilesystem.c
new file mode 100644
index 0000000..b9b14ca
--- /dev/null
+++ b/ide/IAR-EWARM/Projects/myFilesystem.c
@@ -0,0 +1,137 @@
+/* dummy_filesystem.c
+ *
+ * Copyright (C) 2014-2020 wolfSSL Inc.
+ *
+ * This file is part of wolfSSH.
+ *
+ * wolfSSH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * wolfSSH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with wolfSSH. If not, see .
+ */
+
+
+#ifdef HAVE_CONFIG_H
+ #include
+#endif
+
+#include
+#include
+#include
+
+#ifdef WOLFSSH_USER_FILESYSTEM
+
+#include "myFilesystem.h"
+
+int dummy_wfopen(FILE **f, const char *n, const char *m){
+ (void) n; (void) m; (void)f;
+ return NULL;
+}
+
+int dummy_fclose(FILE *f) {
+ (void) f;
+ return 0;
+}
+
+size_t dummy_fread(void *b, size_t s, size_t n, FILE *f) {
+ (void) b; (void) s; (void) n; (void) f;
+ return 0;
+}
+size_t dummy_fwrite(const void *b, size_t s, size_t n, FILE *f) {
+ (void) b; (void) s; (void) n; (void) f;
+ return 0;
+}
+
+int dummy_fseek(FILE *f, long int p, int m) {
+ (void) f; (void) p; (void) m;
+ return 0;
+}
+long int dummy_ftell(FILE *f) {
+ (void) f;
+ return 0;
+}
+void dummy_rewind(FILE *f) {
+ (void) f;
+}
+
+ #define WFD int
+
+int dummy_open (const char* n, int f, int m) {
+ (void) f; (void) n; (void) m;
+ return 0;
+}
+
+int dummy_close(int f) {
+ (void) f;
+ return 0;
+}
+
+size_t dummy_pread (int f, void* b, size_t c, off_t *o) {
+ (void) f; (void) b; (void) c; (void)o;
+ return 0;
+}
+
+size_t dummy_pwrite (int f, void* b, size_t c, off_t *o) {
+ (void) f; (void) b; (void) c; (void)o;
+ return 0;
+}
+
+char *dummy_getcwd(char *f, size_t l){
+ (void) f; (void) l;
+ return 0;
+}
+int dummy_rmdir(const char *p){
+ (void) p;
+ return 0;
+}
+
+int dummy_mkdir(const char *p, mode_t m) {
+ (void) p; (void) m;
+ return 0;
+}
+int dummy_remove(const char *p){
+ (void) p;
+ return 0;
+}
+int dummy_rename(const char *p, const char *np){
+ (void) p; (void)np;
+ return 0;
+}
+
+int dummy_stat(const char *p, stat_t *b) {
+ (void) p; (void)b;
+ return 0;
+}
+int dummy_lstat(const char *p, stat_t *b) {
+ (void) p; (void)b;
+ return 0;
+}
+
+int dummy_chmod(const char *p, mode_t m) {
+ (void) p; (void)m;
+ return 0;
+}
+
+int SFTP_GetAttributes(void* fs, const char* fileName,
+ void* atr, byte link, void* heap) {
+ (void)fs; (void)fileName; (void)atr; (void)link; (void)heap;
+ return 0;
+
+}
+
+int SFTP_GetAttributes_Handle(void* ssh, byte* handle, int handleSz,
+ void* atr) {
+ (void)ssh; (void)handle; (void)handleSz;
+
+ return 0;
+}
+
+#endif
diff --git a/ide/IAR-EWARM/Projects/myFilesystem.h b/ide/IAR-EWARM/Projects/myFilesystem.h
new file mode 100644
index 0000000..d7fa37e
--- /dev/null
+++ b/ide/IAR-EWARM/Projects/myFilesystem.h
@@ -0,0 +1,98 @@
+/* dummy_filesystem.h
+ *
+ * Copyright (C) 2014-2020 wolfSSL Inc.
+ *
+ * This file is part of wolfSSH.
+ *
+ * wolfSSH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * wolfSSH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with wolfSSH. If not, see .
+ */
+
+
+#ifndef DUMMY_FILESYSTEM_H
+#define DUMMY_FILESYSTEM_H
+
+#ifdef WOLFSSH_USER_FILESYSTEM
+ typedef unsigned int off_t;
+ typedef int mode_t;
+ #define WFILE int
+ #define WFOPEN(f,n,m) dummy_wfopen((f),(n),(m))
+ #define WFCLOSE(f) dummy_fclose(f)
+ #define WFREAD(b,s,a,f) dummy_fread((b),(s),(a),(f))
+ #define WFWRITE(b,s,a,f) dummy_fwrite((b),(s),(a),(f))
+ #define WFSEEK(s,o,w) dummy_fseek((s),(o),(w))
+ #define WFTELL(s) dummy_ftell((s))
+ #define WREWIND(s) dummy_rewind((s))
+ #define WSEEK_END SEEK_END
+ #define WBADFILE NULL
+ #define WS_DELIM '/'
+
+ #define WFD int
+ typedef int FILE;
+
+enum {
+ WOLFSSH_O_RDWR, WOLFSSH_O_RDONLY, WOLFSSH_O_WRONLY,
+ WOLFSSH_O_APPEND, WOLFSSH_O_CREAT, WOLFSSH_O_TRUNC, WOLFSSH_O_EXCL
+} ;
+
+ #define WOPEN(p, m, f) dummy_open(p, m, f)
+ #define WCLOSE(f) dummy_close(f)
+ #define WPREAD(f, b, c, o) dummy_pread(f, b, c, o)
+ #define WPWRITE(f, b, c, o) dummy_pwrite(f, b, c, o)
+ #define WGETCWD(f, b, l) dummy_getcwd(b, l)
+ #define WRMDIR(f, p) dummy_rmdir(p)
+ #define WMKDIR(f, p, m) dummy_mkdir(p, m)
+
+ #define WREMOVE(fs,d) dummy_remove((d))
+ #define WRENAME(fs,o,n) dummy_rename((o),(n))
+
+ #define WSTAT_T stat_t
+ typedef struct { int i; } stat_t;
+
+ #define WSTAT(p,b) dummy_stat((b),(p))
+ #define WLSTAT(p,b) dummy_lstat((b),(p))
+ #define WCHMOD(fs,f,m) dummy_chmod((f),(m))
+
+int dummy_wfopen(FILE **f, const char *n, const char *m);
+int dummy_fclose(FILE *f);
+size_t dummy_fread(void *b, size_t s, size_t n, FILE *f);
+size_t dummy_fwrite(const void *b, size_t s, size_t n, FILE *f);
+int dummy_fseek(FILE *f, long int p, int m);
+long dummy_ftell(FILE *f);
+void dummy_rewind(FILE *f);
+
+int dummy_open (const char* n, int f, int m);
+int dummy_close(int f);
+size_t dummy_pread (int f, void* b, size_t c, off_t *o);
+size_t dummy_pwrite (int f, void* b, size_t c, off_t *o);
+char *dummy_getcwd(char *f, size_t l);
+int dummy_rmdir(const char *p);
+int dummy_mkdir(const char *p, mode_t m);
+int dummy_remove(const char *p);
+int dummy_rename(const char *p, const char *np);
+int dummy_stat(const char *p, stat_t *b);
+int dummy_lstat(const char *p, stat_t *b);
+
+int dummy_chmod(const char *p, mode_t m);
+
+#define WFD int
+enum { O_RDWR, O_RDONLY, O_WRONLY, O_APPEND, O_CREAT, O_TRUNC, O_EXCL } ;
+
+int SFTP_GetAttributes(void* fs, const char* fileName,
+ void* atr, byte link, void* heap);
+int SFTP_GetAttributes_Handle(void* ssh, byte* handle, int handleSz,
+ void* atr);
+
+#endif /* WOLFSSH_USER_FILESYSTEM */
+
+#endif
\ No newline at end of file
diff --git a/ide/IAR-EWARM/Projects/user_settings.h b/ide/IAR-EWARM/Projects/user_settings.h
index 3d4029e..3ab271b 100644
--- a/ide/IAR-EWARM/Projects/user_settings.h
+++ b/ide/IAR-EWARM/Projects/user_settings.h
@@ -1,39 +1,68 @@
-#define NO_MAIN_DRIVER
-#define BENCH_EMBEDDED
-#define NO_WRITEV
-#define WOLFSSL_USER_IO
-#define NO_DEV_RANDOM
-#define USE_CERT_BUFFERS_2048
-#define WOLFSSL_USER_CURRTIME
-#define SIZEOF_LONG_LONG 8
-#define NO_WOLFSSL_DIR
-#define WOLFSSL_NO_CURRDIR
-#define NO_WOLF_C99
-#define NO_MULTIBYTE_PRINT
-
-#define XVALIDATEDATE(d, f,t) (0)
-#define WOLFSSL_USER_CURRTIME /* for benchmark */
-
-#define WOLFSSL_GENSEED_FORTEST /* Warning: define your own seed gen */
-
-#define TFM_TIMING_RESISTANT
-#define ECC_TIMING_RESISTANT
-#define WC_RSA_BLINDING
-
-#define SINGLE_THREADED /* or define RTOS option */
-/* #define WOLFSSL_CMSIS_RTOS */
-#define NO_FILESYSTEM
-
-/* #define NO_DH */
-#define HAVE_AESGCM
-#define WOLFSSL_SHA512
-#define HAVE_ECC
-#define HAVE_CURVE25519
-#define CURVE25519_SMALL
-#define HAVE_ED25519
-
-#define WOLFSSH_USER_IO
-#define WOLFSSL_USER_IO
-
-#define WOLFSSH_LOG_PRINTF
-#define WOLFSSL_LOG_PRINTF
+#ifndef USER_SETTINGS_H
+#define USER_SETTINGS_H
+
+#define BENCH_EMBEDDED
+#define NO_WRITEV
+#define WOLFSSL_USER_IO
+#define NO_DEV_RANDOM
+#define USE_CERT_BUFFERS_2048
+#define WOLFSSL_USER_CURRTIME
+#define SIZEOF_LONG_LONG 8
+#define NO_WOLFSSL_DIR
+#define WOLFSSL_NO_CURRDIR
+#define NO_WOLF_C99
+#define NO_MULTIBYTE_PRINT
+
+#define XVALIDATEDATE(d, f,t) (0)
+#define WOLFSSL_USER_CURRTIME /* for benchmark */
+
+#define WOLFSSL_GENSEED_FORTEST /* Warning: define your own seed gen */
+
+#define TFM_TIMING_RESISTANT
+#define ECC_TIMING_RESISTANT
+#define WC_RSA_BLINDING
+
+#define SINGLE_THREADED /* or define RTOS option */
+#define WOLFSSH_THREAD
+typedef unsigned int THREAD_RETURN;
+
+/* #define WOLFSSL_CMSIS_RTOS */
+/* #define NO_FILESYSTEM */
+
+/* #define NO_DH */
+#define HAVE_AESGCM
+#define WOLFSSL_SHA512
+#define HAVE_ECC
+#define HAVE_CURVE25519
+#define CURVE25519_SMALL
+#define HAVE_ED25519
+
+#define WOLFSSH_USER_IO
+#define WOLFSSL_USER_IO
+
+#define WOLFSSH_SFTP
+
+#define WOLFSSH_USER_FILESYSTEM
+#define WOLFSSL_USER_FILESYSTEM
+#define NO_WOLFSSH_DIR
+
+/* To be defined for the target Socket API */
+#define WSTARTTCP()
+#define WCLOSESOCKET(s)
+#define ChangeToWolfSshRoot(a)
+
+typedef int SOCKADDR_IN_T;
+
+#define WOLFSSH_LOG_PRINTF
+#define WOLFSSL_LOG_PRINTF
+#define XFPRINTF(err, ... ) printf(__VA_ARGS__)
+#define err_sys(...) printf(__VA_ARGS__)
+
+enum {
+ WS_SELECT_FAIL,
+ WS_SELECT_TIMEOUT,
+ WS_SELECT_RECV_READY,
+ WS_SELECT_ERROR_READY
+};
+
+#endif
diff --git a/ide/IAR-EWARM/include.am b/ide/IAR-EWARM/include.am
new file mode 100644
index 0000000..d49b81f
--- /dev/null
+++ b/ide/IAR-EWARM/include.am
@@ -0,0 +1,13 @@
+# vim:ft=automake
+# included from Top Level Makefile.am
+# All paths should be given relative to the root
+
+EXTRA_DIST+= ide/IAR-EWARM/Projects/test_user_io.h
+EXTRA_DIST+= ide/IAR-EWARM/Projects/user_settings.h
+EXTRA_DIST+= ide/IAR-EWARM/Projects/lib/wolfSSH-Lib.ewp
+EXTRA_DIST+= ide/IAR-EWARM/Projects/lib/wolfSSH-Lib.ewd
+EXTRA_DIST+= ide/IAR-EWARM/Projects/echoserver/echoserver.ewp
+EXTRA_DIST+= ide/IAR-EWARM/Projects/echoserver/echoserver.ewd
+EXTRA_DIST+= ide/IAR-EWARM/Projects/myFilesystem.c
+EXTRA_DIST+= ide/IAR-EWARM/Projects/myFilesystem.h
+EXTRA_DIST+= ide/IAR-EWARM/Projects/README.md
diff --git a/ide/include.am b/ide/include.am
index 22d583a..f0caa18 100644
--- a/ide/include.am
+++ b/ide/include.am
@@ -5,5 +5,6 @@
include ide/winvs/include.am
include ide/CSBENCH/include.am
include ide/MQX/include.am
+include ide/IAR-EWARM/include.am
EXTRA_DIST += ide/Renesas