diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2010-11-05 03:48:09 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2010-11-05 03:48:09 +0000 |
commit | 419defa13318a3ef02b05e1b8925f0aab081fd6f (patch) | |
tree | b0733c649385a97b7a78f28871c3170def36f45f /nuttx | |
parent | 553a6de16c1865d6c4c75f4df2b885e10555f4d9 (diff) | |
download | px4-nuttx-419defa13318a3ef02b05e1b8925f0aab081fd6f.tar.gz px4-nuttx-419defa13318a3ef02b05e1b8925f0aab081fd6f.tar.bz2 px4-nuttx-419defa13318a3ef02b05e1b8925f0aab081fd6f.zip |
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
Diffstat (limited to 'nuttx')
-rw-r--r-- | nuttx/ChangeLog | 5 | ||||
-rw-r--r-- | nuttx/Documentation/NuttX.html | 21 | ||||
-rw-r--r-- | nuttx/arch/avr/src/avr32/up_schedulesigaction.c | 4 | ||||
-rwxr-xr-x | nuttx/configs/avr32dev1/ostest/test-result.txt | 404 |
4 files changed, 426 insertions, 8 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog index cfbf9eee1..6790a04c3 100644 --- a/nuttx/ChangeLog +++ b/nuttx/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/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html index 31e38abf0..56817e3ce 100644 --- a/nuttx/Documentation/NuttX.html +++ b/nuttx/Documentation/NuttX.html @@ -8,7 +8,7 @@ <tr align="center" bgcolor="#e4e4e4"> <td> <h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1> - <p>Last Updated: October 27, 2010</p> + <p>Last Updated: November 4, 2010</p> </td> </tr> </table> @@ -1335,18 +1335,23 @@ <td> <p> <b>AV32DEV1</b>. - 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. </p> <ul> <p> <b>STATUS:</b> - This port is currently under development. + This port is nearing he completion of development. All code is complete for the basic NuttX port including header files for all AT32UC3* peripherals. - Testing of this port is underway now. - The untest AVR32 is present in the 5.12 release of NuttX. - It is hoped that the first, verified AVR32 port will be released in version 5.13 of NuttX. + The untested AVR32 code was present in the 5.12 release of NuttX. + Since then, the basic RTOS port has solidified; + the port successfully passes the NuttX OS test (examples/ostest). + A NuttShell (NSH) configuration is in place see the <a href="http://www.nuttx.org/NuttShell.html">NSH User Guide</a>) + and is under test now. + The basic, verified port will be released in NuttX-5.13. + A complete port will include drivers for additional AVR32 UC3 devices -- like SPI and USB --- and will be available in a later release, + time permitting. </p> </ul> </td> @@ -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/nuttx/arch/avr/src/avr32/up_schedulesigaction.c b/nuttx/arch/avr/src/avr32/up_schedulesigaction.c index 63bc9f1b9..d56bb1e51 100644 --- a/nuttx/arch/avr/src/avr32/up_schedulesigaction.c +++ b/nuttx/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/nuttx/configs/avr32dev1/ostest/test-result.txt b/nuttx/configs/avr32dev1/ostest/test-result.txt new file mode 100755 index 000000000..8fe09d12f --- /dev/null +++ b/nuttx/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]="<noname>"
+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
|