Each thread is started with 192 bytes of stack. This is very low and doesn't provide much space for local variables.
00001 00083 #include <stdio.h> 00084 #include <io.h> 00085 00086 #include <cfg/arch.h> 00087 #include <dev/board.h> 00088 00089 #include <sys/thread.h> 00090 #include <sys/timer.h> 00091 00092 /* 00093 * High priority thread. 00094 */ 00095 THREAD(Thread1, arg) 00096 { 00097 /* 00098 * Endless loop in high priority thread. 00099 */ 00100 NutThreadSetPriority(16); 00101 for (;;) { 00102 putchar('H'); 00103 NutSleep(125); 00104 } 00105 } 00106 00107 /* 00108 * Low priority thread. 00109 */ 00110 THREAD(Thread2, arg) 00111 { 00112 /* 00113 * Endless loop in low priority thread. 00114 */ 00115 NutThreadSetPriority(128); 00116 for (;;) { 00117 putchar('L'); 00118 NutSleep(125); 00119 } 00120 } 00121 00122 /* 00123 * Main application thread. 00124 */ 00125 int main(void) 00126 { 00127 u_long baud = 115200; 00128 00129 /* 00130 * Register the UART device, open it, assign stdout to it and set 00131 * the baudrate. 00132 */ 00133 NutRegisterDevice(&DEV_UART, 0, 0); 00134 freopen(DEV_UART_NAME, "w", stdout); 00135 _ioctl(_fileno(stdout), UART_SETSPEED, &baud); 00136 00137 puts("\nThread Test"); 00138 00139 /* 00140 * Start two additional threads. All threads are started with 00141 * priority 64. 00142 */ 00143 NutThreadCreate("t1", Thread1, 0, 512); 00144 NutThreadCreate("t2", Thread2, 0, 512); 00145 00146 /* 00147 * Endless loop in main thread. 00148 */ 00149 for (;;) { 00150 putchar('M'); 00151 NutSleep(125); 00152 } 00153 }