aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/ARM7-AT91SAM7X-LWIP-GCC/Makefile2
-rw-r--r--demos/ARM7-AT91SAM7X-LWIP-GCC/chconf.h5
-rw-r--r--demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c12
-rw-r--r--demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.c5
-rw-r--r--demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.h5
-rw-r--r--demos/ARM7-AT91SAM7X-LWIP-GCC/lwipopts.h2
-rw-r--r--demos/ARM7-AT91SAM7X-LWIP-GCC/main.c11
7 files changed, 29 insertions, 13 deletions
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/Makefile b/demos/ARM7-AT91SAM7X-LWIP-GCC/Makefile
index e38c35681..80127d948 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/Makefile
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/Makefile
@@ -5,7 +5,7 @@
# Compiler options here.
ifeq ($(USE_OPT),)
- USE_OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu
+ USE_OPT = -O0 -ggdb -fomit-frame-pointer -mabi=apcs-gnu
endif
# C++ specific options here (added to USE_OPT).
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/chconf.h b/demos/ARM7-AT91SAM7X-LWIP-GCC/chconf.h
index 21ad75bde..e6a58ce12 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/chconf.h
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/chconf.h
@@ -339,7 +339,8 @@
#define THREAD_EXT_FIELDS \
struct { \
/* Add thread custom fields here.*/ \
- void *p_timeouts; \
+ /* Space for the LWIP sys_timeouts structure.*/ \
+ void *p_lwipspace[1]; \
};
#endif
@@ -350,7 +351,7 @@ struct { \
#if !defined(THREAD_EXT_INIT) || defined(__DOXYGEN__)
#define THREAD_EXT_INIT(tp) { \
/* Add thread initialization code here.*/ \
- currp->p_timeouts = NULL; \
+ (tp)->p_lwipspace[0] = NULL; \
}
#endif
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c
index df3a97738..329e0f8de 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c
@@ -66,14 +66,14 @@ void sys_init(void) {
sys_sem_t sys_sem_new(u8_t count) {
- sys_sem_t sem = mem_malloc(sizeof(Semaphore));
+ sys_sem_t sem = chHeapAlloc(sizeof(Semaphore));
chSemInit(sem, (cnt_t)count);
return sem;
}
void sys_sem_free(sys_sem_t sem) {
- mem_free(sem);
+ chHeapFree(sem);
}
void sys_sem_signal(sys_sem_t sem) {
@@ -97,14 +97,14 @@ u32_t sys_arch_sem_wait(sys_sem_t sem, u32_t timeout) {
sys_mbox_t sys_mbox_new(int size) {
sys_mbox_t mbox;
- mbox = mem_malloc(sizeof(Mailbox) + sizeof(msg_t) * size);
+ mbox = chHeapAlloc(sizeof(Mailbox) + sizeof(msg_t) * size);
chMBInit(mbox, (void *)(mbox + 1), size);
return mbox;
}
void sys_mbox_free(sys_mbox_t mbox) {
- mem_free(mbox);
+ chHeapFree(mbox);
}
void sys_mbox_post(sys_mbox_t mbox, void *msg) {
@@ -141,13 +141,13 @@ u32_t sys_arch_mbox_tryfetch(sys_mbox_t mbox, void **msg) {
struct sys_timeouts *sys_arch_timeouts(void) {
- return (struct sys_timeouts *)&currp->p_timeouts;
+ return (struct sys_timeouts *)currp->p_lwipspace;
}
sys_thread_t sys_thread_new(char *name, void (* thread)(void *arg),
void *arg, int stacksize, int prio) {
size_t wsz = THD_WA_SIZE(stacksize);
- void *wsp = mem_malloc(wsz);
+ void *wsp = chHeapAlloc(wsz);
if (wsp == NULL)
return NULL;
return (sys_thread_t)chThdCreateStatic(wsp, wsz, prio, (tfunc_t)thread, arg);
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.c b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.c
index 2f4869d36..7b9d483c4 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.c
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.c
@@ -79,6 +79,11 @@
#define PERIODIC_TIMER_ID 1
#define FRAME_RECEIVED_ID 2
+/**
+ * Stack area for the LWIP-MAC thread.
+ */
+WORKING_AREA(wa_lwip_thread, LWIP_THREAD_STACK_SIZE);
+
/*
* Initialization.
*/
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.h b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.h
index 0e0fd9031..85969bede 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.h
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/lwipthread.h
@@ -44,7 +44,7 @@
/** @brief MAC thread stack size. */
#if !defined(LWIP_THREAD_STACK_SIZE) || defined(__DOXYGEN__)
-#define LWIP_THREAD_STACK_SIZE 256
+#define LWIP_THREAD_STACK_SIZE 512
#endif
/** @brief Transmission timeout. */
@@ -97,9 +97,12 @@
#define LWIP_IFNAME1 's'
#endif
+extern WORKING_AREA(wa_lwip_thread, LWIP_THREAD_STACK_SIZE);
+
#ifdef __cplusplus
extern "C" {
#endif
+ msg_t lwip_thread(void *p);
#ifdef __cplusplus
}
#endif
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwipopts.h b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwipopts.h
index 28f7c6fd2..318ee6579 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwipopts.h
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwipopts.h
@@ -1010,7 +1010,7 @@
* sys_thread_new() when the thread is created.
*/
#ifndef TCPIP_THREAD_PRIO
-#define TCPIP_THREAD_PRIO (LOWPRIO)
+#define TCPIP_THREAD_PRIO (LOWPRIO + 1)
#endif
/**
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/main.c b/demos/ARM7-AT91SAM7X-LWIP-GCC/main.c
index f6c297a41..098e764a5 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/main.c
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/main.c
@@ -23,15 +23,16 @@
#include <test.h>
#include "board.h"
+#include "lwipthread.h"
static WORKING_AREA(waThread1, 64);
static msg_t Thread1(void *arg) {
while (TRUE) {
- palSetPad(IOPORT2, PIOB_LCD_BL);
- chThdSleepMilliseconds(100);
palClearPad(IOPORT2, PIOB_LCD_BL);
chThdSleepMilliseconds(900);
+ palSetPad(IOPORT2, PIOB_LCD_BL);
+ chThdSleepMilliseconds(100);
}
return 0;
}
@@ -53,6 +54,12 @@ int main(int argc, char **argv) {
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
/*
+ * Creates the LWIP threads.
+ */
+ chThdCreateStatic(wa_lwip_thread, LWIP_THREAD_STACK_SIZE, LOWPRIO,
+ lwip_thread, NULL);
+
+ /*
* Normal main() thread activity.
*/
while (TRUE) {