diff options
Diffstat (limited to 'nuttx/TODO')
-rw-r--r-- | nuttx/TODO | 2111 |
1 files changed, 0 insertions, 2111 deletions
diff --git a/nuttx/TODO b/nuttx/TODO deleted file mode 100644 index b5958f397..000000000 --- a/nuttx/TODO +++ /dev/null @@ -1,2111 +0,0 @@ -NuttX TODO List (Last updated January 30, 2013) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -This file summarizes known NuttX bugs, limitations, inconsistencies with -standards, things that could be improved, and ideas for enhancements. - -nuttx/ - - (11) Task/Scheduler (sched/) - (2) Memory Managment (mm/) - (3) Signals (sched/, arch/) - (2) pthreads (sched/) - (2) C++ Support - (6) Binary loaders (binfmt/) - (16) Network (net/, drivers/net) - (4) USB (drivers/usbdev, drivers/usbhost) - (11) Libraries (libc/, ) - (9) File system/Generic drivers (fs/, drivers/) - (5) Graphics subystem (graphics/) - (1) Pascal add-on (pcode/) - (1) Documentation (Documentation/) - (7) Build system / Toolchains - (5) Linux/Cywgin simulation (arch/sim) - (5) ARM (arch/arm/) - (1) ARM/C5471 (arch/arm/src/c5471/) - (3) ARM/DM320 (arch/arm/src/dm320/) - (2) ARM/i.MX (arch/arm/src/imx/) - (3) ARM/LPC17xx (arch/arm/src/lpc17xx/) - (7) ARM/LPC214x (arch/arm/src/lpc214x/) - (2) ARM/LPC313x (arch/arm/src/lpc313x/) - (0) ARM/LPC43x (arch/arm/src/lpc43xx/) - (3) ARM/STR71x (arch/arm/src/str71x/) - (3) ARM/LM3S6918 (arch/arm/src/lm/) - (5) ARM/STM32 (arch/arm/src/stm32/) - (3) AVR (arch/avr) - (0) Intel x86 (arch/x86) - (5) 8051 / MCS51 (arch/8051/) - (3) MIPS/PIC32 (arch/mips) - (1) Hitachi/Renesas SH-1 (arch/sh/src/sh1) - (4) Renesas M16C/26 (arch/sh/src/m16c) - (11) z80/z8/ez80/z180 (arch/z80/) - (9) z16 (arch/z16/) - (1) mc68hc1x (arch/hc) - -apps/ - - (5) Network Utilities (apps/netutils/) - (5) NuttShell (NSH) (apps/nshlib) - (1) System libraries apps/system (apps/system) - (5) Other Applications & Tests (apps/examples/) - -o Task/Scheduler (sched/) - ^^^^^^^^^^^^^^^^^^^^^^^ - - Title: CHILD PTHREAD TERMINATION - Description: When a tasks exits, shouldn't all of its child pthreads also be - terminated? - Status: Closed. No, this behavior will not be implemented. - Priority: Medium, required for good emulation of process/pthread model. - - Title: TICKLESS OS - Description: On a side note, I have thought about a tick-less timer for the OS - for a long time. Basically we could replace the periodic system - timer interrupt with a one-shot interval timer programmed for the - next interesting event time. That is one way to both reduce the - timer interrupt overhead and also to increase the accuracy of - delays. - - Current timer processing is in sched/sched_processtimer.c: - - 1) Calls clock_timer() which just increments a counter (the system - timer -- basically "up-time"). This is only used when code asks - for the current time. In a tickless OS, some substitute answer - for the question "What time is it?" would need to be developed. - You could use an RTC? Or maybe logic that gets the time until the - next interval expiration and computes the current time. The - solution is not too difficult, but depends on a hardware solution. - - 2) Calls wd_timer() which handles the link list of ordered events: - Each timer event is saved with the delta time to the next event - in the list. So an interval timer would be perfect to implement this. - - 3) sched_process_timeslice(). Then there is round-robin time-slicing. - - The primary advantage of a tickless OS is that is would allow for - reduce power consumptions. That is because timer interrupts will - usually awaken CPUs from reduced power consumption states. - Status: Open. There will probably be no tickless OS implementation unless - someone gets motivated and drives the change. - Priority: Low - - Title: pause() NON-COMPLIANCE - Description: In the POSIX description of this function is the pause() function - will suspend the calling thread until delivery of a signal whose - action is either to execute a signal-catching function or to - terminate the process. The current implementation only waits for - any non-blocked signal to be received. It should only wake up if - the signal is delivered to a handler. - Status: Open. - Priority: Medium Low. - - Title: ON-DEMAND PAGE INCOMPLETE - Description: On-demand paging has recently been incorporated into the RTOS. - The design of this feature is described here: - 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. - Status: Open. This has been put on the shelf for some time. - Priority: Medium-Low - - Title: GET_ENVIRON_PTR() - 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. No change is planned. - Priority: Low -- There is no plan to implement this. - - Title: TIMER_GETOVERRUN() - Description: timer_getoverrun() (sched/timer_getoverrun.c) is not implemented. - Status: Open - Priority: Low -- There is no plan to implement this. - - Title: USER-SPACE WORK QUEUES - Description: There has been some use of work queues that has crept into some - user code. I am thinking of NxWidgets::CNxTimer. That timer - logic was originally implemented (correctly) using POSIX timers, - but was re-implemented using timed work. - - The issue is that NxWidgets::CNxTimer is a user-space application - but the work queues are an OS internal feature. This will be a - problem for KERNEL builds. Hooks and definitions have been added - in include/nuttx/wqueue.h to support a user-space work queue, but - the corresponding logic has not been implemented. - - The work queue logic will need to be moved from sched/ to libc/wqueue/ - Status: Open. No work will probably be done until a functional KERNEL build - that includes NxWisges::CNxTimer is needed. - Priority: Medium Low for now - - Title: INCOMPATIBILITES WITH execv() AND execl() - Description: Simplified 'execl()' and 'execv()' functions are provided by - NuttX. NuttX does not support processes and hence the concept - of overlaying a tasks process image with a new process image - does not make any sense. In NuttX, these functions are - wrapper functions that: - - 1. Call the non-standard binfmt function 'exec', and then - 2. exit(0). - - As a result, the current implementations of 'execl()' and - 'execv()' suffer from some incompatibilities, the most - serious of these is that the exec'ed task will not have - the same task ID as the vfork'ed function. So the parent - function cannot know the ID of the exec'ed task. - Status: Open - Priority: Medium Low for now - - Title: ISSUES WITH atexit() AND on_exit() - Description: These functions execute with the following bad properties: - - 1. They run with interrupts disabled, - 2. They run in supervisor mode (if applicable), and - 3. They do not obey any setup of PIC or address - environments. Do they need to? - - The fix for all of these issues it to have the callbacks - run on the caller's thread (as with signal handlers). - Status: Open - Priority: Medium Low. This is an important change to some less - important interfaces. For the average user, these - functions are just fine the way they are. - - Title: execv() AND vfork() - Description: There is a problem when vfork() calls execv() (or execl()) to - start a new appliction: When the parent thread calls vfork() - it receives and gets the pid of the vforked task, and *not* - the pid of the desired execv'ed application. - - The same tasking arrangement is used by the standard function - posix_spawn(). However, posix_spawn uses the non-standard, internal - NuttX interface task_reparent() to replace the childs parent task - with the caller of posix_spawn(). That cannot be done with vfork() - because we don't know what vfor() is going to do. - - Any solution to this is either very difficult or impossible with - an MMU. - Status: Open - Priority: Low (it might as well be low since it isn't going to be fixed). - - Title: errno IS NOT SHARED AMONG THREADS - Description: In NuttX, the errno value is unique for each thread. But for - bug-for-bug compatibility, the same errno should be shared by - the task and each thread that it creates. It is *very* easy - to make this change: Just move the pterrno field from - _TCB to struct task_group_s. However, I am still not sure - if this should be done or not. - Status: Open - Priority: Low - -o Memory Managment (mm/) - ^^^^^^^^^^^^^^^^^^^^^^ - - Title: FREE MEMORY ON TASK EXIT - 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. - - Update. From the NuttX forum: - ...there is a good reason why task A should never delete task B. - That is because you will strand memory resources. Another feature - lacking in most flat address space RTOSs is automatic memory - clean-up when a task exits. - - That behavior just comes for free in a process-based OS like Linux: - Each process has its own heap and when you tear down the process - environment, you naturally destroy the heap too. - - But RTOSs have only a single, shared heap. I have spent some time - thinking about how you could clean up memory required by a task - when a task exits. It is not so simple. It is not as simple as - just keeping memory allocated by a thread in a list then freeing - the list of allocations when the task exists. - - It is not that simple because you don't know how the memory is - being used. For example, if task A allocates memory that is used - by task B, then when task A exits, you would not want to free that - memory needed by task B. In a process-based system, you would - have to explicitly map shared memory (with reference counting) in - order to share memory. So the life of shared memory in that - environment is easily managed. - - I have thought that the way that this could be solved in NuttX - would be: (1) add links and reference counts to all memory allocated - by a thread. This would increase the memory allocation overhead! - (2) Keep the list head in the TCB, and (3) extend mmap() and munmap() - to include the shared memory operations (which would only manage - the reference counting and the life of the allocation). - - Then what about pthreads? Memory should not be freed until the last - pthread in the group exists. That could be done with an additional - reference count on the whole allocated memory list (just as streams - and file descriptors are now shared and persist until the last - pthread exits). - - I think that would work but to me is very unattractive and - inconsistent with the NuttX "small footprint" objective. ... - - Other issues: - - Memory free time would go up because you would have to remove - the memory from that list in free(). - - There are special cases inside the RTOS itself. For example, - if task A creates task B, then initial memory allocations for - task B are created by task A. Some special allocators would - be required to keep this memory on the correct list (or on - no list at all). - - Status: Open. No changes are planned. - Priority: Medium/Low, a good feature to prevent memory leaks but would - have negative impact on memory usage and code size. - - Title: CONTAINER ALLOCATOR - Description: There are several places where the logic requires allocation of - a tiny structure that just contains pointers to other things or - small amounts of data that needs to be bundled together. There - are examples net/net_poll.c and numerous other places. - - I am wondering if it would not be good create a pool of generic - containers (say void *[4]). There re-use these when we need - small containers. The code in sched/task_childstatus.c might - be generalized for this purpose. - Status: Open - Priority: Very low (I am not even sure that this is a good idea yet). - -o Signals (sched/, arch/) - ^^^^^^^^^^^^^^^^^^^^^^^ - - Title: STANDARD SIGNALS - Description: 'Standard' signals and signal actions are not supported. - (e.g., SIGINT, SIGSEGV, etc). - - Update: SIG_CHLD is support if configured. - Status: Open. No changes are planned. - Priority: Low, required by standards but not so critical for an - embedded system. - - Title: SIGEV_THREAD - Description: sig_notify() logic does not support SIGEV_THREAD; structure - struct sigevent does not provide required members sigev_notify_function - or sigev_notify_attributes. - Status: Low, there are alternative designs. However, these features - are required by the POSIX standard. - Priority: Low for now - - Title: SIGNAL NUMBERING - Description: In signal.h, the range of valid signals is listed as 0-31. However, - in many interfaces, 0 is not a valid signal number. The valid - signal number should be 1-32. The signal set operations would need - to map bits appropriately. - Status: Open - Priority: Low. Even if there are only 31 usable signals, that is still a lot. - -o pthreads (sched/) - ^^^^^^^^^^^^^^^^^ - - Title: CANCELLATION POINTS - Description: pthread_cancel(): Should implement cancellation points and - pthread_testcancel() - Status: Open. No changes are planned. - Priority: Low, probably not that useful - - Title: PTHREAD_PRIO_PROTECT - Description: Extended pthread_mutexattr_setprotocol() suport PTHREAD_PRIO_PROTECT: - "When a thread owns one or more mutexes initialized with the - PTHREAD_PRIO_PROTECT protocol, it shall execute at the higher of its - priority or the highest of the priority ceilings of all the mutexes - owned by this thread and initialized with this attribute, regardless of - whether other threads are blocked on any of these mutexes or not. - - "While a thread is holding a mutex which has been initialized with - the PTHREAD_PRIO_INHERIT or PTHREAD_PRIO_PROTECT protocol attributes, - it shall not be subject to being moved to the tail of the scheduling queue - at its priority in the event that its original priority is changed, - such as by a call to sched_setparam(). Likewise, when a thread unlocks - a mutex that has been initialized with the PTHREAD_PRIO_INHERIT or - PTHREAD_PRIO_PROTECT protocol attributes, it shall not be subject to - being moved to the tail of the scheduling queue at its priority in the - event that its original priority is changed." - Status: Open. No changes planned. - Priority: Low -- about zero, probably not that useful. Priority inheritance is - already supported and is a much better solution. And it turns out - that priority protection is just about as complex as priority inheritance. - Exerpted from my post in a Linked-In discussion: - - "I started to implement this HLS/"PCP" semaphore in an RTOS that I - work with (http://www.nuttx.org) and I discovered after doing the - analysis and basic code framework that a complete solution for the - case of a counting semaphore is still quite complex -- essentially - as complex as is priority inheritance. - - "For example, suppose that a thread takes 3 different HLS semaphores - A, B, and C. Suppose that they are prioritized in that order with - A the lowest and C the highest. Suppose the thread takes 5 counts - from A, 3 counts from B, and 2 counts from C. What priority should - it run at? It would have to run at the priority of the highest - priority semaphore C. This means that the RTOS must maintain - internal information of the priority of every semaphore held by - the thread. - - "Now suppose it releases one count on semaphore B. How does the - RTOS know that it still holds 2 counts on B? With some complex - internal data structure. The RTOS would have to maintain internal - information about how many counts from each semaphore are held - by each thread. - - "How does the RTOS know that it should not decrement the priority - from the priority of C? Again, only with internal complexity. It - would have to know the priority of every semaphore held by - every thread. - - "Providing the HLS capability on a simple phread mutex would not - be such quite such a complex job if you allow only one mutex per - thread. However, the more general case seems almost as complex - as priority inheritance. I decided that the implementation does - not have value to me. I only wanted it for its reduced - complexity; in all other ways I believe that it is the inferior - solution. So I discarded a few hours of programming. Not a - big loss from the experience I gained." - -o C++ Support - ^^^^^^^^^^^ - - Title: USE OF SIZE_T IN NEW OPERATOR - Description: The argument of the 'new' operators should take a type of - size_t (see libxx/libxx_new.cxx and libxx/libxx_newa.cxx). But - size_t has an unknown underlying. In the nuttx sys/types.h - header file, size_t is typed as uint32_t (which is determined by - architecture-specific logic). But the C++ compiler may believe - that size_t is of a different type resulting in compilation errors - in the operator. Using the underlying integer type Instead of - size_t seems to resolve the compilation issues. - Status: Kind of open. There is a workaround. Setting CONFIG_CXX_NEWLONG=y - will define the operators with argument of type unsigned long; - Setting CONFIG_CXX_NEWLONG=n will define the operators with argument - of type unsigned int. But this is pretty ugly! A better solution - would be to get ahold of the compilers definition of size_t. - Priority: Low. - - Title: STATIC CONSTRUCTORS - Description: Need to call static constructors - Update: Static constructors are implemented for the STM32 F4 and - this will provide the model for all solutions. Basically, if - CONFIG_HAVE_CXXINITIALIZE=y is defined in the configuration, then - board-specific code must provide the interface up_cxxinitialize(). - up_cxxinitialize() is called from user_start() to initialize - all static class instances. This TODO item probably has to stay - open because this solution is only available on STM32 F4. - 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 Binary loaders (binfmt/) - ^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: NXFLAT TESTS - Description: Not all of the NXFLAT test under apps/examples/nxflat are working. - Most simply do not compile yet. tests/mutex runs okay but - outputs garbage on completion. - - Update: 13-27-1, tests/mutex crashed with a memory corruption - problem the last time that I ran it. - Status: Open - Priority: High - - Title: ARM UP_GETPICBASE() - 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 - - Title: READ-ONLY DATA IN RAM - 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 - - Title: GOT-RELATIVE FUNCTION POINTERS - 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) - - Title: USE A HASH INSTEAD OF A STRING IN SYMBOL TABLES - 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 - - Title: WINDOWS-BASED TOOLCHAIN BUILD - Description: Windows build issue. Some of the configurations that use NXFLAT have - the linker script specified like this: - - NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-gotoff.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-gotoff.ld} - else - NXFLATLDSCRIPT=$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-gotoff.ld - endif - - Then use - - NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T"$(NXFLATLDSCRIPT)" -no-check-sections - - Status: Open - Priority: There are too many references like the above. They will have - to get fixed as needed for Windows native tool builds. - - Title: TOOLCHAIN COMPATIBILITY PROBLEM - Descripton: The older 4.3.3 compiler generates GOTOFF relocations to the constant - strings, like: - - .L3: - .word .LC0(GOTOFF) - .word .LC1(GOTOFF) - .word .LC2(GOTOFF) - .word .LC3(GOTOFF) - .word .LC4(GOTOFF) - - Where .LC0, LC1, LC2, LC3, and .LC4 are the labels correponding to strings in - the .rodata.str1.1 section. One consequence of this is that .rodata must reside - in D-Space since it will addressed relative to the GOT (see the section entitled - "Read-Only Data in RAM" at - http://nuttx.org/Documentation/NuttXNxFlat.html#limitations). - - The newer 4.6.3compiler generated PC relative relocations to the strings: - - .L2: - .word .LC0-(.LPIC0+4) - .word .LC1-(.LPIC1+4) - .word .LC2-(.LPIC2+4) - .word .LC3-(.LPIC4+4) - .word .LC4-(.LPIC5+4) - - This is good and bad. This is good because it means that .rodata.str1.1 can now - reside in FLASH with .text and can be accessed using PC-relative addressing. - That can be accomplished by simply moving the .rodata from the .data section to - the .text section in the linker script. (The NXFLAT linker script is located at - nuttx/binfmt/libnxflat/gnu-nxflat.ld). - - This is bad because a lot of stuff may get broken an a lot of test will need to - be done. One question that I have is does this apply to all kinds of .rodata? - Or just to .rodata.str1.1? - - Status: Open. Many of the required changes are in place but, unfortunately, not enough - go be fully functional. I think all of the I-Space-to-I-Space fixes are in place. - However, the generated code also includes PC-relative references to .bss which - just cannot be done. - Priority: Medium. The workaround for now is to use the older, 4.3.3 OABI compiler. - -o Network (net/, drivers/net) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: SOCK_RAW/SOCK_PACKET - Description: Should implement SOCK_RAW, SOCK_PACKET - Status: Open. No changes are planned. - Priority: Low - - Title: MULTIPLE NETWORK INTERFACE SUPPORT - 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. Nothing will probably be done until I have a platform - with two network interfaces that I need to support. - Priority: Medium, The feature is not important, but it is important - for NuttX to resolve the architectural issues. - - Title: SENDTO() AND MULTIPLE NETWORK INTERFACE SUPPORT - Description: sendto() 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. This is really part of the above issue. - Priority: Medium, The feature is not important, but it is important - for NuttX to resolve the architectural issues. - - Title: IPv6 - 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. - Status: Open. No work will probably be done until there is a specific - requirement for IPv6. - Priority: Medium - - Title: LISTENING FOR UDP BROADCASTS - Description: Incoming UDP broadcast should only be accepted if listening on - INADDR_ANY(?) - Status: Open - Priority: Low - - Title: READ-AHEAD THROTTLING - 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. This is just a thought experiment. No changes are planned. - Priority: Medium - - Title: STANDARDIZE ETHERNET DRIVER STATISTICS - Description: Need to standardize collection of statistics from network - drivers. apps/nshlib ifconfig command should present - statistics. - Status: Open - Priority: Low - - Title: CONCURRENT TCP SEND OPERATIONS - Description: At present, there cannot be two concurrent active TCP send - 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. - - Title: UDP READ-AHEAD? - 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 - - Title: NO POLL/SELECT ON UDP SOCKETS - Description: poll()/select() is not implemented for UDP sockets because they do - 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 - - Title: POLL/SELECT ON TCP SOCKETS NEEDS READ-AHEAD - 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() - - Title: SOCKETS DO NOT ALWAYS SUPPORT O_NONBLOCK - Description: sockets do not support all modes for O_NONBLOCK. Sockets - support only (1) TCP/IP non-blocking read operations when read-ahead - buffering is enabled, and (2) TCP/IP accept() operations when TCP/IP - connection backlog is enabled. - Status: Open - Priority: Low. - - Title: UNFINISHED CRYSTALLAN CS89X0 DRIVER - Description: I started coding a CrystalLan CS89x0 driver (drivers/net/cs89x0.c), - but never finished it. - Status: Open - Priority: Low unless you need it. - - Title: UNTESTED IGMPv2 - Description: Support for client-side IGMPv2 multicast has been added but not yet - tested (because I don't have a proper environment for multicast testing). - There are most likely errors that need to be fixed at least in the - receipt of multicast packets. - - In addition, an ethernet driver that needs to work with the IGMP logic - will have to include additional support for multicast MAC address tables. - Status: Open - Priority: Low unless you need it. - - Title: INTERFACES TO LEAVE/JOIN IGMP MULTICAST GROUP - Description: The interfaces used to leave/join IGMP multicast groups is non-standard. - RFC3678 (IGMPv3) suggests ioctl() commands to do this (SIOCSIPMSFILTER) but - also status that those APIs are historic. NuttX implements these ioctl - commands, but is non-standard because: (1) It does not support IGMPv3, and - (2) it looks up drivers by their device name (eg., "eth0") vs IP address. - - Linux uses setsockopt() to control multicast group membership using the - IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP options. It also looks up drivers - using IP addresses (It would require additional logic in NuttX to look up - drivers by IP address). See http://tldp.org/HOWTO/Multicast-HOWTO-6.html - Status: Open - Priority: Medium. All standards compatibility is important to NuttX. However, most - the mechanism for leaving and joining groups is hidden behind a wrapper - function so that little of this incompatibilities need be exposed. - - Title: CONFIGURATIONS WITH TINY MTUS - Description: Many configurations have the MTU (CONFIG_NET_BUFSIZE) set to very small - numbers, less then the minimum MTU size that must be supported -- 576. - This can cause problems in some networks: CONFIG_NET_BUFSIZE should - be set to at least 576 in all defconfig files. - - The symptoms of using very small MTU sizes can be very strange. With - Ubuntu 9.x and vsFtpd was that the total packet size did *not match* the - packet size in the IP header. This then caused a TCP checksum failure - and the packet was rejected. - Status: Open - Priority: Low... fix defconfig files as necessary. - -o USB (drivers/usbdev, drivers/usbhost) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: USB STORAGE DRIVER DELAYS - Description: There is a workaround for a bug in drivers/usbdev/usbdev_storage.c. - that involves delays. This needs to be redesigned to eliminate these - delays. See logic conditioned on CONFIG_USBMSC_RACEWAR. - Status: Open - Priority: Medium - - Title: RTL8187 DRIVER IS UNFINISHED - Description: misc/drivers/usbhost_rtl8187.c is a work in progress. There is no RTL8187 - driver available yet. That is a work in progress it was abandoned because - it depends on having an 802.11g stack. - Status: Open - Priority: Low (Unless you need RTL8187 support). - - Title: EP0 OUT CLASS DATA - Description: There is no mechanism in place to handle EP0 OUT data transfers. - There are two aspects to this problem, neither are easy to fix - (only because of the number of drivers that would be impacted): - - 1. The class drivers only send EP0 write requests and these are - only queued on EP0 IN by this drivers. There is never a read - request queued on EP0 OUT. - 2. But EP0 OUT data could be buffered in a buffer in the driver - data structure. However, there is no method currently - defined in the USB device interface to obtain the EP0 data. - - Updates: (1) The USB device-to-class interface as been extended so - that EP0 OUT data can accompany the SETUP request sent to the - class drivers. (2) The logic in the STM32 F4 OTG FS device driver - has been extended to provide this data. Updates are still needed - to other drivers. - Status: Open - Priority: High for class drivers that need EP0 data. For example, the - CDC/ACM serial driver might need the line coding data (that - data is not used currenly, but it might be). - - Title: USB HUB SUPPORT - Description: Add support for USB hubs - Status: Open - Priority: Low/Unknown. This is a feature enhancement. - -o Libraries (libc/) - ^^^^^^^^^^^^^^^^^ - - Title: SIGNED time_t - Description: The NuttX time_t is type uint32_t. I think this is consistent - with all standards and with normal usage of time_t. However, - according to Wikipedia, time_t is usually implemented as a - signed 32-bit value. - Status: Open - Priority: Very low unless there is some compelling issue that I do not - know about. - - Title: ENVIRON - 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: Medium - - Title: TERMIOS - Description: Need some minimal termios support... at a minimum, enough to - switch between raw and "normal" modes to support behavior like - that needed for readline(). - UPDATE: There is growing functionality in libc/termios/ and in the - ioctl methods of several MCU serial drivers (stm32, lpc43, lpc17, - pic32). However, as phrased, this bug cannot yet be closed since - this "growing functionality" does not address all termios.h - functionality and not all serial drivers support termios. - Status: Open - Priority: Low - - Title: DAYS OF THE WEEK - Description: strftime() and other timing functions do not handle days of the week. - Status: Open - Priority: Low - - Title: RESETTING GETOPT() - Description: There is an issue with the way that getopt() handles errors that - return '?'. - - 1. Does getopt() reset its global variables after returning '?' so - that it can be re-used? That would be required to support where - the caller terminates parsing before reaching the last parameter. - 2. Or is the client expected to continue parsing after getopt() - returns '?' and parse until the final parameter? - - The current getopt() implementation only supports #2. - Status: Open - Priority: Low - - Title: FERROR() AND CLEARERR() - Description: Not implemented: ferror() and clearerr() - Status: Open - Priority: Low - - Title: CONCURRENT STREAM READ/WRITE - Description: NuttX only supports a single file pointer so reads and writes - must be from the same position. This prohibits implementation - of behavior like that required for fopen() with the "a+" mode. - According to the fopen man page: - - "a+ Open for reading and appending (writing at end of file). - The file is created if it does not exist. The initial file - position for reading is at the beginning of the file, but - output is always appended to the end of the file." - - At present, the single NuttX file pointer is positioned to the - end of the file for both reading and writing. - Status: Open - Priority: Medium. This kind of operation is probably not very common in - deeply embedded systems but is required by standards. - - Title: DIVIDE BY ZERO - Description: This is bug 3468949 on the SourceForge website (submitted by - Philipp Klaus Krause): - "lib_strtod.c does contain divisions by zero in lines 70 and 96. - AFAIK, unlike for Java, division by zero is not a reliable way to - get infinity in C. AFAIK compilers are allowed e.g. give a compile- - time error, and some, such as sdcc, do. AFAIK, C implementations - are not even required to support infinity. In C99 the macro isinf() - could replace the first use of division by zero. Unfortunately, the - macro INFINITY from math.h probably can't replce the second division - by zero, since it will result in a compile-time diagnostic, if the - implementation does not support infinity." - Status: Open - Priority: - - Title: OLD dtoa NEEDS TO BE UPDATED - Description: This implementation of dtoa in libc/stdio is old and will not - work with some newer compilers. See - http://patrakov.blogspot.com/2009/03/dont-use-old-dtoac.html - Status: Open - Priority: ?? - - Title: FLOATING POINT FORMATS - Description: Only the %f floating point format is supported. Others are accepted - but treated like %f. - Status: Open - Priority: Medium (this might important to someone). - - Title: FLOATING POINT PRECISION - Description: A fieldwidth and precision is required with the %f format. If %f - is used with no format, than floating numbers will be printed with - a precision of 0 (effectively presented as integers). - Status: Open - Priority: Medium (this might important to someone). - -o File system / Generic drivers (fs/, drivers/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - NOTE: The NXFFS file system has its own TODO list at nuttx/fs/nxffs/README.txt - - Title: CHMOD() AND TRUNCATE() - Description: Implement chmod(), truncate(). - Status: Open - Priority: Low - - Title: CAN POLL SUPPORT - Description: At present, the CAN driver does not support the poll() method. - See drivers/can.c - Status: Open - Priority: Low - - Title: REMOVING PIPES AND FIFOS - Description: There is no way to remove a FIFO or PIPE created in the - pseudo filesystem. Once created, they persist indefinitely - and cannot be unlinked. This is actually a more generic - issue: unlink does not work for anything in the pseudo- - filesystem. - Status: Open, but partially resolved: pipe buffer is at least freed - when there are not open references to the pipe/FIFO. - Priority: Medium - - Title: ROMFS CHECKSUMS - Description: The ROMFS file system does not verify checksums on either - volume header on on the individual files. - Status: Open - Priority: Low. I have mixed feelings about if NuttX should pay a - performance penalty for better data integrity. - - Title: SPI-BASED SD MULTIPLE BLOCK TRANSFERS - Description: The simple SPI based MMCS/SD driver in fs/mmcsd does not - yet handle multiple block transfers. - Status: Open - Priority: Medium-Low - - Title: READ-AHEAD/WRITE BUFFER UNTESTED - Description: Block driver read-ahead buffer and write buffer support is - implemented but not yet tested. - Status: Open - Priority: Low - - Title: SDIO-BASED SD READ-AHEAD/WRITE BUFFERING INCOMPLETE - Description: The drivers/mmcsd/mmcsd_sdio.c driver has hooks in place to - support read-ahead buffering and write buffering, but the logic - is incomplete and untested. - Status: Open - Priority: Low - - Title: POLLHUP SUPPORT - Description: All drivers that support the poll method should also report - POLLHUP event when the driver is closedd. - Status: Open - Priority: Medium-Low - - Title: CONFIG_RAMLOG_CONSOLE DOES NOT WORK - Description: When I enable CONFIG_RAMLOG_CONSOLE, the system does not come up - propertly (using configuration stm3240g-eval/nsh2). The problem - may be an assertion that is occuring before we have a console. - Status: Open - Priority: Medium - -o Graphics subystem (graphics/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - See also the NxWidgets TODO list file for related issues. - - Title: UNTESTED GRAPHICS APIS - Description: Testing of all APIs is not complete. See - http://nuttx.sourceforge.net/NXGraphicsSubsystem.html#testcoverage - Status: Open - Priority: Medium - - Title: ITALIC FONTS / NEGATIVE FONT OFFSETS - Description: Font metric structure (in include/nuttx/nx/nxfont.h) should allow - negative X offsets. Negative x-offsets are necessary for certain - glyphs (and is very common in italic fonts). - For example Eth, icircumflex, idieresis, and oslash should have - offset=1 in the 40x49b font (these missing negative offsets are - NOTE'ed in the font header files). - Status: Open. The problem is that the x-offset is an unsigned bitfield - in the current structure. - Priority: Low. - - Title: RAW WINDOW AUTORAISE - Description: Auto-raise only applies to NXTK windows. Shouldn't it also apply - to raw windows as well? - Status: Open - Priority: Low - - Title: AUTO-RAISE DISABLED - Description: Auto-raise is currently disabled in NX multi-server mode. The - reason is complex: - - Most touchscreen controls send touch data a high rates - - In multi-server mode, touch events get queued in a message - queue. - - The logic that receives the messages performs the auto-raise. - But it can do stupid things after the first auto-raise as - it opperates on the stale data in the message queue. - I am thinking that auto-raise ought to be removed from NuttX - and moved out into a graphics layer (like NxWM) that knows - more about the appropriate context to do the autoraise. - Status: Open - Priority: Medium low - - Title: IMPROVED NXCONSOLE FONT CACHING - Description: Now each NxConsole instance has its own private font cache - whose size is determined by CONFIG_NXCONSOLE_MXCHARS. If there - are multiple NxConsole instances using the same font, each will - have a separate font cache. This is inefficient and wasteful - of memory: Each NxConsole instance should share a common font - cache. - Status: Open - Priority: Medium. Not important for day-to-day testing but would be - a critical improvement if NxConsole were to be used in a - product. - -o Pascal Add-On (pcode/) - ^^^^^^^^^^^^^^^^^^^^^^ - - Title: P-CODES IN MEMORY UNTESTED - Description: Need APIs to verify execution of P-Code from memory buffer. - Status: Open - Priority: Low - - Title: SMALLER LOADER AND OBJECT FORMAT - Description: Loader and object format may be too large for some small - memory systems. Consider ways to reduce memory footprint. - Status: Open - Priority: Medium - -o Documentation (Documentation/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: DOCUMENT APIS USABLE FROM INTERRUPT HANDLERS - Description: Need to document which APIs can be used in interrupt - handlers (like mq_send and sem_post) and which cannot. - Status: Open - Priority: Low - -o Build system - ^^^^^^^^^^^^ - - Title: NUTTX CONFIGURATION TOOL - Description: Need a NuttX configuration tool. The number of configuration - settings has become quite large and difficult to manage manually. - Update: This task is essentially completed. But probably not for - all platforms and all features. When do we know that the feature - is complete and that we can switch to exclusive use of the tool? - Status: Open - Priority: Medium-low - - Title: NATIVE WINDOWS BUILD - Description: This effort is underway using MinGW-GCC and GNUWin32 tools - for (coreutils+make+grep+sed+uname). Current status: - - 1. configs/stm32f4discovery/winbuild - builds okay natively - 2. configs/ez80f910200kitg - Can be reconfigured to build natively. - Requires some manual intervention to get a clean build. - See configs/ez80f910200kitg/README.txt. - - Status: Open - Priority: Low - - Title: WINDOWS DEPENDENCY GENERATION - Description: Dependency generation is currently disabled when a Windows native - toolchain is used in a POSIX-like enviornment (like Cygwin). The - issue is that the Windows tool generates dependencies use Windows - path formatting and this fails with the dependency file (Make.dep) - is include). Perhaps the only issue is that all of the Windows - dependencies needed to be quoted in the Make.dep files. - Status: Open - Priority: Low -- unless some dependency-related build issues is discovered. - - Title: SETENV.H - Description: Logic in most setenv.sh files can create the following problem - on many platforms: - - $ . ./setenv.sh - basename: invalid option -- 'b' - Try `basename --help' for more information. - - The problem is that $0 is the current running shell which may include - a dash in front: - - $ echo $0 - -bash - - But often is just /bin/bash (and the problem does not occur. The fix - is: - - -if [ "$(basename $0)" = "setenv.sh" ]; then - +if [ "$_" = "$0" ] ; then - Status: Open - Priority: Low. Use of setenv.sh is optional and most platforms do not have - this problem. Scripts will be fixed one-at-a-time as is appropropriate. - - Title: MAKE EXPORT LIMITATIONS - Description: The top-level Makefile 'export' target that will bundle up all of the - NuttX libraries, header files, and the startup object into an export-able - tarball. This target uses the tools/mkexport.sh script. Issues: - - 1. This script assumes the host archiver ar may not be appropriate for - non-GCC toolchains - 2. For the kernel build, the user libraries should be built into some - libuser.a. The list of user libraries would have to accepted with - some new argument, perhaps -u. - Status: Open - Priority: Low. - - Title: KERNEL BUILD MODE ISSUES - GRAPHICS/NSH PARTITIONING. - Description: In the kernel build mode (where NuttX is built as a monlithic - kernel and user code must trap into the protected kernel via - syscalls), the single user mode cannot be supported. In this - built configuration, only the multiple user mode can be supported - with the NX server residing inside of the kernel space. In - this case, most of the user end functions in graphics/nxmu - must be moved to libc/nx and those functions must be built into - libuser.a to be linked with the user-space code. - A similar issue exists in NSH that uses some internal OS - interfaces that would not be available in a kernel build - (such as foreach_task, foreach_mountpoint, etc.). - Status: Open - Priority: Low -- the kernel build configuration is not fully fielded - yet. - - Title: kconfig-mconf NOT AVAILABLE IN NATIVE WINDOWS BUILD - Description: NuttX is migrating to the use of the kconfig-frontends kconfig-mconf - tool for all configurations. In NuttX 6.24, support for native - Windows builds was added. However, thekconfig- mconf tool does not - build to run natively under Windows. - - Some effort was spent trying to get a clean kconfig-mconf build under - Windows. This is documented in the message thread beginning - here: http://tech.groups.yahoo.com/group/nuttx/message/2900. - The build was successfully completed using: MinGW-GCC, MSYS, - additional Windows libraries, and additional MSYS libraries - (MSYS is a variant of Cygwin so, presumeably, Cygwin could - have been used as well). However, on final testing, it was - found that there are problems with text and numeric entry: - http://tech.groups.yahoo.com/group/nuttx/message/2953. This - was considered a show stopper and the changs were not checked - in. - - Options: (1) Use kconfigs-conf (not kconfig-mconf). confis the text-only - configuration tool, (2) fix kconfig-mconf, (3) write another variant - of the configuration tool for windows, or (4) do all configuration - under Cygwin or MSYS. I am doing (4) now, but this is very - awkward because I have to set the apps path to ../apps (vs - ..\apps) and CONFIG_WINDOWS_NATIVE=n for the 'make menuconfig' - to run error free under windows. Very awkward! - Status: Open, there are some workarounds, but none are good. - Priority: High - -o Linux/Cywgin simulation (arch/sim) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: SIMULATED SERIAL DRIVER - Description: The simulated serial driver has some odd behavior. It - will stall for a long time on reads when the C stdio buffers are - being refilled. This only effects the behavior of things like - fgetc(). Workaround: Set CONFIG_STDIO_BUFFER_SIZE=0, suppressing - all C buffered I/O. - Status: Open - Priority: Low (because the simulator is only a test/development platform) - - Title: SIMULATOR NETWORKING SUPPORT - Description: I never did get networking to work on the sim Linux target. On Linux, - it tries to use the tap device (/dev/net/tun) to emulate an Ethernet - NIC, but I never got it correctly integrated with the NuttX networking. - NOTE: On Cygwin, the build uses the Cygwin WPCAP library and is, at - least, partially functional (it has never been rigorously tested). - Status: Open - Priority: Low (unless you want to test networking features on the simulation). - - Title: ROUND-ROBIN SCHEDULING IN THE SIMULATOR - Description: Since the simulation is not pre-emptible, you can't use round-robin - scheduling (no time slicing). Currently, the timer interrupts are - "faked" during IDLE loop processing and, as a result, there is no - task pre-emption because there are no asynchrous events. This could - probably be fixed if the "timer interrupt" were driver by Linux - signals. NOTE: You would also have to implement irqsave() and - irqrestore() to block and (conditionally) unblock the signal. - Status: Open - Priority: Low - - Title: NSH ISSUES ON THE SIMULATOR - Descripion: The NSH example has some odd behaviors. Mult-tasking -- for example, - execution of commands in background -- does not work normally. This - is due to the fact that NSH uses the system standard input for the - console. This means that the simulation is actually "frozen" all of - the time when NSH is waiting for input and background commands never - get the chance to run. - Status: Open - Priority: This will not be fixed. This is the normal behavior in the current - design of the simulator. "Real" platforms will behave correctly - because NSH will "sleep" when it waits for console inpu and other - tasks can run freely. - - Title: DOUBLE COMMAND ECHO - Description: In the NSH example, the host HOST echoes each command so after you - you enter a command, the command is repeated on the next line. This - is an artifact of the simulator only. - Status: Open - Priority: This will not be fixed. This is the normal behavior in the current - design of the simulator. "Real" platforms will behave correctly. - -o ARM (arch/arm/) - ^^^^^^^^^^^^^^^ - - Title: IMPROVED ARM INTERRUPT HANDLING - Description: ARM interrupt handling performance could be improved in some - ways. One easy way is to use a pointer to the context save - area in current_regs instead of using up_copystate so much. - see handling of 'current_regs" in arch/arm/src/armv7-m/* for - examples of how this might be done. - Status: Open - Priority: Low - - Title: IMPROVED ARM INTERRUPT HANDLING - Description: The ARM and Cortex-M3 interrupt handlers restores all regisers - upon return. This could be improved as well: If there is no - context switch, then the static registers need not be restored - because they will not be modified by the called C code. - (see arch/sh/src/sh1/sh1_vector.S for example) - Status: Open - Priority: Low - - Title: ARM INTERRUPTS AND USER MODE - Description: The ARM interrupt handling (arch/arm/src/arm/up_vectors.S) returns - using 'ldmia sp, {r0-r15}^' My understanding is that this works - fine because everything is in kernel-mode. In an operating model - where applications run in user mode and interrupts/traps run in - kernel-mode, I think that there is a problem with this. This would - like be a problem, for example, if for a kernel build where NuttX - is built as a monolithic, protected kernel and user mode programs - trap into the kernel. - Status: Open - Priority: Low until I get around to implementng security or kernel mode for - the ARM platform. - - Title: CORTEX-M3 STACK OVERFLOW - Description: There is bit bit logic inf up_fullcontextrestore() that executes on - return from interrupts (and other context switches) that looks like: - - ldr r1, [r0, #(4*REG_CPSR)] /* Fetch the stored CPSR value */ - msr cpsr, r1 /* Set the CPSR */ - - /* Now recover r0 and r1 */ - - ldr r0, [sp] - ldr r1, [sp, #4] - add sp, sp, #(2*4) - - /* Then return to the address at the stop of the stack, - * destroying the stack frame - */ - - ldr pc, [sp], #4 - - Under conditions of excessivley high interrupt conditions, many - nested interrupts can oocur just after the 'msr cpsr' instruction. - At that time, there are 4 bytes on the stack and, with each - interrupt, the stack pointer may increment and possibly overflow. - - This can happen only under conditions of continuous interrupts. - See this email thread: http://tech.groups.yahoo.com/group/nuttx/message/1261 - On suggested change is: - - ldr r1, [r0, #(4*REG_CPSR)] /* Fetch the stored CPSR value */ - msr spsr_cxsf, r1 /* Set the CPSR */ - ldmia r0, {r0-r15}^ - - But this has not been proven to be a solution. - Status: Open - Priority: Low. The conditions of continous interrupts is really the problem. - If your design needs continous interrupts like this, please try - the above change and, please, submit a patch with the working fix. - - Title: KERNEL MODE ISSUES - HANDLERS - Description: The is a design flaw in the ARM/Cortex trap handlers. Currently, - they try to process the SYSCALL within the trap handler. That - cannot work. There are two possibilities to fix this. - 1) Just enable interrupts in the trap handler and make sure that - that sufficient protection is in place to handler the nested - interrupts, or - 3) Return from the exception via a trampoline (such as is - currently done for signal handlers). In the trampoline, - the trap would processed in supervisor mode with interrupts - enabled. - Status: Open - Priority: medium-high. - -o ARM/C5471 (arch/arm/src/c5471/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: UART RECONFIGURATION - Description: UART re-configuration is untested and conditionally compiled out. - Status: Open - Priority: Medium. ttyS1 is not configured, but not used; ttyS0 is configured - by the bootloader - -o ARM/DM320 (arch/arm/src/dm320/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: DEBUG ISSUES - 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: Medium - - Title: USB DEVICE DRIVER UNTESTED - Description: A USB device controller driver was added but has never been tested. - Status: Open - Priority: Medium - - Title: FRAMEBUFFER DRIVER UNTESTED - Description: A framebuffer "driver" was added, however, it remains untested. - Status: Open - Priority: Medium - - Title: VIDEO ENCODER DRIVER - Description: In order to use the framebuffer "driver" additional video encoder - logic is required to setupt composite video output or to interface - with an LCD. - Status: Open - Priority: Medium (high if you need to use the framebuffer driver) - -o ARM/i.MX (arch/arm/src/imx/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: PORT IS INCOMPLETE - Description: The basic port of the i.MX1 architecuture was never finished. The port - is incomplete (as of this writing, is still lacks a timer, interrupt - decoding, USB, network) and untested. - Status: Open - Priority: Medium (high if you need i.MX1/L support) - - Title: SPI METHODS ARE NOT THREAD SAFE - Description: SPI methods are not thread safe. Needs a semaphore to protect from re-entrancy. - Status: Open - Priority: Medium -- Will be very high if you do SPI access from multiple threads. - -o ARM/LPC17xx (arch/arm/src/lpc17xx/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: USB DMA INCOMPLETE - Description: USB DMA not fully implemented. Partial logic is in place but it is - fragmentary and bogus. (Leveraged from the lpc214x) - Status: Open - Priority: Low - - Title: SSP DRIVER IMPROVEMENTS - Description: a) At present the SSP driver is polled. Should it be interrupt driven? - Look at arch/arm/src/imx/imx_spi.c -- that is a good example of an - interrupt driven SPI driver. Should be very easy to part that architecture - to the LPC. - b) See other SSP (SPI) driver issues listed under ARM/LPC214x. The LPC17xx - driver is a port of the LPC214x driver and probably has the same issues. - b) Other SSP driver improvements: Add support for multiple devices on the - SSP bus, use DMA data transfers - Status: Open - Priority: Medium - - Title: NOKIA LCD DRIVER NONFUNCTIONAL - Description: An LCD driver for the Olimex LPC1766STK has been developed. However, that - driver is not yet functional on the board: The backlight comes on, but - nothing is visible on the display. - Status: Open - Priority: Medium-Low (unless you need the display on the LPC1766STK!) - -o ARM/LPC214x (arch/arm/src/lpc214x/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: VECTOR INTERRUPTS - Description: Should use Vector Interrupts - Status: Open - Priority: Low - - Title: USB DMA INCOMPLETE - Description: USB DMA not fully implemented. Partial logic is in place but it is - fragmentary and bogus. - Status: Open - Priority: Low - - Title: USB SERIAL DRIVER REPORTS WRONG ERROR - Description: USB Serial Driver reports wrong error when opened before the - USB is connected (reports EBADF instead of ENOTCONN) - Status: Open - Priority: Low - - Title: SPI DRIVER IMPROVEMENTS - Description: At present the SPI driver is polled. Should it be interrupt driven? - Look at arch/arm/src/imx/imx_spi.c -- that is a good example of an - interrupt driven SPI driver. Should be very easy to part that architecture - to the LPC. - Status: Open - Priority: Medium - - Title: SPI METHODS ARE NOT THREAD SAFE - Description: SPI methods are not thread safe. Needs a semaphore to protect from re-entrancy. - Status: Open - Priority: Medium -- Will be very high if you do SPI access from multiple threads. - - Title: SPI DRIVER DELAYS - Description: At present the SPI driver is polled -AND- there is a rather large, arbitrary, - delay in one of the block access routines. The purpose of the delay is to - avoid a race conditions. This begs for a re-design -OR- at a minimum, some - optimiation of the delay time. - Status: Open - Priority: Medium - - Title: 2GB SD CARD ISSUES - Desription: I am unable to initialize a 2Gb SanDisk microSD card (in adaptor) on the - the mcu123 board. The card fails to accept CMD0. Doesn't seem like a software - issue, but if anyone else sees the problem, I'd like to know. - Related: Fixes were recently made for the SDIO-based MMC/SD driver to - support 2Gb cards -- the blocksize was forced to 512 in all cases. The SPI- - based driver may also have this problem (but I don't think this would have - anything to do with CMD0). - Status: Open - Priority: Uncertain - - Title: USB BROKEN? - Description: I tried to bring up the new configuration at configs/mcu123-214x/composite, - and Linux failed to enumerate the device. I don't know if this is - a problem with the lpc214x USB driver (bit rot), or due to recent - changed (e.g., -r4359 is suspicious), or an incompatibility between the - Composite driver and the LPC214x USB driver. It will take more work - to find out which -- like checking if the other USB configurations are - also broken. - Status: Open - Priority: It would be high if the LPC2148 were a current, main stream architecture. - I am not aware of anyone using LPC2148 now so I think the priority has - to be low. - -o ARM/LPC31xx (arch/arm/src/lpc31xx/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: PLATFORM-SPECIFIC LOGIC - 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 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 - - Add configurations CONFIG_LPC3131x_CSOUT1DEV, CONFIG_LPC3131x_CSOUT2DEV, - and CONFIG_LPC3131x_CSOUT3DEV that maps the lpc313x SPI chip selects to - SPIDEV_* values. - - Change arch/arm/src/lpc313x/lpc313x_spi.c to use those configuration - settings. - Status: Open - Priority: High if you want to use SPI on any board other than the ea3131. - - Title: SPI DRIVER - 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/LPC43x (arch/arm/src/lpc43xx/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -o ARM/STR71x (arch/arm/src/str71x/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: UNVERIFIED MMC SUPPORT - Description: Verify SPI driver and integrate with MMC support. This effort is stalled - at the moment because the slot on the Olimex board only accepts MMC card; - I have no MMC cards, only SD cards which won't fit into the slot. - Status: Open - Priority: Medium - - Title: NO USB DRIVER - Description: Develop a USB driver and integrate with existing USB serial and storage - class drivers. - Status: Open - Priority: Medium - - Title: SPI METHODS ARE NOT THREAD SAFE - Description: SPI methods are not thread safe. Needs a semaphore to protect from re-entrancy. - Status: Open - Priority: Medium -- Will be very high if you do SPI access from multiple threads. - -o ARM/LM3S6918 (arch/arm/src/lm/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: I2C DRIVER - Description: Still need to implement I2C - Status: Open - Priority: Low - - Title: SSI OVERRUNS - Description: Should terminate SSI/SPI transfer if an Rx FIFO overrun occurs. - Right now, if an Rx FIFO overrun occurs, the SSI driver hangs. - Status: Open - Priority: Medium, If the transfer is properly tuned, then there should not - be any Rx FIFO overruns. - - Title: THTTPD BUGS - Description: There are some lingering bugs in THTTPD, possibly race conditions. This - is covered above under Network Utilities, but is duplicated here - to point out that the LM3S suffers from this bug. - Status: Open. - UPDATE: I have found that increasing the size of the CGI program stack - from 1024 to 2048 (on the LM3S) eliminates the problem. So the most - likely cause is probably a stack overflow, not a hard sofware bug. - Priority: Probably Low - -o ARM/STM32 (arch/arm/src/stm32/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: USBSERIAL ISSUES - Description A USB device-side driver is in place but not well tested. At - present, the apps/examples/usbserial test sometimes fails. The situation - that causes the failure is: - - - Host-side of the test started after the target side sends the - first serial message. - - The general failure is as follows: - - - The target message pends in the endpoint packet memory - - When the host-side of the test is stated, it correctly - reads this pending data. - - an EP correct transfer interrupt occurs and the next - pending outgoing message is setup - - But, the host never receives the next message - - If the host-side driver is started before the first target message - is sent, the driver works fine. - Status: Open - Priority: Medium-High - - Title: DMA EXTENSIONS - Description: DMA logic needs to be extended. DMA2, Channel 5, will not work - because the DMA2 channels 4 & 5 share the same interrupt. - Status: Open - Priority: Low until someone needs DMA1, Channel 5 (ADC3, UART4_TX, TIM5_CH1, or - TIM8_CH2). - - Title: F4 SDIO MULTI-BLOCK TRANSFER FAILURES - Description: If you use a large I/O buffer to access the file system, then the - MMCSD driver will perform multiple block SD transfers. With DMA - ON, this seems to result in CRC errors detected by the hardware - during the transfer. Workaround: CONFIG_MMCSD_MULTIBLOCK_DISABLE=y. - Status: Open - Priority: Medium - - Title: DMA BOUNDARY CROSSING - Description: I see this statement in the reference manual: "The burst - configuration has to be selected in order to respect the AHB protocol, - where bursts must not cross the 1 KB address boundary because the - minimum address space that can be allocated to a single slave - is 1 KB. This means that the 1 KB address boundary should not be crossed - by a burst block transfer, otherwise an AHB error would be generated, - that is not reported by the DMA registers." - - The implication is that there may be some unenforced alignment - requirements for some DMAs. There is nothing in the DMA driver to - prevent this now. - Status: Open - Priority: Low (I am not even sure if this is a problem yet). - - Title: DMA FROM EXTERNAL, FSMC MEMORY - Description: I have seen a problem on F1 where all SDIO DMAs work exist for - write DMAs from FSMC memory (i.e., from FSMC memory to SDIO). - Read transfers work fine (SDIO to FSMC memory). The failure is - a data underrun error with zero bytes of data transferred. The - workaround for now is to use DMA buffers allocted from internal - SRAM. - Status: Open - Priority: Low - -o AVR (arch/avr) - ^^^^^^^^^^^^^^ - - Title: AMBER WEB SERVER UNTESTED - Description: There is a port for the Amber Web Server ATMega128, however this is - completely untested due to the lack to compatible, functional test - equipment. - Status: Open - Priority: The priority might as well be low since there is nothing I can do about - it anyway. - - Title: STRINGS IN RAM - Description: Many printf-intensive examples (such as the OS test) cannot be executed - on most AVR platforms. The reason is because these tests/examples - generate a lot of string data. The build system currently places all - string data in RAM and the string data can easily overflow the tiny - SRAMs on these parts. A solution would be to put the string data - into the more abundant FLASH memory, but this would require modification - to the printf logic to access the strings from program memory. - Status: Open - Priority: Low. The AVR is probably not the architecuture that you want to use - for extensive string operations. - - Title: SPI AND USB DRIVERS UNTESTED - Description: An SPI driver and a USB device driver exist for the AT90USB (as well - as a USB mass storage example). However, this configuration is not - fully debugged as of the NuttX-6.5 release. - Update 7/11: (1) The SPI/SD driver has been verified, however, (2) I - believe that the current teensy/usbstorage configuration uses too - much SRAM for the system to behave sanely. A lower memory footprint - version of the mass storage driver will be required before this can - be debugged - Status: Open - Priority: Medium-High. - - Title: AVR32 PORT IS NOT FULLY TESTED - Description: A complete port for the AVR32 is provided and has been partially - debugged. There may still be some issues with the serial port - driver. - Status: Open - Priority: Medium - -o Intel x86 (arch/x86) - ^^^^^^^^^^^^^^^^^^^^ - -o 8051 / MCS51 (arch/8051/) - ^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: STACK OVERFLOWS DURING INTERRUPT HANDLING - 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. - - Title: TIMER 0 AS SYSTEM TIMER - 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 - - Title: OVERFLOWS DURING BUILD - Description: During build, there are several integer overflows reported: - sched/gmtime_r.c aroud lines 184 and 185 - sched/clock_initialize.c at line 107 - sched/pthread_create.c at 330 - apps/examples/ostest/barrier.c around lines 53 and 74 - apps/examples/ostest/sighand.c at 225 and 244 - driver/serial.c in usleep calls around 347 and 354 - Status: Open. Update: These were reviewed during the hcs12 port. The - hcs12 also has 16-bit integer types (if -mshort is in the CFLAGS). - I believe that the warnings in most of the above have been fixed - but this has not been verified on this platform). - Priority: Medium - - Title: DATA INITIALIZATION - Description Global data is not being initialized. Logic like that of SDCCs - crt0*.s needs to be incorporated into the system boot logic - Status: Open - Priority: Low -- only because there as so many other issues with 8051 - - Title: 8051 BUILD BROKEN - Description: The last time I tried to build the pjrc-8051 configurtion using - the SDCC 3.2.1 toolchain (for Windows). I got compilation - errors in sched/os_bringup.c. It complained about type - mis-matches. What I gather from Googling, this is a problem - with the --stack-auto option. At any rate, this problem will - need to be fixed if you want to resurrect the 8051 NuttX port. - Status: Open - Priority: Low -- I don't think anyone uses the 8051 port. - -o MIPS/PIC32(arch/mips) - ^^^^^^^^^^^^^^^^^^^^^ - - Title: PIC32 USB DRIVER DOES NOT WORK WITH MASS STORAGE CLASS - UPDATE: ** ONLY USING RAM DISK FOR EXPORTED VOLUME *** - Description: The PIC32 USB driver either crashes or hangs when used with - the mass storage class when trying to write files to the target - storage device. This usually works with debug on, but does not - work with debug OFF (implying some race condition?) - - Here are some details of what I see in debugging: - - 1. The USB MSC device completes processing of a read request - and returns the read request to the driver. - 2. Before the MSC device can even begin the wait for the next - driver, many packets come in at interrupt level. The MSC - device goes to sleep (on pthread_cond_wait) with all of the - read buffers ready (16 in my test case). - 3. The pthread_cond_wait() does not wake up. This implies - a problem with pthread_con_wait(?). But in other cases, - the MSC device does wake up, but then immediately crashes - because its stack is bad. - 4. If I force the pthread_cond_wait to wake up (by using - pthread_cond_timedwait instead), then the thread wakes - up and crashes with a bad stack. - - So far, I have no clue why this is failing. - - UPDATE: This bug was recorded using the PIC32 Ethernet - Starter kit with a RAM disk (that board has no SD card slot). - Howevever, using the USB mass storage device with the - Mikroelektronika using a real SD card, there is no such - problem -- the mass storage device seems quite stable. - - UPDATE: Hmmm.. retesting with the Mikroelectronka board - shows problems again. I think that there are some subtle - timing bugs whose effects can very from innocuous to severe. - Status: Open - Priority: Originally, High BUT reduced to very Low based on the - UPDATED comments. - - Title: PIC32 USB MASS STORAGE DEVICE FAILS TO RE-CONNECT - Description: Found using configuration configs/pic32mx7mmb/nsh. - In this configuratin, the NSH 'msconn' command will connect the - mass storage device to the host; the 'msdis' command will - disconnect the device. The first 'msconn' works perfectly. - However, when attempting to re-connect, the second 'msconn' - command does not command properly: Windows reports an - unrecognized device. Apparently, some state is being properly - reset when the mass storage device is disconnected. Shouldn't - be hard to fix. - Status: Open - Priority: Medium - - Title: POSSIBLE INTERRUPT CONTROL ISSUE - Description: There is a kludge in the file arch/mips/src/common/up_idle.c. - Basically, if there is nothing else going on in the IDLE loop, - you have to disable then re-enable interrupts. Logically nothing - changes, but if you don't do this interrupts will be be disabled - in the IDLE loop which is a very bad thing to happen. - - Some odd behavior in the interrupt setup on the IDLE loop is - not really a big concern, but what I do not understand is if - this behavior is occurring on all threads after all context - switches: Are interrupts always disabled until re-enabled? - This requires some further investigation at some point; it - may be nothing but may also be a symptom of some changes - required to the interrupt return logic (perhaps some CP0 - status hazard?) - Status: Open - Priority: Low. Puzzling and needs some investigation, but there there - is no known misbehavior. - -o Hitachi/Renesas SH-1 (arch/sh/src/sh1) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: SH-1 IS UNUSABLE - Description: There are instabilities that make the SH-1 port un-usable. The - nature of these is not understood; the behavior is that certain SH-1 - instructions stop working as advertised. I have seen the following - examples: - - 412b jmp @r1 - Set a return address in PR, i.e., it behaved like - 410b jsr @r1. Normally 412b works correctly, but in the failure - condition, it reliably set the PR. - 69F6 mov.l @r15+,r9 - wrote the value of R1 to @r15+. This behavior - does not correspond to any known SH-1 instruction - - This could be a silicon problem, some pipeline issue that is not - handled properly by the gcc 3.4.5 toolchain (which has very limit - SH-1 support to begin with), or perhaps with the CMON debugger. At - any rate, I have exhausted all of the energy that I am willing to put - into this cool old processor for the time being. - - Update: This bug will probably never be addressed now. I just - cleaned house and my old SH-1 was one of the things that went. - - Status: Open - Priority: Low -- because the SH-1, SH7032, is very old and only of historical - interest. - -o Renesas M16C/26 (arch/sh/src/m16c) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: M16C DOES NOT BUILD - Description: The M16C target cannot be built. The GNU m16c-elf-ld link fails with - the following message: - - m32c-elf-ld: BFD (GNU Binutils) 2.19 assertion fail /home/Owner/projects/nuttx/buildroot/toolchain_build_m32c/binutils-2.19/bfd/elf32-m32c.c:482 - - Where the reference line is: - - /* If the symbol is out of range for a 16-bit address, - we must have allocated a plt entry. */ - BFD_ASSERT (*plt_offset != (bfd_vma) -1); - - No workaround is known at this time. - Status: Open - Priority: High -- this is a show stopper for M16C. - - Title: M16C PORT UNTESTED - Description: Coding of the initial port is complete, but is untested. - Status: Open - Priority: Low - - Title: NO SERIAL CONNECTOR - Description: Serial drivers were developed for the M16C, however, the SKP16C26 - StarterKit has no serial connectors. - Status: Open - Priority: Low - - Title: UNIMPLEMENTED M16C DRIVERS - Description: Should implement SPI, I2C, Virual EEPROM, FLASH, RTC drivers - Status: Open - Priority: Medium - -o z80/z8/ez80/z180 (arch/z80) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: SDCC INTEGER OVERFLOWS - Description: The SDCC version the same problems with integer overflow during - compilation as described for pjrc-8051. At typical cause is code like - usleep(500*1000) which exceeds the range of a 16-bit integer. - Status: See pjrc-8051. These have probably been fixed but have not yet - been verified on these platforms. - Priority: See pjrc-8051 - - Title: Z80 SIMULATED CONSOLE - Description: The simulated Z80 serial console (configs/z80sim/src/z80_serial.c + - driver/serial.c) does not work. This is because there are - no interrupts in the simulation so there is never any serial - traffic. - Status: Open - Priority: Low -- the simulated console is not critical path and the designs - to solve the problem are complex. - - Title: ZDS-II LIBRARIAN WARNINGS - Description: ZDS-II Librarian complains that the source for the .obj file - is not in the library. - Status: Open - Priority: Low, thought to be cosmetic. I think this is a consequence of - replacing vs. inserting the library. - - Title: ZDS-II COMPILER PROBLEMS - Description: The ZDS-II compiler (version 4.10.1) fails with an internal error - while compiler mm/mm_initialize. This has been reported as - incident 81509. - - I have found the following workaround that I use to build for the - time being: - - --- mm/mm_initialize.c.SAVE 2008-02-13 08:06:46.833857700 -0600 - +++ mm/mm_initialize.c 2008-02-13 08:07:26.367608900 -0600 - @@ -94,8 +94,11 @@ - { - int i; - - +#if 0 /* DO NOT CHECK IN */ - CHECK_ALLOCNODE_SIZE; - CHECK_FREENODE_SIZE; - +#endif - - /* Set up global variables */ - - Status: Open - Priority: High - - Title: EZ8 PRIORITY INTERRUPTS - Description: Add support for prioritized ez8 interrupts. Currently logic supports - only nominal interrupt priority. - Status: Open - Priority: Low - - Title: Z8ENCORE ONLY VERIFIED ON SIMULATOR - Description: The z8Encore! port has only been verified on the ZDS-II instruction - set simulator. - Status: Open - Priority: Medium - - Title: XTRS CLEAN - Description: The XTRS target (configs/xtrs) has a clean problem. The clean - rule removes .asm files. This works because there are no .asm - files except in sub-directories that are provided from 'make clean' -- - except for XTRS: It has a .asm file in its src/ directory that - gets removed everytime clean is performd. - Status: Open - Priority: High if you happen to be working with XTRS. - - Title: SPI/I2C UNTESTED - Description: A "generic" SPI and I2C drivers have been coded for the eZ80Acclaim! - However, these remains untested since I have no SPI or I2C devices for - the board (yet). - Status: Open - Priority: Med - - Title: SPI METHODS ARE NOT THREAD SAFE - Description: SPI methods are not thread safe. Needs a semaphore to protect from re-entrancy. - Status: Open - Priority: Medium -- Will be very high if you do SPI access from multiple threads. - - Title: I2C UNTESTED - Description: A "generic" I2C driver has been coded for the eZ8Encore! - However, this remains untested since I have no I2C devices for - the board (yet). - Status: Open - Priority: Med - - Title: UNFINISHED Z180 LOGIC NEEDED BY THE P112 BOARD - Description: 1) Need to revist the start-up logic. Looking at the P112 Bios - (Bios.mcd), I see that quite of bit of register setup is done - there. - 2) Finish ESCC driver logic. - Status: Open - Priority: Low (at least until I get P112 hardware) - -o z16 (arch/z16) -^^^^^^^^^^^^^^^^ - - Title: ZDS-II LIBRARIAN WARNINGS - Description: ZDS-II Librarian complains that the source for the .obj file - is not in the library. - Status: Open - Priority: Low, thought to be cosmetic. I think this is a consequence of - replacing vs. inserting the library. - - Title: SERIAL DRIVER HANGS - Description: When the interrupt-driven serial driver is used, the system - hangs. This is because of TX ready (TRDE) interrupts that - get lost while interrupts are disabled. The existing - serial driver appears to be limited to hardware with a - latching, level-sensitive TX ready interrupt. - Status: Open - Priority: Medium. A polled, write-only serial driver is used in the - interim for system testing. - - Title: SYSTEM DELAYS - Description: The system delays do not appear to be correct with the - apps/examples/ostest/timedmqueue.c test. - Status: Open - Priority: Medium-High - - Title: PROBLEMS WHEN DEBUG DISABLED - Description: At present, the z16f port does not run properly when CONFIG_DEBUG - is disabled: The obvious symptom is that there is no printf() - output. I have isolated with problem to errors in optimization. - With -reduceopt on the command line, I can get the printf output. - However, there are still errors in the compiled code -- specifically - in sched/timer_create.c. - - I have submitted a bug report to ZiLOG for this (support incident - 81400). You can see the status of the bug report (and lots more - technical detail) here: - http://support.zilog.com/support/incident/incident_support.asp?iIncidentId=81400&iSiteId=1&chLanguageCode=ENG - - Summary of ZiLOG analysis: "This is a ZNEO compiler problem. ... [a] workaround - is to replace: - if ( !timerid || (clockid != 0) ) - By: - if ((clockid != 0) || !timerid)" - - Status: Open - Priority: Medium-High - - Title: PASCAL ADD-ON - Description: The pascal add-on does not work with the z16f (that is - configuration z16f2800100zcog/pashello). This appears to be - another ZDS-II error: when executing the instruction - SYSIO 0, WRITESTR a large case statement is executed. This - involves a call into the ZiLOG runtime library to __uwcase(). - __uwcase is passed a pointer to a structure containing jump - information. The cause of the failure appears to be that - the referenced switch data is bad. - This is submited as ZiLOG support incident 81459. - - Summary of ZiLOG analysis: "This is a ZNEO run time library problem. - One workaround is to replace the line 58 in uwcase.asm - - From: - ADD R9,#4 ; Skip handler - To: - ADD R9,#2 ; Skip handler - - And add uwcase.asm to the project. - - If the customer does not want to modify uwcase.asm then the other - workaround is to add a dummy case and make it same as default: - - case 0x8000: - default: - - This will make sure that uwcase is not called but ulcase is called." - Status: Open. Due to licensing issues, I cannot include the modified - uwcase in the NuttX code base. - Priority: Medium - - Title: USE SPOV - Description: Add support to maintain SPOV in context switching. This - improvement will provide protection against stack overflow - and make a safer system solution. - Status: Open - Priority: Low - - Title: PRIORITIZED INTERRUPTS - Description: Add support for prioritized interrupts. Currently logic supports - only nominal interrupt priority. - Status: Open - Priority: Low - - Title: ZDS-II COMPILER PROBLEMS - Description: The file drivers/mmcsd/mmcsd_sdio.c generates an internal compiler - error like: - - mmcsd\mmcsd_sdio.c - Internal Error(0503) On line 2504 of "MMCSD\MMCSD_SDIO.C" - File <c3>, Args(562,46) - - Status: Open. Recommended workaround: remove mmcsd_sdio.c from - drivers/mmcsd/Make.defs. There is no SDIO support for the Z16 anyway - Priority: Low - - Title: NATIVE BUILD PROBLEMS - Description: When last tested (ca.12/12), there were some missing .obj files in - arch/z16/src. A little additional TLC will be needed to get a - reliable Windows native build. As of this writing, the Cygwin - based build has not been re-verified. - Status: Open - Priority: Low -- I don't think anyone uses the Z16 port. - -o mc68hc1x (arch/hc) - ^^^^^^^^^^^^^^^^^^ - - Title: BANKED MODE - Description: There is no script for building in banked mode (more correctly, there - is a script, but logic inside the script has not yet been implemented). - It would be necessary to implement banked mode to able to access more - the 48K of FLASH. - Status: Open. - Priority: Medium/Low - -o Network Utilities (apps/netutils/) - - Title: UIP RESOLVER - Description: One critical part of netutils/ apps is untested: The uIP - resolver in netutils/resolv. The webclient code has been - tested on host using gethosbyname(), but still depends on the - untested resolve logic. - Status: Open - Priority: Medium, Important but not core NuttX functionality - - Title: PPP PORT - Description: Port PPP support from http://contiki.cvs.sourceforge.net/contiki/contiki-2.x/backyard/core/net/ppp/ - Status: Open - Priority: Low - - Title: UNVERIFIED THTTPD FEATURES - Description: Not all THTTPD features/options have been verified. In particular, there is no - test case of a CGI program receiving POST input. Only the configuration of - apps/examples/thttpd has been tested. - Status: Open - Priority: Medium - - Title: THE ARP ISSUES AGAIN - Description: The first GET received by THTTPD is not responded to. Refreshing the page - from the browser solves the problem and THTTPD works fine after thatg. I - believe that this is the duplicate of another bug: "Outgoing [uIP] packets are dropped - and overwritten by ARP packets if the destination IP has not been mapped to a MAC." - Status: Open - Priority: Medium - - Title: THTTPD WARNINGS - Description: If the network is enabled, but THTTPD is not configured, it spews out lots - of pointless warnings. This is kind of annoying and unprofessional; needs to - be fixed someday. - Status: Open. An annoyance, but not a real problem. - Priority: Low - -o NuttShell (NSH) (apps/nshlib) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: WGET UNTESTED - Description: The wget command has been incorporated into NSH, however - it is still untested as of this writing (only because I - have not had the correct network setup for the testing - yet). Since wget depends on the also untest uIP resolv/ - logic, it is like non-functional. - Status: Open - Priority: Med-High - - Title: IFCONFIG AND MULTIPLE NETWORK INTERFACES - Descripton: The ifconfig command will not behave correctly if an interface - is provided and there are multiple interfaces. It should only - show status for the single interface on the command line; it will - still show status for all interfaces. - Status: Open - Priority: Low (multiple network interfaces not fully supported yet anyway). - - Title: RUN NXFLAT PROGRAMS - Description: Add support to NSH to run NXFLAT programs from a ROMFS file system - Status: Open - Priority: Low (enhancement) - - Title: ARP COMMAND - Description: Add an ARP command so that we can see the contents of the ARP table. - Status: Open - Priority: Low (enhancement) - - Title: RE-DIRECTION OF BUILTIN APPLICATONS - Description: There is a problem with the re-direction of output form built-in - applications in NSH. When output is re-directed, exec_builtin() - spawns a tiny trampoline task that re-directs the output as - requested, starts the built-in task and then exit. - - The problem is that when exec_builtin() starts the trampoline task, - it receives and returns the pid of the trampoline task, and *not* - the pid of the desired builtin application. This bad pid is returned - to NSH and when NSH tries to use that pid in the waitpid() call, it - fails because the trampoline task no longer exists. - - The same tasking arrangement is used by the standard function - posix_spawn(). However, posix_spawn uses the non-standard, internal - NuttX interface task_reparent() to replace the childs parent task - with the caller of posix_spawn(). - - exec_builtin() should not use this internal interface, however, - since it resides in the application space. The suggested solution - is (1) move the exec_builtin() logic into nuttx/sched, (2) make it - a semi-standard interface renamed to task_spawn() and prototyped - in nuttx/include/sched.h, and then (2) use task_reparent to solve - the parental problem in the same way that posix_spawn does. - Status: Open - Priority: Medium - -o System libraries apps/system (apps/system) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: READLINE IMPLEMENTATION - Description: readline implementation does not use C-buffered I/O, but rather - talks to serial driver directly via read(). It includes VT-100 - specific editting commands. A more generic readline() should be - implemented using termios' tcsetattr() to put the serial driver - into a "raw" mode. - Status: Open - Priority: Low (unless you are using mixed C-buffered I/O with readline and - fgetc, for example). - -o Other Applications & Tests (apps/examples/) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Title: EXAMPLES/PIPE ON CYGWIN - Description: The redirection test (part of examples/pipe) terminates - incorrectly on the Cywgin-based simulation platform (but works - fine on the Linux-based simulation platform). - Status: Open - Priority: Low - - Title: EXAMPLES/WGET UNTESTED - Description: examples/wget is untested on the target (it has been tested - on the host, but not in the target using the uIP resolv logic). - Status: Open - Priority: Med - - Title: EXAMPLES/SENDMAIL UNTESTED - Description: examples/sendmail is untested on the target (it has been tested - on the host, but not on the target). - Status: Open - Priority: Med - - Title: EXAMPLES/NX FONT CACHING - Description: The font caching logic in examples/nx is incomplete. Fonts are - added to the cache, but never removed. When the cache is full - it stops rendering. This is not a problem for the examples/nx - code because it uses so few fonts, but if the logic were - leveraged for more general purposes, it would be a problem. - Update: see examples/nxtext for some improved font cache handling. - Status: Open - Priority: Low. This is not really a problem becauses examples/nx works - fine with its bogus font caching. - - Title: EXAMPLES/NXTEXT ARTIFACTS - Description: examples/nxtext. Artifacts when the pop-up window is opened. - There are some artifacts that appear in the upper left hand - corner. These seems to be related to window creation. At - tiny artifact would not be surprising (the initial window - should like at (0,0) and be of size (1,1)), but sometimes - the artifact is larger. - Status: Open - Priority: Medium. |