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
This commit is contained in:
parent
017ed0b582
commit
a2ff9013bb
@ -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.
|
||||
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
404
configs/avr32dev1/ostest/test-result.txt
Executable file
404
configs/avr32dev1/ostest/test-result.txt
Executable file
@ -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
|
Loading…
Reference in New Issue
Block a user