Micrium v5.8 support

* OS error type change from uc OS3 to v5
 * detect if network or TCP is available
 * XMEMCMP change workaround
This commit is contained in:
Elms
2020-10-26 09:30:11 -07:00
parent 2d79e38436
commit 165cb443e7
3 changed files with 48 additions and 18 deletions

View File

@ -1232,14 +1232,23 @@ int wolfSSL_CryptHwMutexUnLock(void)
}
#elif defined(MICRIUM)
#if (OS_VERSION < 50000)
#define MICRIUM_ERR_TYPE OS_ERR
#define MICRIUM_ERR_NONE OS_ERR_NONE
#define MICRIUM_ERR_CODE(err) err
#else
#define MICRIUM_ERR_TYPE RTOS_ERR
#define MICRIUM_ERR_NONE RTOS_ERR_NONE
#define MICRIUM_ERR_CODE(err) RTOS_ERR_CODE_GET(err)
#endif
int wc_InitMutex(wolfSSL_Mutex* m)
{
OS_ERR err;
MICRIUM_ERR_TYPE err;
OSMutexCreate(m, "wolfSSL Mutex", &err);
if (err == OS_ERR_NONE)
if (MICRIUM_ERR_CODE(err) == MICRIUM_ERR_NONE)
return 0;
else
return BAD_MUTEX_E;
@ -1248,11 +1257,11 @@ int wolfSSL_CryptHwMutexUnLock(void)
int wc_FreeMutex(wolfSSL_Mutex* m)
{
#if (OS_CFG_MUTEX_DEL_EN == DEF_ENABLED)
OS_ERR err;
MICRIUM_ERR_TYPE err;
OSMutexDel(m, OS_OPT_DEL_ALWAYS, &err);
if (err == OS_ERR_NONE)
if (MICRIUM_ERR_CODE(err) == MICRIUM_ERR_NONE)
return 0;
else
return BAD_MUTEX_E;
@ -1263,11 +1272,11 @@ int wolfSSL_CryptHwMutexUnLock(void)
int wc_LockMutex(wolfSSL_Mutex* m)
{
OS_ERR err;
MICRIUM_ERR_TYPE err;
OSMutexPend(m, 0, OS_OPT_PEND_BLOCKING, NULL, &err);
if (err == OS_ERR_NONE)
if (MICRIUM_ERR_CODE(err) == MICRIUM_ERR_NONE)
return 0;
else
return BAD_MUTEX_E;
@ -1275,11 +1284,11 @@ int wolfSSL_CryptHwMutexUnLock(void)
int wc_UnLockMutex(wolfSSL_Mutex* m)
{
OS_ERR err;
MICRIUM_ERR_TYPE err;
OSMutexPost(m, OS_OPT_POST_NONE, &err);
if (err == OS_ERR_NONE)
if (MICRIUM_ERR_CODE(err) == MICRIUM_ERR_NONE)
return 0;
else
return BAD_MUTEX_E;

View File

@ -80,10 +80,15 @@ _Pragma("GCC diagnostic ignored \"-Wunused-function\"");
#define printf printk
#elif defined(MICRIUM)
#include <bsp_ser.h>
void BSP_Ser_Printf (CPU_CHAR* format, ...);
#undef printf
#define printf BSP_Ser_Printf
#include <os.h>
#if (OS_VERSION < 50000)
#include <bsp_ser.h>
void BSP_Ser_Printf (CPU_CHAR* format, ...);
#undef printf
#define printf BSP_Ser_Printf
#else
#include <stdio.h>
#endif
#elif defined(WOLFSSL_PB)
#include <stdarg.h>
int wolfssl_pb_print(const char*, ...);

View File

@ -1391,11 +1391,14 @@ extern void uITRON4_free(void *p) ;
#ifdef MICRIUM
#include <stdlib.h>
#include <os.h>
#include <net_cfg.h>
#include <net_sock.h>
#include <net_err.h>
#if defined(RTOS_MODULE_NET_AVAIL) || (APP_CFG_TCPIP_EN == DEF_ENABLED)
#include <net_cfg.h>
#include <net_sock.h>
#include <net_err.h>
#endif
#include <lib_mem.h>
#include <lib_math.h>
#include <string.h>
#define USE_FAST_MATH
#define TFM_TIMING_RESISTANT
@ -1449,10 +1452,23 @@ extern void uITRON4_free(void *p) ;
(CPU_SIZE_T)(size)))
#define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \
(void *)(psrc), (CPU_SIZE_T)(size)))
#define XMEMCMP(pmem_1, pmem_2, size) \
(((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), \
(void *)(pmem_2), \
#if (OS_VERSION < 50000)
#define XMEMCMP(pmem_1, pmem_2, size) \
(((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), \
(void *)(pmem_2), \
(CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES)
#else
// Work aroud for Micrium OS version 5.8 change in behavior
// that returns DEF_NO for 0 size compare
#define XMEMCMP(pmem_1, pmem_2, size) \
(( (size < 1 ) || \
((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), \
(void *)(pmem_2), \
(CPU_SIZE_T)(size)) == DEF_YES)) \
? 0 : 1)
#endif
#define XMEMMOVE XMEMCPY
#if (OS_CFG_MUTEX_EN == DEF_DISABLED)