diff --git a/ChangeLog b/ChangeLog
index b2794cf70e..d2ae952ac7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1265,7 +1265,7 @@
are after this point, but really causes problems if you want to handle
data and prefectch aborts which are within this zeroed region.
-5.11 2010-xx-xx Gregory Nutt Last Updated: September 28, 2010 Last Updated: October 1, 2010 nuttx-5.10 Release Notes:
+ nuttx-5.11 Release Notes:
- This 57th release of NuttX, Version 5.10, was made on September 7, 2010 and is available for download from the
+ This 58th release of NuttX, Version 5.11, was made on October 1, 2010 and is available for download from the
SourceForge website.
The change log associated with the release is available here.
Unreleased changes after this release are available in CVS.
These unreleased changes are listed here.
- This release includes a combination of some new features as well as several bugfixes.
- New features include:
+ This is primarily a bugfix release and includes some important corrections to the code:
@@ -772,72 +772,39 @@
-
NuttX RTOS
-
+
+ Plus less critical bugfixes as detailed in the ChangeLog. New features + include: +
CONFIG_APP_DIR
.
- Generalized the way in which applications are built and linked with NuttX.
- The new configuration CONFIG_APP_DIR
replaces CONFIG_EXAMPLE
.
- CONFIG_EXAMPLE
used to identify the sub-directory within the NuttX examples/
directory that held the example application to be built.
- That made it awkward to configure to build an application that resided outside of the NuttX examples/
directory.
- CONFIG_APP_DIR
is more general;
- it can be used to refer to any directory containing the application to be built.
-
- For people who have their own configurations and/or Makefiles, you will need to make a couple of changes:
-
-
- CONFIG_EXAMPLE=foobar
with CONFIG_APP_DIR=examples/foobar
in all of the configuration files.
- examples/$(CONFIG_EXAMPLE)
with $(CONFIG_APP_DIR)
- lib$(CONFIG_EXAMPLE)$(LIBEXT)
with libapp$(LIBEXT)
in your Makefiles.
- CONFIG_EXAMPLE
.
-
-nuttx-5.10 2010-09-07 Gregory Nutt <spudmonkey@racsa.co.cr> +nuttx-5.11 2010-10-01 Gregory Nutt <spudmonkey@racsa.co.cr> - * configs/ea3131/locked - Create logic to support a two pass build - process: The first pass forces critical logic into the locked text - region, the second pass builds the NuttX executable more-or-less as - normal. - * Makefile, arch/arm/src/Makefile, configs/ea3131 - Add logic to - support a two-pass final link. This logic is only in place in - the arch/arm/src/Makefile for now. - * arch/arm/src/lpc17xx/lpc17_internal.h - Add missing parentheses in - macros definitions (patch submitted by Tiago Maluta). - * Documents/NuttxPortingGuide.html, configs/README.txt, etc. - - Replaced CONFIG_EXAMPLE with CONFIG_APP_DIR (see documents for - desciption). This allows NuttX application code to be built - outside of the examples/ directory. - - For people who have their own configurations and/or Makefiles, - you will need to make a couple of changes: - - - Replace all occurrences of CONFIG_EXAMPLE=foobar with - CONFIG_APP_DIR=examples/foobar in all of the configuration - files. - - Replace any occurrences of examples/$(CONFIG_EXAMPLE) with - $(CONFIG_APP_DIR) - - Replace any occurrences of lib$(CONFIG_EXAMPLE)$(LIBEXT) - with libapp$(LIBEXT) in your Makefiles. - - Check any other occurrences of CONFIG_EXAMPLE. - - * arch/arm/src/lpc313x/lpc313x_spi.c - Fix compilation error when - when CONFIG_DEBUG is enabled. - * arch/arm/src/lm3s and arch/arm/include/lm3s - Support for the - lm3s8962 contributed by Larry Arnold. - * configs/lm328962-ek - Support for the TI/Stellaris EKC-LM3S8962 - board (also contributed by Larry Arnold). - * arch/arm/src/lpc313x/lpc313x_boot.c - The call to lpc313x_boardinitialized() - should not be conditioned on CONFIG_ARCH_LEDs being defined! - * arch/arm/src/lpc313x/ - APB0 and APB1 cannot lie in different - sections; they are too close together. - * arch/arm/src/lpc313x/lpc13x_boot.c - Resetting all of the clocking - had a side effect of wiping out the first 6 words of memory where the - interrupt vectors are located (and also not resetting the fractional - dividers). This is not usually noticeable because the IRQ vectors - are after this point, but really causes problems if you want to handle - data and prefectch aborts which are within this zeroed region. + * configs/ea3131/src/up_fillpage.c - Added new configuration item + CONFIG_PAGING_BINPATH. If CONFIG_PAGING_BINPATH is defined, then it + is the full path to a file on a mounted file system that contains + a binary image of the NuttX executable. Pages will be filled by + reading from offsets into this file that correspond to virtual + fault addresses. up_fillpage.c implements logic to perform page + files using the CONFIG_PAGING_BINPATH file. + * configs/mbed - Add configuration to support the mbed.org LPC1768 + board (Contributed by Dave Marples). + * sched/sem_wait.c and sem_waitirq.c - Eliminate a race condition + that can occur when a semaphore wait is interrupt by a signal. + (see email thread: http://tech.groups.yahoo.com/group/nuttx/message/530) + * drivers/mtd/at45db.c - Add a driver for the Atmel AT45DB161D 4Mbit + SPI FLASH part (untested on initial check-in). + * arch/arm/src/lm3s and arch/arm/include/lm3s - Corrections for the + lm3s8962 port contributed by Larry Arnold. That port is purported + to work correctly with these changes in place. + * examples/ostest/prioinherit.c - Need to reinitialize globals if + test is ran repeatedly in a loop. + * configs/ez80f910200zco - Updated to used ZDS-II 4.11.1 pascal-2.0 2009-12-21 Gregory Nutt <spudmonkey@racsa.co.cr> @@ -1960,27 +1905,7 @@ buildroot-1.8 2009-12-21 <spudmonkey@racsa.co.cr>
-nuttx-5.11 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> - - * configs/ea3131/src/up_fillpage.c - Added new configuration item - CONFIG_PAGING_BINPATH. If CONFIG_PAGING_BINPATH is defined, then it - is the full path to a file on a mounted file system that contains - a binary image of the NuttX executable. Pages will be filled by - reading from offsets into this file that correspond to virtual - fault addresses. up_fillpage.c implements logic to perform page - files using the CONFIG_PAGING_BINPATH file. - * configs/mbed - Add configuration to support the mbed.org LPC1768 - board (Contributed by Dave Marples). - * sched/sem_wait.c and sem_waitirq.c - Eliminate a race condition - that can occur when a semaphore wait is interrupt by a signal. - (see email thread: http://tech.groups.yahoo.com/group/nuttx/message/530) - * drivers/mtd/at45db.c - Add a driver for the Atmel AT45DB161D 4Mbit - SPI FLASH part (untested on initial check-in). - * arch/arm/src/lm3s and arch/arm/include/lm3s - Corrections for the - lm3s8962 port contributed by Larry Arnold. That port is purported - to work correctly with these changes in place. - * examples/ostest/prioinherit.c - Need to reinitialize globals if - test is ran repeatedly in a loop. +nuttx-5.12 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> pascal-2.1 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> diff --git a/ReleaseNotes b/ReleaseNotes index 8120cf14f5..e88b4d79e7 100644 --- a/ReleaseNotes +++ b/ReleaseNotes @@ -1413,3 +1413,21 @@ some new features as well as several bugfixes. New features include: * Several bugfixes are included as well as code changes to eliminate some warnings. See the ChangeLog for details. + +nuttx-5.11 +^^^^^^^^^^ + +This is the 58th release of NuttX. This is a bugfix release. + + * One very important bug fixes a race condition that can occur using + semaphores that can be awakened by signals. Under this particular + race condition, a task could hang waiting for a semaphore. + * Corrections to lm3s8962 port contributed by Larry Arnold. That + port is purported to work correctly with these changes in place. + +Plus less critical bugfixes as detailed in the ChangeLog. New features +include: + + * A new configuration to support the mbed.org LPC1768 board (Contributed + by Dave Marples), and + * A driver for the Atmel AT45DB161D 4Mbit SPI FLASH part, diff --git a/TODO b/TODO index e1fed73e3a..52ba42407e 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,5 @@ -NuttX TODO List (Last updated September 30, 2010) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +NuttX TODO List (Last updated October 1, 2010) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (5) Task/Scheduler (sched/) (1) On-demand paging (sched/) @@ -26,7 +26,7 @@ NuttX TODO List (Last updated September 30, 2010) (2) ARM/i.MX (arch/arm/src/imx/) (4) ARM/LPC17xx (arch/arm/src/lpc17xx/) (7) ARM/LPC214x (arch/arm/src/lpc214x/) - (1) ARM/LPC313x (arch/arm/src/lpc313x/) + (2) ARM/LPC313x (arch/arm/src/lpc313x/) (3) ARM/STR71x (arch/arm/src/str71x/) (4) ARM/LM3S6918 (arch/arm/src/lm3s/) (5) ARM/STM32 (arch/arm/src/stm32/) @@ -794,7 +794,7 @@ o ARM/LPC313x (arch/arm/src/lpc313x/) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Description: arch/arm/src/lpc313x/lpc313x_spi.c contains logic that is specific to the - Embedded Artist's ea3131 board. We need to abstract the assignmen of SPI + Embedded Artist's ea3131 board. We need to abstract the assignment of SPI chip selects and logic SPI functions (like SPIDEV_FLASH). My thoughts are: - Remove lpc313x_spiselect and lpc313x_spistatus from lpc313x_internal.h - Remove configs/ea3131/src/up_spi.c @@ -806,6 +806,12 @@ o ARM/LPC313x (arch/arm/src/lpc313x/) Status: Open Priority: High if you want to use SPI on any board other than the ea3131. + Description: arch/arm/src/lpc313x/lpc313x_spi.c may or may not be functional. It was + reported to be working, but I was unable to get it working with the + Atmel at45dbxx serial FLASH driver. + Status: Open + Priority: High if you need to use SPI. + o ARM/STR71x (arch/arm/src/str71x/) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/configs/ea3131/README.txt b/configs/ea3131/README.txt index f1aec37edc..db6fc0b8dd 100755 --- a/configs/ea3131/README.txt +++ b/configs/ea3131/README.txt @@ -424,6 +424,12 @@ On-Demand Paging CONFIG_PAGING_M25PX=y + NOTE: See the TODO list in the top-level directory: + + "arch/arm/src/lpc313x/lpc313x_spi.c may or may not be functional. It was + reported to be working, but I was unable to get it working with the + Atmel at45dbxx serial FLASH driver." + Alternative: ------------ diff --git a/sched/Makefile b/sched/Makefile index b11511b65e..31e09f2aa7 100644 --- a/sched/Makefile +++ b/sched/Makefile @@ -89,7 +89,10 @@ MQUEUE_SRCS = mq_open.c mq_close.c mq_unlink.c \ mq_send.c mq_timedsend.c mq_sndinternal.c \ mq_receive.c mq_timedreceive.c mq_rcvinternal.c \ mq_setattr.c mq_getattr.c mq_initialize.c mq_descreate.c \ - mq_findnamed.c mq_msgfree.c mq_msgqfree.c mq_waitirq.c + mq_findnamed.c mq_msgfree.c mq_msgqfree.c +ifneq ($(CONFIG_DISABLE_SIGNALS),y) +MQUEUE_SRCS += mq_waitirq.c +endif ifneq ($(CONFIG_DISABLE_SIGNALS),y) MQUEUE_SRCS += mq_notify.c endif @@ -125,7 +128,10 @@ endif SEM_SRCS = sem_initialize.c sem_init.c sem_destroy.c\ sem_open.c sem_close.c sem_unlink.c \ sem_wait.c sem_trywait.c sem_post.c sem_getvalue.c \ - sem_waitirq.c sem_findnamed.c + sem_findnamed.c +ifneq ($(CONFIG_DISABLE_SIGNALS),y) +SEM_SRCS += sem_waitirq.c +endif ifeq ($(CONFIG_PRIORITY_INHERITANCE),y) SEM_SRCS += sem_holder.c endif diff --git a/sched/sem_holder.c b/sched/sem_holder.c index 1c3126f2df..28d74a8683 100644 --- a/sched/sem_holder.c +++ b/sched/sem_holder.c @@ -734,13 +734,14 @@ void sem_releaseholder(FAR sem_t *sem) * stcb - The TCB of the task that was just started (if any). If the * post action caused a count to be given to another thread, then stcb * is the TCB that received the count. Note, just because stcb received - * the count, it does not mean that it it is higher priority than other threads. + * the count, it does not mean that it it is higher priority than other + * threads. * sem - A reference to the semaphore being posted. * - If the semaphore count is <0 then there are still threads waiting - * for a count. stcb should be non-null and will be higher priority than - * all of the other threads still waiting. - * - If it is ==0 then stcb refers to the thread that got the last count; no - * other threads are waiting. + * for a count. stcb should be non-null and will be higher priority + * than all of the other threads still waiting. + * - If it is ==0 then stcb refers to the thread that got the last count; + * no other threads are waiting. * - If it is >0 then there should be no threads waiting for counts and * stcb should be null. * @@ -831,6 +832,7 @@ void sem_restorebaseprio(FAR _TCB *stcb, FAR sem_t *sem) * ****************************************************************************/ +#ifndef CONFIG_DISABLE_SIGNALS void sem_canceled(FAR _TCB *stcb, FAR sem_t *sem) { /* Check our assumptions */ @@ -841,6 +843,7 @@ void sem_canceled(FAR _TCB *stcb, FAR sem_t *sem) (void)sem_foreachholder(sem, sem_restoreholderprio, stcb); } +#endif /**************************************************************************** * Function: sem_enumholders diff --git a/sched/sem_internal.h b/sched/sem_internal.h index 4b3d30fb1c..cbb7e96ddf 100644 --- a/sched/sem_internal.h +++ b/sched/sem_internal.h @@ -100,7 +100,11 @@ EXTERN void sem_addholder(FAR sem_t *sem); EXTERN void sem_boostpriority(FAR sem_t *sem); EXTERN void sem_releaseholder(FAR sem_t *sem); EXTERN void sem_restorebaseprio(FAR _TCB *stcb, FAR sem_t *sem); +# ifndef CONFIG_DISABLE_SIGNALS EXTERN void sem_canceled(FAR _TCB *stcb, FAR sem_t *sem); +# else +# define sem_canceled(stcb, sem) +# endif #else # define sem_initholders() # define sem_destroyholder(sem)