Skip to content

Commit b312efc

Browse files
committed
RTX2: Fix LWIP so it doesn't require dynamic RTX memory
1 parent f3cf7a8 commit b312efc

File tree

5 files changed

+10
-29
lines changed

5 files changed

+10
-29
lines changed

features/FEATURE_LWIP/lwip-interface/lwip-eth/arch/TARGET_Freescale/k64f_emac.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -686,11 +686,9 @@ err_t eth_arch_enetif_init(struct netif *netif)
686686
netif->linkoutput = k64f_low_level_output;
687687

688688
/* CMSIS-RTOS, start tasks */
689-
#ifdef CMSIS_OS_RTX
690689
memset(k64f_enetdata.xTXDCountSem.data, 0, sizeof(k64f_enetdata.xTXDCountSem.data));
691690
k64f_enetdata.xTXDCountSem.attr.cb_mem = k64f_enetdata.xTXDCountSem.data;
692691
k64f_enetdata.xTXDCountSem.attr.cb_size = sizeof(k64f_enetdata.xTXDCountSem.data);
693-
#endif
694692
k64f_enetdata.xTXDCountSem.id = osSemaphoreNew(ENET_TX_RING_LEN, ENET_TX_RING_LEN, &k64f_enetdata.xTXDCountSem.attr);
695693

696694
LWIP_ASSERT("xTXDCountSem creation error", (k64f_enetdata.xTXDCountSem.id != NULL));

features/FEATURE_LWIP/lwip-interface/lwip-eth/arch/TARGET_NXP/lpc17_emac.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,11 +1022,9 @@ err_t eth_arch_enetif_init(struct netif *netif)
10221022

10231023
/* CMSIS-RTOS, start tasks */
10241024
#if NO_SYS == 0
1025-
#ifdef CMSIS_OS_RTX
10261025
memset(lpc_enetdata.xTXDCountSem.data, 0, sizeof(lpc_enetdata.xTXDCountSem.data));
10271026
lpc_enetdata.xTXDCountSem.attr.cb_mem = lpc_enetdata.xTXDCountSem.data;
10281027
lpc_enetdata.xTXDCountSem.attr.cb_size = sizeof(lpc_enetdata.xTXDCountSem.data);
1029-
#endif
10301028
lpc_enetdata.xTXDCountSem.id = osSemaphoreNew(LPC_NUM_BUFF_TXDESCS, LPC_NUM_BUFF_TXDESCS, &lpc_enetdata.xTXDCountSem.attr);
10311029
LWIP_ASSERT("xTXDCountSem creation error", (lpc_enetdata.xTXDCountSem.id != NULL));
10321030

features/FEATURE_LWIP/lwip-interface/lwip-sys/arch/lwip_sys_arch.c

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,11 @@ err_t sys_mbox_new(sys_mbox_t *mbox, int queue_sz) {
125125
if (queue_sz > MB_SIZE)
126126
error("sys_mbox_new size error\n");
127127

128-
#ifdef CMSIS_OS_RTX
129128
memset(mbox->queue, 0, sizeof(mbox->queue));
130129
mbox->attr.mq_mem = mbox->queue;
131130
mbox->attr.mq_size = sizeof(mbox->queue);
132131
mbox->attr.cb_mem = mbox->obj;
133132
mbox->attr.cb_size = sizeof(mbox->obj);
134-
#endif
135133
mbox->id = osMessageQueueNew(queue_sz, sizeof(void *), &mbox->attr);
136134
return (mbox->id == NULL) ? (ERR_MEM) : (ERR_OK);
137135
}
@@ -254,11 +252,9 @@ u32_t sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg) {
254252
* err_t -- ERR_OK if semaphore created
255253
*---------------------------------------------------------------------------*/
256254
err_t sys_sem_new(sys_sem_t *sem, u8_t count) {
257-
#ifdef CMSIS_OS_RTX
258255
memset(sem->data, 0, sizeof(sem->data));
259256
sem->attr.cb_mem = sem->data;
260257
sem->attr.cb_size = sizeof(sem->data);
261-
#endif
262258
sem->id = osSemaphoreNew(UINT16_MAX, count, &sem->attr);
263259
if (sem->id == NULL)
264260
error("sys_sem_new create error\n");
@@ -325,15 +321,9 @@ void sys_sem_free(sys_sem_t *sem) {}
325321
* @param mutex pointer to the mutex to create
326322
* @return a new mutex */
327323
err_t sys_mutex_new(sys_mutex_t *mutex) {
328-
#ifdef CMSIS_OS_RTX
329-
#if defined(__MBED_CMSIS_RTOS_CA9) || defined(__MBED_CMSIS_RTOS_CM)
330324
memset(mutex->data, 0, sizeof(mutex->data));
331-
#else
332-
memset(mutex->data, 0, sizeof(int32_t)*3);
333-
#endif
334325
mutex->attr.cb_mem = mutex->data;
335326
mutex->attr.cb_size = sizeof(mutex->data);
336-
#endif
337327
mutex->id = osMutexNew(&mutex->attr);
338328
if (mutex->id == NULL)
339329
return ERR_MEM;
@@ -366,10 +356,14 @@ void sys_mutex_free(sys_mutex_t *mutex) {}
366356
* Initialize sys arch
367357
*---------------------------------------------------------------------------*/
368358
osMutexId_t lwip_sys_mutex;
359+
osMutexAttr_t lwip_sys_mutex_attr;
360+
os_mutex_t lwip_sys_mutex_obj;
369361

370362
void sys_init(void) {
371363
us_ticker_read(); // Init sys tick
372-
lwip_sys_mutex = osMutexNew(NULL);
364+
lwip_sys_mutex_attr.cb_mem = &lwip_sys_mutex_obj;
365+
lwip_sys_mutex_attr.cb_size = sizeof(lwip_sys_mutex_obj);
366+
lwip_sys_mutex = osMutexNew(&lwip_sys_mutex_attr);
373367
if (lwip_sys_mutex == NULL)
374368
error("sys_init error\n");
375369
}
@@ -467,15 +461,15 @@ sys_thread_t sys_thread_new(const char *pcName,
467461
sys_thread_t t = (sys_thread_t)&thread_pool[thread_pool_index];
468462
thread_pool_index++;
469463

470-
#ifdef CMSIS_OS_RTX
471464
t->attr.name = pcName;
472465
t->attr.priority = (osPriority_t)priority;
466+
t->attr.cb_size = sizeof(t->obj);
467+
t->attr.cb_mem = t->obj;
473468
t->attr.stack_size = stacksize;
474469
t->attr.stack_mem = malloc(stacksize);
475470
if (t->attr.stack_mem == NULL) {
476471
error("Error allocating the stack memory");
477472
}
478-
#endif
479473
t->id = osThreadNew((os_thread_func_t)thread, arg, &t->attr);
480474
if (t->id == NULL)
481475
error("sys_thread_new create error\n");

features/FEATURE_LWIP/lwip-interface/lwip-sys/arch/sys_arch.h

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ extern u8_t lwip_ram_heap[];
3030
typedef struct {
3131
osSemaphoreId_t id;
3232
osSemaphoreAttr_t attr;
33-
#ifdef CMSIS_OS_RTX
3433
char data[sizeof(os_semaphore_t)];
35-
#endif
3634
} sys_sem_t;
3735

3836
#define sys_sem_valid(x) (((*x).id == NULL) ? 0 : 1)
@@ -42,13 +40,7 @@ typedef struct {
4240
typedef struct {
4341
osMutexId_t id;
4442
osMutexAttr_t attr;
45-
#ifdef CMSIS_OS_RTX
46-
#if defined(__MBED_CMSIS_RTOS_CA9) || defined(__MBED_CMSIS_RTOS_CM)
4743
char data[sizeof(os_mutex_t)];
48-
#else
49-
int32_t data[3];
50-
#endif
51-
#endif
5244
} sys_mutex_t;
5345

5446
// === MAIL BOX ===
@@ -57,10 +49,8 @@ typedef struct {
5749
typedef struct {
5850
osMessageQueueId_t id;
5951
osMessageQueueAttr_t attr;
60-
#ifdef CMSIS_OS_RTX
6152
char queue[MB_SIZE * (sizeof(void*) + sizeof(os_message_t))];
6253
char obj[sizeof(os_message_queue_t)];
63-
#endif
6454
} sys_mbox_t;
6555

6656
#define SYS_MBOX_NULL ((uint32_t) NULL)
@@ -79,6 +69,7 @@ typedef struct {
7969
typedef struct {
8070
osThreadId_t id;
8171
osThreadAttr_t attr;
72+
char obj[sizeof(os_thread_t)];
8273
} sys_thread_data_t;
8374
typedef sys_thread_data_t* sys_thread_t;
8475

rtos/rtx2/mbed_rtx_conf.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424

2525
#include "mbed_rtx.h"
2626

27-
#define CMSIS_OS_RTX
28-
2927
#ifndef OS_STACK_SIZE
3028
#define OS_STACK_SIZE 4096
3129
#endif
3230

31+
#define OS_DYNAMIC_MEM_SIZE 0
32+
3333
#endif /* MBED_RTX_CONF_H */

0 commit comments

Comments
 (0)