summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-11-05 03:48:09 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-11-05 03:48:09 +0000
commit419defa13318a3ef02b05e1b8925f0aab081fd6f (patch)
treeb0733c649385a97b7a78f28871c3170def36f45f
parent553a6de16c1865d6c4c75f4df2b885e10555f4d9 (diff)
downloadnuttx-419defa13318a3ef02b05e1b8925f0aab081fd6f.tar.gz
nuttx-419defa13318a3ef02b05e1b8925f0aab081fd6f.tar.bz2
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
-rw-r--r--nuttx/ChangeLog5
-rw-r--r--nuttx/Documentation/NuttX.html21
-rw-r--r--nuttx/arch/avr/src/avr32/up_schedulesigaction.c4
-rwxr-xr-xnuttx/configs/avr32dev1/ostest/test-result.txt404
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 &lt;spudmonkey@racsa.co.cr&gt;
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 &lt;spudmonkey@racsa.co.cr&gt;
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