Skip to content
Snippets Groups Projects
TODO 58.2 KiB
Newer Older
NuttX TODO List (Last updated July 12, 2011)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
patacongo's avatar
patacongo committed

  (1)  On-demand paging (sched/)
patacongo's avatar
patacongo committed
  (1)  Signals (sched/, arch/)
  (1)  pthreads (sched/)
  (1)  C++ Support
patacongo's avatar
patacongo committed
  (5)  Binary loaders (binfmt/)
 (16)  Network (net/, drivers/net)
  (2)  USB (drivers/usbdev, drivers/usbhost)
patacongo's avatar
patacongo committed
  (6)  Libraries (lib/)
patacongo's avatar
patacongo committed
 (13)  File system/Generic drivers (fs/, drivers/)
  (1)  Pascal add-on (pcode/)
patacongo's avatar
patacongo committed
  (1)  Documentation (Documentation/)
  (5)  Build system / Toolchains
  (7)  Linux/Cywgin simulation (arch/sim)
  (4)  ARM (arch/arm/)
patacongo's avatar
patacongo committed
  (1)  ARM/C5471 (arch/arm/src/c5471/)
patacongo's avatar
patacongo committed
  (3)  ARM/DM320 (arch/arm/src/dm320/)
  (2)  ARM/i.MX (arch/arm/src/imx/)
patacongo's avatar
patacongo committed
  (3)  ARM/LPC17xx (arch/arm/src/lpc17xx/)
patacongo's avatar
patacongo committed
  (7)  ARM/LPC214x (arch/arm/src/lpc214x/)
patacongo's avatar
patacongo committed
  (2)  ARM/LPC313x (arch/arm/src/lpc313x/)
patacongo's avatar
patacongo committed
  (3)  ARM/STR71x (arch/arm/src/str71x/)
patacongo's avatar
patacongo committed
  (4)  ARM/LM3S6918 (arch/arm/src/lm3s/)
  (4)  ARM/STM32 (arch/arm/src/stm32/)
  (3)  AVR (arch/avr)
patacongo's avatar
patacongo committed
  (0)  Intel x86 (arch/x86)
  (4)  8051 / MCS51 (arch/8051/)
patacongo's avatar
patacongo committed
  (2)  Hitachi/Renesas SH-1 (arch/sh/src/sh1)
  (4)  Renesas M16C/26 (arch/sh/src/m16c)
patacongo's avatar
patacongo committed
  (8)  z80/z8/ez80 (arch/z80/)
  (8)  z16 (arch/z16/)
patacongo's avatar
patacongo committed
  (1)  mc68hc1x (arch/hc)
patacongo's avatar
patacongo committed

apps/

  (5)  Network Utilities (apps/netutils/)
  (5)  Other Applications & Tests (apps/examples/)
patacongo's avatar
patacongo committed
o Task/Scheduler (sched/)
  ^^^^^^^^^^^^^^^^^^^^^^^

  Description: When a tasks exits, shouldn't all of its child pthreads also be
               terminated?
  Status:      Open
  Priority:    Medium, required for good emulation of process/pthread model.

  Description: atexit() supports registration of only single function called on
               exit().  It should support multiple functions registered by atexit()
               or onexit() and these should be called in reverse order of
               registration when the task exits.
patacongo's avatar
patacongo committed
  Status:      Open
patacongo's avatar
patacongo committed

  Description: Implement sys/mman.h and functions
  Status:      Open
  Priority:    Low

  Description: Implement sys/wait.h and functions.  Consider implementing wait,
               waitpid, waitid.  At present, a parent has no information about
               child tasks.
patacongo's avatar
patacongo committed
               Update: A simple but usable version of waitpid() has been included.
               This version is not compliant with all specifications and can be
               enabled with CONFIG_SCHED_WAITPID. 
patacongo's avatar
patacongo committed
  Status:      Open
  Priority:    Low

  Description: Several APIs do not set errno.  Need to review all APIs.
  Status:      Open
  Priority:    Medium, required for standard compliance (but makes the
               code bigger)

o On-demand paging (sched/)
  ^^^^^^^^^^^^^^^^^^^^^^^^^

  Description: On-demand paging has recently been incorporated into the RTOS.
               The design of this feature is described here:
patacongo's avatar
patacongo committed
               http://www.nuttx.org/NuttXDemandPaging.html.
               As of this writing, the basic feature implementation is
               complete and much of the logic has been verified.  The test
               harness for the feature exists only for the NXP LPC3131 (see
               configs/ea3131/pgnsh and locked directories).  There are
               some limitations of this testing so I still cannot say that
               the feature is fully functional.
patacongo's avatar
patacongo committed
  Status:      Open
  Priority:    Medium-Low

patacongo's avatar
patacongo committed
o Other core OS logic
  ^^^^^^^^^^^^^^^^^^^

  Description: get_environ_ptr() (sched/sched_getenvironptr.c) is not implemented.
               The representation of the the environment strings selected for
               NutX is not compatible with the operation.  Some significant
               re-design would be required to implement this funcion and that
               effort is thought to be not worth the result.
  Status:      Open
  Priority:    Low -- There is no plan to implement this.

  Description: timer_getoverrun() (sched/timer_getoverrun.c) is not implemented.
  Status:      Open
  Priority:    Low -- There is no plan to implement this.

patacongo's avatar
patacongo committed
o Memory Managment (mm/)
  ^^^^^^^^^^^^^^^^^^^^^^

  Description: Add an option to free all memory allocated by a task when the
               task exits. This is probably not be worth the overhead for a
               deeply embedded system.
               There would be complexities with this implementation as well
               because often one task allocates memory and then passes the
               memory to another:  The task that "owns" the memory may not
               be the same as the task that allocated the memory.
patacongo's avatar
patacongo committed
  Status:      Open
  Priority:    Medium/Low, a good feature to prevent memory leaks but would
               have negative impact on memory usage and code size.

o Signals (sched/, arch/)
  ^^^^^^^^^^^^^^^^^^^^^^^

  Description: 'Standard' signals and signal actions are not supported.
               (e.g., SIGINT, SIGCHLD, SIGSEGV, etc).
  Status:      Open
  Priority:    Low, required by standards but not so critical for an
               embedded system.

o pthreads (sched/)
  ^^^^^^^^^^^^^^^^^

  Description: pthread_cancel():  Should implement cancellation points and
               pthread_testcancel()
  Status:      Open
  Priority:    Low, probably not that useful
patacongo's avatar
patacongo committed
o C++ Support
patacongo's avatar
patacongo committed
  ^^^^^^^^^^^

  Description: Need to call static constructors
  Status:      Open
  Priority:    Low, depends on toolchain.  Call to gcc's built-in static
               constructor logic will probably have to be performed by
               user logic in user_start().

patacongo's avatar
patacongo committed
o Binary loaders (binfmt/)
  ^^^^^^^^^^^^^^^^^^^^^^^^

  Description: Not all of the NXFLAT test under apps/examples/nxflat are working.
patacongo's avatar
patacongo committed
               Most simply do not compile yet.  tests/mutex runs okay but
               outputs garbage on completion.
  Status:      Open
  Priority:    High

  Description: The ARM up_getpicbase() does not seem to work.  This means
               the some features like wdog's might not work in NXFLAT modules.
  Status:      Open
  Priority:    Medium-High

  Description: At present, all .rodata must be put into RAM.  There is a 
               tentative design change that might allow .rodata to be placed
               in FLASH (see Documentation/NuttXNxFlat.html).
  Status:      Open
  Priority:    Medium

  Description: If the function pointer to a statically defined function is
               taken, then GCC generates a relocation that cannot be handled
               by NXFLAT.  There is a solution described in Documentataion/NuttXNxFlat.html,
               by that would require a compiler change (which we want to avoid).
               The simple workaround is to make such functions global in scope.
  Status:      Open
  Priority:    Low (probably will not fix)

  Description: In the NXFLAT symbol tables... Using a 32-bit hash value instead
               of a string to identify a symbol should result in a smaller footprint.
  Status:      Open
  Priority:    Low

patacongo's avatar
patacongo committed
  Description: Windows build issue.  Some of the configurations that use NXFLAT have
patacongo's avatar
patacongo committed
               the linker script specified like this:

               NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld -no-check-sections


               That will not work for windows-based tools because they require Windows
               style paths.  The solution is to do something like this:

               if ($(WINTOOL)y)
                 NXFLATLDSCRIPT=${cygpath -w $(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld}
               else
                 NXFLATLDSCRIPT=$(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld
               endif
               
               Then use
               
               NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T"$(NXFLATLDSCRIPT)" -no-check-sections
patacongo's avatar
patacongo committed
               
  Status:      Open
  Priority:    There are too many references like the above.  They will have
               to get fixed as needed for Windows native tool builds.

patacongo's avatar
patacongo committed
o Network (net/, drivers/net)
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
patacongo's avatar
patacongo committed

  Description: Should implement SOCK_RAW, SOCK_PACKET
  Status:      Open
  Priority:    Low

  Description: uIP polling issues / Multiple network interface support:
               (1) Current logic will not support multiple ethernet drivers.
                  Each driver should poll on TCP connections connect on the
                  network supported by the driver; UDP polling should respond
                  with TX data only if the UDP packet is intended for the
                  the network supported by the driver.
               (2) If there were multiple drivers, polling would occur at
                  double the rate.  Fix by using bound IP address in TCP
                  connection (lipaddr) and verifying that it is in the subnet
                  served by the driver.
  Status:      Open
  Priority:    Medium, The feature is not important, but it is important
               for NuttX to resolve the architectural issues.

patacongo's avatar
patacongo committed
  Description: sendto() and multiple network interface support:
patacongo's avatar
patacongo committed
               When polled, would have to assure that the destination IP
               is on the subnet served by the polling driver.
  Status:      Open
  Priority:    Medium, The feature is not important, but it is important
               for NuttX to resolve the architectural issues.

patacongo's avatar
patacongo committed
  Description: IPv6 support is incomplete.  Adam Dunkels has recently announced
               IPv6 support for uIP (currently only as part of Contiki).  Those
               changes need to be ported to NuttX.
patacongo's avatar
patacongo committed
  Status:      Open
  Priority:    Medium

  Description: Incoming UDP broadcast should only be accepted if listening on
               INADDR_ANY(?)
  Status:      Open
  Priority:    Low

  Description: Read-ahead buffers capture incoming TCP data when no user
               thread is recv-ing the data.  Should add some driver call to
               support throttling; when there is no listener for new data, the
               driver should be throttled.  Perhaps the driver should disable
               RX interrupts when throttled and re-anable on each poll time.
               recvfrom would, of course, have to un-throttle.
  Status:      Open
  Priority:    Medium

  Description: Need to standardize collection of statistics from network
               drivers.  apps/nshlib ifconfig command should present
patacongo's avatar
patacongo committed
               statistics.
  Status:      Open
  Priority:    Low

  Description: At present, there cannot be two concurrent active TCP send
patacongo's avatar
patacongo committed
               operations in progress using the same socket.  This is because
               the uIP ACK logic will support only one transfer at a time.  The
               solution is simple: A mutex will be needed to make sure that each 
               send that is started is able to be the exclusive sender until all of
               the data to be sent has been ACKed.
  Status:      Open.  There is some temporary logic to apps/nshlib that does
               this same fix and that temporary logic should be removed when
               send() is fixed.
  Priority:    Medium-Low.  This is an important issue for applications that
               send on the same TCP socket from multiple threads.

patacongo's avatar
patacongo committed
  Description: TCP supports read-ahead buffering to handle the receipt of
               TCP/IP packets when there is no read() in place.  Should such
               capability be useful for UDP?  PRO: Would reduce packet loss
               and enable support for poll()/select().  CON: UDP is inherently
               lossy so why waste memory footprint?
  Status:      Open
  Priority:    Medium

patacongo's avatar
patacongo committed
  Description: poll()/select() is not implemented for UDP sockets because they do
patacongo's avatar
patacongo committed
               do not support read-ahead buffering.  Therefore, there is never
               a case where you can read from a UDP socket without blocking.
  Status:      Open, depends on UDP read-ahead support
  Priority:    Medium

patacongo's avatar
patacongo committed
  Description: poll()/select() only works for availability of buffered TCP
               read data (when read-ahead is enabled).  The way writing is
               handled in uIP, all sockets must wait when send and cannot
               be notifiied when they can send without waiting.
  Status:      Open, probably will not be fixed.
  Priority:    Medium... this does effect porting of applications that expect
               different behavior from poll()/select()

patacongo's avatar
patacongo committed
  Description: sockets do not support all modes except for O_NONBLOCK. Sockets
               support only (1) TCP/IP non-blocking read operations when read-ahead
patacongo's avatar
patacongo committed
               buffering is enabled, and (2) TCP/IP accept() operations when TCP/IP
               connection backlog is enabled.
patacongo's avatar
patacongo committed
  Description: I started coding a CrystalLan CS89x0 driver (drivers/net/cs89x0.c),
               but never finished it.
  Status:      Open
  Priority:    Low
Loading
Loading full blame...