summaryrefslogtreecommitdiff
path: root/nuttx/TODO
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-12-13 16:52:37 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-12-13 16:52:37 +0000
commit305e0738a8b38fb53171edf1a773bbdde80fb545 (patch)
treee57667533646fa2227f609589d57454c14293003 /nuttx/TODO
parent1dbeb7137b593584b54bb6acbe9da4f3e5d5bf71 (diff)
downloadpx4-nuttx-305e0738a8b38fb53171edf1a773bbdde80fb545.tar.gz
px4-nuttx-305e0738a8b38fb53171edf1a773bbdde80fb545.tar.bz2
px4-nuttx-305e0738a8b38fb53171edf1a773bbdde80fb545.zip
update
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@451 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/TODO')
-rw-r--r--nuttx/TODO403
1 files changed, 297 insertions, 106 deletions
diff --git a/nuttx/TODO b/nuttx/TODO
index 9cd59baa3..b6dc42e69 100644
--- a/nuttx/TODO
+++ b/nuttx/TODO
@@ -1,111 +1,302 @@
-NuttX TODO List
-^^^^^^^^^^^^^^^
-
-o Task/Scheduler
-- When a tasks exits, shouldn't all of its child pthreads also be terminated?
-- Should task_delete() cause atexit() function to be called?
-- Implement sys/mman.h and functions
-- Implement sys/wait.h and functions
-- Implement priority inheritance
-- Consider implementing wait, waitpid, waitid. At present, a parent has
- no information about child tasks.
-- Several APIs do not set errno. Need to review all APIs.
-
-o Memory Managment
-- 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.
-- Current logic adapts size_t for 16-bit address machines vs. 32-bit address
- machines. But a small memory option should also be provided so that
- the small offset option can be used with 32-bit machines that have small
- RAM memories (like the lpc2148)
-
-o Signals
-- 'Standard' signals and signal actions are not supported.
-
-o pthreads
-- pthread_cancel(): Should implement cancellation points and pthread_testcancel()
+NuttX TODO List (Last updated December 13, 2007)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ (6) Task/Scheduler (sched/)
+ (2) Memory Managment (mm/)
+ (1) Signals (sched/, arch/)
+ (1) pthreads (sched/)
+ (1) C++ Support
+ (10) Network (net/, netutils/)
+ (2) USB (drivers/usbdev)
+ (2) Libraries (lib/)
+ (2) File system (fs/, drivers/)
+ (2) Documentation (Documentation/)
+ (3) Build system
+ (0) Applications & Tests (examples/)
+ (1) ARM (arch/arm/)
+ (0) ARM/C5471 (arch/arm/src/c5471/)
+ (1) ARM/DM320 (arch/arm/src/dm320/)
+ (2) ARM/LPC214x (arch/arm/src/lpc214x/)
+ (3) pjrc-8052 / MCS51 (arch/pjrc-8051/)
+
+
+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 one function called on exit().
+ Should task_delete() also cause atexit() function to be called?
+ Status: Open
+ Priority: Low, task_delete() is non-standard and its behavior is
+ unspecified.
+
+ 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.
+ Status: Open
+ Priority: Low
+
+ Description: Implement priority inheritance
+ Status: Open
+ Priority: Medium, this is a good feature for realtime systems.
+
+ 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 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.
+ Status: Open
+ Priority: Medium/Low, a good feature to prevent memory leaks but would
+ have negative impact on memory usage and code size.
+
+ Description: Current logic adapts size_t for 16-bit address machines vs.
+ 32-bit address machines. But a small memory option should also
+ be provided so that the small offset option can be used with
+ 32-bit machines that have small RAM memories (like the lpc2148)
+ Status: Open
+ Priority: High, a good feature enhancement.
+
+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
o C++ Support
-- Need to call static constructors
-
-o Network
-- uIP's netutils/smtp, resolv, webclient -- untested
-- Should implement SOCK_RAW, SOCK_PACKET
-- uIP polling issues:
- (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.i
- Fix by using bound IP address in TCP connection (lipaddr) and verifying that it
- is in the subnet served by the driver.
-- uIP/Socket callback logic is not thread safe. This means that a socket cannot be
- used concurrently by two threads. Minimal fix: Add mutex to support exclusion.
-- IPv6 support is incomplete
-- Incoming UDP broadcast should only be accepted if listening on INADDR_ANY(?)
-- 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.
-- Need to standardize collection of statistics from network drivers. examples/nsh
- ifconfig command should present statistics.
-
-o USB
-- Implement USB device support
-- Implement USB bulk device
-
-o Libraries
-- sscanf() and lib_vsprintf() do not support floating point values.
-- The definition of environ in stdlib.h is bogus and will not work as it should. This
- is because the underlying representation of the environment is not an arry of pointers.
-
-o File system
-- Add chmod(), truncate().
-- FAT32: long file names
-
-o Documentation
-- Document driver/ logic
-- Document C-library APIs
+ ^^^^^^^^^^^
+
+ 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().
+
+o Network (net/, netutils/)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ Description: Several of the netutils/ apps are untested. These include
+ uIP's netutils/smtp, dhcpd, resolv, webclient. Only minimal
+ testing of the others has been performed.
+ Status: Open
+ Priority: Medium, Important but not core NuttX functionality
+
+ 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.
+
+ Description: Sendoto() and multiple network interface support:
+ 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.
+
+ Description: uIP/Socket callback logic is not thread safe. This means that
+ a socket cannot be used concurrently by two threads. Minimal
+ fix: Add mutex to support exclusion for protection.
+ Status: Open
+ Priority: Low. The currently socket design cannot be use concurrently
+ by threads with out a major redesign. The feature is not
+ of great value since the use model for multi-thread sockets
+ is not common. Adding mutex support would only mask the
+ underlying issue.
+
+ Description: IPv6 support is incomplete
+ 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. examples/nsh ifconfig command should present
+ statistics.
+ Status: Open
+ Priority: Low
+
+ Description: Outgoing packets are dropped and overwritten by ARP packets
+ if the destination IP has not been mapped to a MAC. Could
+ improve send() performance by explicitly performing ARP before
+ sending the packet.
+ Status: Open
+ Priority: Medium
+
+o USB (drivers/usbdev)
+ ^^^^^^^^^^^^^^^^^^^^
+
+ Description: Implement USB device support
+ Status: Open
+ Priority: High
+
+ Description: Implement USB bulk / serial device support
+ Status: Open
+ Priority: High
+
+o Libraries (lib/)
+ ^^^^^^^^^^^^^^^^
+
+ Description: sscanf() and lib_vsprintf() do not support floating point
+ values.
+ Status: Open
+ Priority: Low
+
+ Description: The definition of environ in stdlib.h is bogus and will not
+ work as it should. This is because the underlying
+ representation of the environment is not an arry of pointers.
+ Status: Open
+ Priority: Mediam
+
+o File system (fs/, drivers/)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ Description: Add chmod(), truncate().
+ Status: Open
+ Priority: Low
+
+ Description: FAT32: long file names
+ Status: Open
+ Priority: Medium
+
+o Documentation (Documentation/)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ Description: Document driver/ logic
+ Status: Open
+ Priority: Low
+
+ Description: Document C-library APIs
+ Status: Open
+ Priority: Low
o Build system
-- Some names under arch are still incorrect. These should be processor architecture
- names: pjrc-8051 should be 805x
-- configs/pjrc-8051 should be configs/pjrc-87c52
-- Dependencies do not work correctly under configs/<board>/src (same as arch/<arch>/src/board).
-
-o Applications & Tests
-
-o ARM
-- Add option to use a separate stack for interrupt handling. At present,
- each interrupt executes on top of the user stack allocation making each
- user stack allocation larger than needed.
-
-o ARM/C5471
-
-o ARM/DM320
-- It seems that when a lot of debug statements are added, the system no
- longer boots. This has been diagnosed as a stack problem.. making the stack
- bigger or removing arrays on the stack fixes the problem.
-
-o ARM/LPC214x
-- Finish bringup
-- Add MMC and USB support
-
-o pjrc-8052 / MCS51
-- Current status:
- - Basic OS task management seems OK
- - Fails when interrupts enabled. The stack pointer is around 0x6e
- before the failure occurs. It looks like some issue when the
- stack pointer moves from the directly to indirectly addressable
- region (0x80 boundary).
- - Work on the 8052 is temporarily on hold
-- Use timer 0 as system timer. Timer 2 is needed for second UART.
- Logic is implemented, but there needs to be a system configuration
- to change the ticks-per-second value to match the timer interrupt
- rate
-- During build, there are several integer overflows reported:
- gmtime_r.c aroud lines 184 and 185
- clock_initialize.c at line 107
- pthread_create.c at 330
- sighand.c at 225 and 244
+ ^^^^^^^^^^^^
+
+ Description: Some names under arch are still incorrect. These should be
+ processor architecture names: pjrc-8051 should be 805x
+ Status: Open
+ Priority: Low
+
+ Description: configs/pjrc-8051 should be configs/pjrc-87c52
+ Status: Open
+ Priority: Low
+
+ Description: Dependencies do not work correctly under configs/<board>/src
+ (same as arch/<arch>/src/board).
+ Status: Open
+ Priority: Medium
+
+o Applications & Tests (examples/)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+o ARM (arch/arm/)
+ ^^^^^^^^^^^^^^^
+
+ Description: Add option to use a separate stack for interrupt handling. At
+ present, each interrupt executes on top of the user stack
+ allocation making each user stack allocation larger than needed.
+ Status: Open
+ Priority: Medim
+
+o ARM/C5471 (arch/arm/src/c5471/)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+o ARM/DM320 (arch/arm/src/dm320/)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ Description: config/ntos-dm320: It seems that when a lot of debug statements
+ are added, the system no longer boots. This is suspected to be
+ a stack problem: Making the stack bigger or removing arrays on
+ the stack seems to fix the problem (might also be the
+ bootloader overwriting memory)
+ Status: Open
+ Priority: Mediam
+
+o ARM/LPC214x (arch/arm/src/lpc214x/)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ Description: Finish bringup
+ Status: Open
+ Priority: High
+
+ Description: Add MMC and USB support
+ Status: Open
+ Priority: Mediam
+
+o pjrc-8052 / MCS51 (arch/pjrc-8051/)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ Description: Current status:
+ - Basic OS task management seems OK
+ - Fails when interrupts enabled. The stack pointer is around
+ 0x6e before the failure occurs. It looks like some issue
+ when the stack pointer moves from the directly to indirectly
+ addressable region (0x80 boundary).
+ - Work on the 8052 is temporarily on hold
+ Status: Open
+ Priority: Low, 8051 is a tough platform because of the tiny stack.
+
+ Description: Use timer 0 as system timer. Timer 2 is needed for second UART.
+ Logic is implemented, but there needs to be a system
+ configuration to change the ticks-per-second value to match the
+ timer interrupt rate
+ Status: Open
+ Priority: Low
+
+ Description: During build, there are several integer overflows reported:
+ gmtime_r.c aroud lines 184 and 185
+ clock_initialize.c at line 107
+ pthread_create.c at 330
+ sighand.c at 225 and 244
+ Status: Open
+ Priority: Medium