From a2ff9013bb48679344b9ea90e31725fe0644051f Mon Sep 17 00:00:00 2001 From: patacongo Date: Fri, 5 Nov 2010 03:48:09 +0000 Subject: [PATCH] The AVR32 port now passes the OS test git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3075 42af7a65-404d-4744-a932-0658087f49c3 --- ChangeLog | 5 + Documentation/NuttX.html | 21 +- arch/avr/src/avr32/up_schedulesigaction.c | 4 +- configs/avr32dev1/ostest/test-result.txt | 404 ++++++++++++++++++++++ 4 files changed, 426 insertions(+), 8 deletions(-) create mode 100755 configs/avr32dev1/ostest/test-result.txt diff --git a/ChangeLog b/ChangeLog index cfbf9eee1c..6790a04c30 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1320,4 +1320,9 @@ by Michael Hrabanek. * Fix wild, consistent naming error. For some reason, I called the at32uc3* parts at91uc* everywhere. Fixed by changing lots of files. + * configs/avr32dev1/ostest - The AVR32 port now successfully passes the + examples/ostest. We have a good AVR32 port! + * configs/avr32dev1/nsh - Added a configuration to support the NuttShell + (NSH). Testing of this configuration is just beginning. + diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index 31e38abf0f..56817e3ce3 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -8,7 +8,7 @@

NuttX RTOS

-

Last Updated: October 27, 2010

+

Last Updated: November 4, 2010

@@ -1335,18 +1335,23 @@

AV32DEV1. - This port uses the www.mcuzon.com AVRDEV1 board based on the Atmel AT32UC3B0256 MCU. + This port uses the www.mcuzone.com AVRDEV1 board based on the Atmel AT32UC3B0256 MCU. This port requires a special GNU avr32 toolchain available from atmel.com website. This is a windows native toolchain and so can be used only under Cygwin on Windows.

@@ -1944,6 +1949,10 @@ nuttx-5.13 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> by Michael Hrabanek. * Fix wild, consistent naming error. For some reason, I called the at32uc3* parts at91uc* everywhere. Fixed by changing lots of files. + * configs/avr32dev1/ostest - The AVR32 port now successfully passes the + examples/ostest. We have a good AVR32 port! + * configs/avr32dev1/nsh - Added a configuration to support the NuttShell + (NSH). Testing of this configuration is just beginning. pascal-2.1 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> diff --git a/arch/avr/src/avr32/up_schedulesigaction.c b/arch/avr/src/avr32/up_schedulesigaction.c index 63bc9f1b9f..d56bb1e512 100644 --- a/arch/avr/src/avr32/up_schedulesigaction.c +++ b/arch/avr/src/avr32/up_schedulesigaction.c @@ -186,8 +186,8 @@ void up_schedule_sigaction(_TCB *tcb, sig_deliver_t sigdeliver) */ tcb->xcp.sigdeliver = sigdeliver; - tcb->xcp.saved_pc = current_regs[REG_PC]; - tcb->xcp.saved_sr = current_regs[REG_SR]; + tcb->xcp.saved_pc = tcb->xcp.regs[REG_PC]; + tcb->xcp.saved_sr = tcb->xcp.regs[REG_SR]; /* Then set up to vector to the trampoline with interrupts * disabled diff --git a/configs/avr32dev1/ostest/test-result.txt b/configs/avr32dev1/ostest/test-result.txt new file mode 100755 index 0000000000..8fe09d12f6 --- /dev/null +++ b/configs/avr32dev1/ostest/test-result.txt @@ -0,0 +1,404 @@ +examples/ostest output as of November 4, 2010 +============================================= + +stdio_test: write fd=1 +stdio_test: write fd=2 +stdio_test: Standard I/O Check: printf +user_start: Started user_main at PID=2 +user_start: Exitting +stdio_test: Standard I/O Check: fprintf to stderr + +user_main: Begin argument test +user_main: Started with argc=5 +user_main: argv[0]="" +user_main: argv[1]="Arg1" +user_main: argv[2]="Arg2" +user_main: argv[3]="Arg3" +user_main: argv[4]="Arg4" + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: /dev/null test +dev_null: Read 0 bytes from /dev/null +dev_null: Wrote 1024 bytes to /dev/null + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: mutex test +Initializing mutex +Starting thread 1 +Starting thread 2 + Thread1 Thread2 + Loops 32 32 + Errors 0 0 + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: cancel test +cancel_test: Test 1: Normal Cancelation +cancel_test: Starting thread +start_thread: Initializing mutex +start_thread: Initializing cond +start_thread: Starting thread +thread_waiter: Taking mutex +thread_waiter: Starting wait for condition +start_thread: Yielding +cancel_test: Canceling thread +cancel_test: Joining +cancel_test: waiter exited with result=ffffffff +cancel_test: PASS thread terminated with PTHREAD_CANCELED +cancel_test: Test 2: Cancelation of detached thread +cancel_test: Re-starting thread +restart_thread: Destroying cond +restart_thread: Destroying mutex +restart_thread: Re-starting thread +start_thread: Initializing mutex +start_thread: Initializing cond +start_thread: Starting thread +thread_waiter: Taking mutex +thread_waiter: Starting wait for condition +start_thread: Yielding +cancel_test: Canceling thread +cancel_test: Joining +cancel_test: PASS pthread_join failed with status=ESRCH +cancel_test: Test 3: Non-cancelable threads +cancel_test: Re-starting thread (non-cancelable) +restart_thread: Destroying cond +restart_thread: Destroying mutex +restart_thread: Re-starting thread +start_thread: Initializing mutex +start_thread: Initializing cond +start_thread: Starting thread +thread_waiter: Taking mutex +thread_waiter: Starting wait for condition +thread_waiter: Setting non-cancelable +start_thread: Yielding +cancel_test: Canceling thread +cancel_test: Joining +thread_waiter: Releasing mutex +thread_waiter: Setting cancelable +cancel_test: waiter exited with result=ffffffff +cancel_test: PASS thread terminated with PTHREAD_CANCELED + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: semaphore test +sem_test: Initializing semaphore to 0 +sem_test: Starting waiter thread 1 +sem_test: Set thread 1 priority to 191 +waiter_func: Thread 1 Started +waiter_func: Thread 1 initial semaphore value = 0 +waiter_func: Thread 1 waiting on semaphore +sem_test: Starting waiter thread 2 +sem_test: Set thread 2 priority to 128 +waiter_func: Thread 2 Started +waiter_func: Thread 2 initial semaphore value = -1 +waiter_func: Thread 2 waiting on semaphore +sem_test: Starting poster thread 3 +sem_test: Set thread 3 priority to 64 +poster_func: Thread 3 started +poster_func: Thread 3 semaphore value = -2 +poster_func: Thread 3 posting semaphore +waiter_func: Thread 1 awakened +waiter_func: Thread 1 new semaphore value = -1 +waiter_func: Thread 1 done +poster_func: Thread 3 new semaphore value = -1 +poster_func: Thread 3 semaphore value = -1 +poster_func: Thread 3 posting semaphore +waiter_func: Thread 2 awakened +waiter_func: Thread 2 new semaphore value = 0 +waiter_func: Thread 2 done +poster_func: Thread 3 new semaphore value = 0 +poster_func: Thread 3 done + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: condition variable test +cond_test: Initializing mutex +cond_test: Initializing cond +cond_test: Starting waiter +cond_test: Set thread 1 priority to 128 +waiter_thread: Started +cond_test: Starting signaler +cond_test: Set thread 2 priority to 64 +thread_signaler: Started +thread_signaler: Terminating +cond_test: signaler terminated, now cancel the waiter +cond_test: Waiter Signaler +cond_test: Loops 32 32 +cond_test: Errors 0 0 +cond_test: +cond_test: 0 times, waiter did not have to wait for data +cond_test: 0 times, data was already available when the signaler run +cond_test: 0 times, the waiter was in an unexpected state when the signaler ran + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: timed wait test +thread_waiter: Initializing mutex +timedwait_test: Initializing cond +timedwait_test: Starting waiter +timedwait_test: Set thread 2 priority to 177 +thread_waiter: Taking mutex +thread_waiter: Starting 5 second wait for condition +timedwait_test: Joining +thread_waiter: pthread_cond_timedwait timed out +thread_waiter: Releasing mutex +thread_waiter: Exit with status 0x12345678 +timedwait_test: waiter exited with result=12345678 + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: message queue test +mqueue_test: Starting receiver +mqueue_test: Set receiver priority to 128 +receiver_thread: Starting +mqueue_test: Starting sender +mqueue_test: Set sender thread priority to 64 +mqueue_test: Waiting for sender to complete +sender_thread: Starting +receiver_thread: mq_receive succeeded on msg 0 +sender_thread: mq_send succeeded on msg 0 +receiver_thread: mq_receive succeeded on msg 1 +sender_thread: mq_send succeeded on msg 1 +receiver_thread: mq_receive succeeded on msg 2 +sender_thread: mq_send succeeded on msg 2 +receiver_thread: mq_receive succeeded on msg 3 +sender_thread: mq_send succeeded on msg 3 +receiver_thread: mq_receive succeeded on msg 4 +sender_thread: mq_send succeeded on msg 4 +receiver_thread: mq_receive succeeded on msg 5 +sender_thread: mq_send succeeded on msg 5 +receiver_thread: mq_receive succeeded on msg 6 +sender_thread: mq_send succeeded on msg 6 +receiver_thread: mq_receive succeeded on msg 7 +sender_thread: mq_send succeeded on msg 7 +receiver_thread: mq_receive succeeded on msg 8 +sender_thread: mq_send succeeded on msg 8 +receiver_thread: mq_receive succeeded on msg 9 +sender_thread: mq_send succeeded on msg 9 +sender_thread: returning nerrors=0 +mqueue_test: Killing receiver +receiver_thread: mq_receive interrupted! +receiver_thread: returning nerrors=0 +mqueue_test: Canceling receiver +mqueue_test: receiver has already terminated + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: timed message queue test +timedmqueue_test: Starting sender +sender_thread: Starting +sender_thread: mq_timedsend succeeded on msg 0 +sender_thread: mq_timedsend succeeded on msg 1 +sender_thread: mq_timedsend succeeded on msg 2 +sender_thread: mq_timedsend succeeded on msg 3 +sender_thread: mq_timedsend succeeded on msg 4 +sender_thread: mq_timedsend succeeded on msg 5 +sender_thread: mq_timedsend succeeded on msg 6 +sender_thread: mq_timedsend succeeded on msg 7 +sender_thread: mq_timedsend succeeded on msg 8 +timedmqueue_test: Waiting for sender to complete +sender_thread: mq_timedsend 9 timed out as expected +sender_thread: returning nerrors=0 +timedmqueue_test: Starting receiver +receiver_thread: Starting +receiver_thread: mq_timedreceive succeeded on msg 0 +receiver_thread: mq_timedreceive succeeded on msg 1 +receiver_thread: mq_timedreceive succeeded on msg 2 +receiver_thread: mq_timedreceive succeeded on msg 3 +receiver_thread: mq_timedreceive succeeded on msg 4 +receiver_thread: mq_timedreceive succeeded on msg 5 +receiver_thread: mq_timedreceive succeeded on msg 6 +receiver_thread: mq_timedreceive succeeded on msg 7 +receiver_thread: mq_timedreceive succeeded on msg 8 +timedmqueue_test: Waiting for receiver to complete +receiver_thread: Receive 9 timed out as expected +receiver_thread: returning nerrors=0 +timedmqueue_test: Test complete + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: signal handler test +sighand_test: Initializing semaphore to 0 +sighand_test: Starting waiter task +sighand_test: Started waiter_main pid=20 +waiter_main: Waiter started +waiter_main: Unmasking signal 17 +waiter_main: Registering signal handler +waiter_main: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0 +waiter_main: Waiting on semaphore +sighand_test: Signaling pid=20 with signo=17 sigvalue=42 +wakeup_action: Received signal 17 +wakeup_action: sival_int=42 +wakeup_action: si_code=1 +wakeup_action: ucontext=0 +waiter_main: sem_wait() successfully interrupted by signal +waiter_main: done +sighand_test: done + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: POSIX timer test +timer_test: Initializing semaphore to 0 +timer_test: Unmasking signal 17 +timer_test: Registering signal handler +timer_test: oact.sigaction=0 oact.sa_flags=0 oact.sa_mask=0 +timer_test: Creating timer +timer_test: Starting timer +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=1 +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=2 +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=3 +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=4 +timer_test: Waiting on semaphore +timer_expiration: Received signal 17 +timer_expiration: sival_int=42 +timer_expiration: si_code=2 (SI_TIMER) +timer_expiration: ucontext=0 +timer_test: sem_wait() successfully interrupted by signal +timer_test: g_nsigreceived=5 +timer_test: Deleting timer +timer_test: done + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +user_main: barrier test +barrier_test: Initializing barrier +barrier_func: Thread 0 started +barrier_test: Thread 0 created +barrier_func: Thread 1 started +barrier_test: Thread 1 created +barrier_func: Thread 2 started +barrier_test: Thread 2 created +barrier_func: Thread 0 calling pthread_barrier_wait() +barrier_func: Thread 1 calling pthread_barrier_wait() +barrier_func: Thread 2 calling pthread_barrier_wait() +barrier_func: Thread 2, back with status=PTHREAD_BARRIER_SERIAL_THREAD (I AM SPECIAL) +barrier_func: Thread 0, back with status=0 (I am not special) +barrier_func: Thread 1, back with status=0 (I am not special) +barrier_func: Thread 2 done +barrier_func: Thread 0 done +barrier_func: Thread 1 done +barrier_test: Thread 0 completed with result=0 +barrier_test: Thread 1 completed with result=0 +barrier_test: Thread 2 completed with result=0 + +End of test memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 + +Final memory usage: +VARIABLE BEFORE AFTER +======== ======== ======== +arena 71a0 71a0 +ordblks 2 2 +mxordblk 4a80 4a80 +uordblks 1900 1900 +fordblks 58a0 58a0 +user_main: Exitting