Updated TODO list

This commit is contained in:
Gregory Nutt
2014-01-14 14:06:02 -06:00
parent 85e7e13bb0
commit f08cdc161d
+67 -40
View File
@@ -1,4 +1,4 @@
NuttX TODO List (Last updated January 2, 2014) NuttX TODO List (Last updated January 14, 2014)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This file summarizes known NuttX bugs, limitations, inconsistencies with This file summarizes known NuttX bugs, limitations, inconsistencies with
@@ -18,7 +18,7 @@ nuttx/
(16) Network (net/, drivers/net) (16) Network (net/, drivers/net)
(4) USB (drivers/usbdev, drivers/usbhost) (4) USB (drivers/usbdev, drivers/usbhost)
(11) Libraries (libc/, ) (11) Libraries (libc/, )
(11) File system/Generic drivers (fs/, drivers/) (12) File system/Generic drivers (fs/, drivers/)
(5) Graphics subystem (graphics/) (5) Graphics subystem (graphics/)
(1) Pascal add-on (pcode/) (1) Pascal add-on (pcode/)
(1) Documentation (Documentation/) (1) Documentation (Documentation/)
@@ -42,7 +42,7 @@ nuttx/
(1) Hitachi/Renesas SH-1 (arch/sh/src/sh1) (1) Hitachi/Renesas SH-1 (arch/sh/src/sh1)
(4) Renesas M16C/26 (arch/sh/src/m16c) (4) Renesas M16C/26 (arch/sh/src/m16c)
(11) z80/z8/ez80/z180 (arch/z80/) (11) z80/z8/ez80/z180 (arch/z80/)
(8) z16 (arch/z16/) (9) z16 (arch/z16/)
(1) mc68hc1x (arch/hc) (1) mc68hc1x (arch/hc)
apps/ apps/
@@ -119,7 +119,7 @@ o Task/Scheduler (sched/)
Description: get_environ_ptr() (sched/sched_getenvironptr.c) is not implemented. Description: get_environ_ptr() (sched/sched_getenvironptr.c) is not implemented.
The representation of the environment strings selected for The representation of the environment strings selected for
NutX is not compatible with the operation. Some significant NutX is not compatible with the operation. Some significant
re-design would be required to implement this funcion and that re-design would be required to implement this function and that
effort is thought to be not worth the result. effort is thought to be not worth the result.
Status: Open. No change is planned. Status: Open. No change is planned.
Priority: Low -- There is no plan to implement this. Priority: Low -- There is no plan to implement this.
@@ -534,7 +534,7 @@ o C++ Support
will define the operators with argument of type unsigned long; will define the operators with argument of type unsigned long;
Setting CONFIG_CXX_NEWLONG=n will define the operators with argument Setting CONFIG_CXX_NEWLONG=n will define the operators with argument
of type unsigned int. But this is pretty ugly! A better solution of type unsigned int. But this is pretty ugly! A better solution
would be to get ahold of the compilers definition of size_t. would be to get a hold of the compilers definition of size_t.
Priority: Low. Priority: Low.
Title: STATIC CONSTRUCTORS Title: STATIC CONSTRUCTORS
@@ -689,7 +689,7 @@ o Binary loaders (binfmt/)
Title: GOT-RELATIVE FUNCTION POINTERS Title: GOT-RELATIVE FUNCTION POINTERS
Description: If the function pointer to a statically defined function is Description: If the function pointer to a statically defined function is
taken, then GCC generates a relocation that cannot be handled taken, then GCC generates a relocation that cannot be handled
by NXFLAT. There is a solution described in Documentataion/NuttXNxFlat.html, by NXFLAT. There is a solution described in Documentation/NuttXNxFlat.html,
by that would require a compiler change (which we want to avoid). by that would require a compiler change (which we want to avoid).
The simple workaround is to make such functions global in scope. The simple workaround is to make such functions global in scope.
Status: Open Status: Open
@@ -777,7 +777,7 @@ o Network (net/, drivers/net)
Title: MULTIPLE NETWORK INTERFACE SUPPORT Title: MULTIPLE NETWORK INTERFACE SUPPORT
Description: uIP polling issues / Multiple network interface support: Description: uIP polling issues / Multiple network interface support:
(1) Current logic will not support multiple ethernet drivers. (1) Current logic will not support multiple Ethernet drivers.
Each driver should poll on TCP connections connect on the Each driver should poll on TCP connections connect on the
network supported by the driver; UDP polling should respond network supported by the driver; UDP polling should respond
with TX data only if the UDP packet is intended for the with TX data only if the UDP packet is intended for the
@@ -870,7 +870,7 @@ o Network (net/, drivers/net)
Description: poll()/select() only works for availability of buffered TCP Description: poll()/select() only works for availability of buffered TCP
read data (when read-ahead is enabled). The way writing is read data (when read-ahead is enabled). The way writing is
handled in uIP, all sockets must wait when send and cannot handled in uIP, all sockets must wait when send and cannot
be notifiied when they can send without waiting. be notified when they can send without waiting.
Status: Open, probably will not be fixed. Status: Open, probably will not be fixed.
Priority: Medium... this does effect porting of applications that expect Priority: Medium... this does effect porting of applications that expect
different behavior from poll()/select() different behavior from poll()/select()
@@ -895,7 +895,7 @@ o Network (net/, drivers/net)
There are most likely errors that need to be fixed at least in the There are most likely errors that need to be fixed at least in the
receipt of multicast packets. receipt of multicast packets.
In addition, an ethernet driver that needs to work with the IGMP logic In addition, an Ethernet driver that needs to work with the IGMP logic
will have to include additional support for multicast MAC address tables. will have to include additional support for multicast MAC address tables.
Status: Open Status: Open
Priority: Low unless you need it. Priority: Low unless you need it.
@@ -1007,7 +1007,7 @@ o USB (drivers/usbdev, drivers/usbhost)
Status: Open Status: Open
Priority: High for class drivers that need EP0 data. For example, the Priority: High for class drivers that need EP0 data. For example, the
CDC/ACM serial driver might need the line coding data (that CDC/ACM serial driver might need the line coding data (that
data is not used currenly, but it might be). data is not used currently, but it might be).
Title: USB HUB SUPPORT Title: USB HUB SUPPORT
Description: Add support for USB hubs Description: Add support for USB hubs
@@ -1193,18 +1193,18 @@ o File system / Generic drivers (fs/, drivers/)
Title: CONFIG_RAMLOG_CONSOLE DOES NOT WORK Title: CONFIG_RAMLOG_CONSOLE DOES NOT WORK
Description: When I enable CONFIG_RAMLOG_CONSOLE, the system does not come up Description: When I enable CONFIG_RAMLOG_CONSOLE, the system does not come up
propertly (using configuration stm3240g-eval/nsh2). The problem properly (using configuration stm3240g-eval/nsh2). The problem
may be an assertion that is occuring before we have a console. may be an assertion that is occurring before we have a console.
Status: Open Status: Open
Priority: Medium Priority: Medium
Title : USE VTF TO MANAGE NAMED MESSAGE QUEUES AND NAMED SEMAPHORES Title : USE VFS TO MANAGE NAMED MESSAGE QUEUES AND NAMED SEMAPHORES
Description: Currently redundant namespace management logic is use for named Description: Currently redundant namespace management logic is use for named
message queues and semaphores. Namesphore management should message queues and semaphores. Named semaphore management should
be consolidated in the VFS. Perhaps in /ipc/mqueue and /ipc/sem. be consolidated in the VFS. Perhaps in /ipc/mqueue and /ipc/sem.
Status: Open Status: Open
Priority: Low. Nothing is broken. This is an enhancement that would Priority: Low. Nothing is broken. This is an enhancement that would
improve the OS design and possible reduce some FLASH usage improve the OS design and possibly reduce some FLASH usage
Title: UNIFIED DESCRIPTOR REPRESENTATION Title: UNIFIED DESCRIPTOR REPRESENTATION
Descripton: There are two separate ranges of descriptors for file and Descripton: There are two separate ranges of descriptors for file and
@@ -1221,6 +1221,14 @@ o File system / Generic drivers (fs/, drivers/)
Status: Open Status: Open
Priority: Low Priority: Low
Title: DUPLICATE FAT FILE NAMES
Description: "The NSH and POSIX API interpretations about sensitivity or
insensitivity to upper/lowercase file names seem to be not
consistent in our usage - which can result in creating two
directories with the same name..."
Status: Open
Priority: Low
o Graphics subystem (graphics/) o Graphics subystem (graphics/)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -1257,7 +1265,7 @@ o Graphics subystem (graphics/)
queue. queue.
- The logic that receives the messages performs the auto-raise. - The logic that receives the messages performs the auto-raise.
But it can do stupid things after the first auto-raise as But it can do stupid things after the first auto-raise as
it opperates on the stale data in the message queue. it operates on the stale data in the message queue.
I am thinking that auto-raise ought to be removed from NuttX I am thinking that auto-raise ought to be removed from NuttX
and moved out into a graphics layer (like NxWM) that knows and moved out into a graphics layer (like NxWM) that knows
more about the appropriate context to do the autoraise. more about the appropriate context to do the autoraise.
@@ -1325,7 +1333,7 @@ o Build system
Title: WINDOWS DEPENDENCY GENERATION Title: WINDOWS DEPENDENCY GENERATION
Description: Dependency generation is currently disabled when a Windows native Description: Dependency generation is currently disabled when a Windows native
toolchain is used in a POSIX-like enviornment (like Cygwin). The toolchain is used in a POSIX-like environment (like Cygwin). The
issue is that the Windows tool generates dependencies use Windows issue is that the Windows tool generates dependencies use Windows
path formatting and this fails with the dependency file (Make.dep) path formatting and this fails with the dependency file (Make.dep)
is include). Perhaps the only issue is that all of the Windows is include). Perhaps the only issue is that all of the Windows
@@ -1354,7 +1362,7 @@ o Build system
+if [ "$_" = "$0" ] ; then +if [ "$_" = "$0" ] ; then
Status: Open Status: Open
Priority: Low. Use of setenv.sh is optional and most platforms do not have 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. this problem. Scripts will be fixed one-at-a-time as is appropriate.
Title: MAKE EXPORT LIMITATIONS Title: MAKE EXPORT LIMITATIONS
Description: The top-level Makefile 'export' target that will bundle up all of the Description: The top-level Makefile 'export' target that will bundle up all of the
@@ -1380,11 +1388,11 @@ o Build system
here: http://tech.groups.yahoo.com/group/nuttx/message/2900. here: http://tech.groups.yahoo.com/group/nuttx/message/2900.
The build was successfully completed using: MinGW-GCC, MSYS, The build was successfully completed using: MinGW-GCC, MSYS,
additional Windows libraries, and additional MSYS libraries additional Windows libraries, and additional MSYS libraries
(MSYS is a variant of Cygwin so, presumeably, Cygwin could (MSYS is a variant of Cygwin so, presumably, Cygwin could
have been used as well). However, on final testing, it was have been used as well). However, on final testing, it was
found that there are problems with text and numeric entry: found that there are problems with text and numeric entry:
http://tech.groups.yahoo.com/group/nuttx/message/2953. This http://tech.groups.yahoo.com/group/nuttx/message/2953. This
was considered a show stopper and the changs were not checked was considered a show stopper and the changes were not checked
in. in.
Options: (1) Use kconfigs-conf (not kconfig-mconf). confis the text-only Options: (1) Use kconfigs-conf (not kconfig-mconf). confis the text-only
@@ -1422,7 +1430,7 @@ o Linux/Cywgin simulation (arch/sim)
Description: Since the simulation is not pre-emptible, you can't use round-robin Description: Since the simulation is not pre-emptible, you can't use round-robin
scheduling (no time slicing). Currently, the timer interrupts are scheduling (no time slicing). Currently, the timer interrupts are
"faked" during IDLE loop processing and, as a result, there is no "faked" during IDLE loop processing and, as a result, there is no
task pre-emption because there are no asynchrous events. This could task pre-emption because there are no asynchronous events. This could
probably be fixed if the "timer interrupt" were driver by Linux probably be fixed if the "timer interrupt" were driver by Linux
signals. NOTE: You would also have to implement irqsave() and signals. NOTE: You would also have to implement irqsave() and
irqrestore() to block and (conditionally) unblock the signal. irqrestore() to block and (conditionally) unblock the signal.
@@ -1467,7 +1475,7 @@ o ARM (arch/arm/)
Priority: Low. Priority: Low.
Title: IMPROVED ARM INTERRUPT HANDLING Title: IMPROVED ARM INTERRUPT HANDLING
Description: The ARM and Cortex-M3 interrupt handlers restores all regisers Description: The ARM and Cortex-M3 interrupt handlers restores all registers
upon return. This could be improved as well: If there is no upon return. This could be improved as well: If there is no
context switch, then the static registers need not be restored context switch, then the static registers need not be restored
because they will not be modified by the called C code. because they will not be modified by the called C code.
@@ -1495,7 +1503,7 @@ o ARM (arch/arm/)
ldr pc, [sp], #4 ldr pc, [sp], #4
Under conditions of excessively high interrupt conditions, many Under conditions of excessively high interrupt conditions, many
nested interrupts can oocur just after the 'msr cpsr' instruction. nested interrupts can occur just after the 'msr cpsr' instruction.
At that time, there are 4 bytes on the stack and, with each At that time, there are 4 bytes on the stack and, with each
interrupt, the stack pointer may increment and possibly overflow. interrupt, the stack pointer may increment and possibly overflow.
@@ -1512,13 +1520,13 @@ o ARM (arch/arm/)
UPDATE: Other ARM architectures have a similer issue. UPDATE: Other ARM architectures have a similer issue.
Status: Open Status: Open
Priority: Low. The conditions of continous interrupts is really the problem. Priority: Low. The conditions of continuous interrupts is really the problem.
If your design needs continous interrupts like this, please try If your design needs continuous interrupts like this, please try
the above change and, please, submit a patch with the working fix. the above change and, please, submit a patch with the working fix.
Title: STACK ALIGNMENT IN INTERRUPT HANDLERS Title: STACK ALIGNMENT IN INTERRUPT HANDLERS
Description: The EABI standard requires that the stack always have a 32-byte Description: The EABI standard requires that the stack always have a 32-byte
alignment. There is no guaratee at present that the stack will be alignment. There is no guarantee at present that the stack will be
so aligned in an interrupt handler. Therefore, I would expect some so aligned in an interrupt handler. Therefore, I would expect some
issues if, for example, floating point or perhaps long long operations issues if, for example, floating point or perhaps long long operations
were performed in an interrupt handler. were performed in an interrupt handler.
@@ -1530,7 +1538,7 @@ o ARM (arch/arm/)
arround each call into C code from assembly: arround each call into C code from assembly:
mov r4, sp /* Save the SP in a preserved register */ mov r4, sp /* Save the SP in a preserved register */
bic sp, sp, #7 /* Force 8-byte alignement */ bic sp, sp, #7 /* Force 8-byte alignment */
bl cfunction /* Call the C function */ bl cfunction /* Call the C function */
mov sp, r4 /* Restore the possibly unaligned stack pointer */ mov sp, r4 /* Restore the possibly unaligned stack pointer */
@@ -1574,7 +1582,7 @@ o ARM/DM320 (arch/arm/src/dm320/)
Title: VIDEO ENCODER DRIVER Title: VIDEO ENCODER DRIVER
Description: In order to use the framebuffer "driver" additional video encoder Description: In order to use the framebuffer "driver" additional video encoder
logic is required to setupt composite video output or to interface logic is required to setup composite video output or to interface
with an LCD. with an LCD.
Status: Open Status: Open
Priority: Medium (high if you need to use the framebuffer driver) Priority: Medium (high if you need to use the framebuffer driver)
@@ -1583,7 +1591,7 @@ o ARM/i.MX (arch/arm/src/imx/)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Title: PORT IS INCOMPLETE Title: PORT IS INCOMPLETE
Description: The basic port of the i.MX1 architecuture was never finished. The port Description: The basic port of the i.MX1 architecture was never finished. The port
is incomplete (as of this writing, is still lacks a timer, interrupt is incomplete (as of this writing, is still lacks a timer, interrupt
decoding, USB, network) and untested. decoding, USB, network) and untested.
Status: Open Status: Open
@@ -1659,7 +1667,7 @@ o ARM/LPC214x (arch/arm/src/lpc214x/)
Description: At present the SPI driver is polled -AND- there is a rather large, arbitrary, 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 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 avoid a race conditions. This begs for a re-design -OR- at a minimum, some
optimiation of the delay time. optimization of the delay time.
Status: Open Status: Open
Priority: Medium Priority: Medium
@@ -1668,7 +1676,7 @@ o ARM/LPC214x (arch/arm/src/lpc214x/)
the mcu123 board. The card fails to accept CMD0. Doesn't seem like a software 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. 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 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- support 2Gb cards -- the block size was forced to 512 in all cases. The SPI-
based driver may also have this problem (but I don't think this would have based driver may also have this problem (but I don't think this would have
anything to do with CMD0). anything to do with CMD0).
Status: Open Status: Open
@@ -1820,7 +1828,7 @@ o ARM/STM32 (arch/arm/src/stm32/)
write DMAs from FSMC memory (i.e., from FSMC memory to SDIO). write DMAs from FSMC memory (i.e., from FSMC memory to SDIO).
Read transfers work fine (SDIO to FSMC memory). The failure is Read transfers work fine (SDIO to FSMC memory). The failure is
a data underrun error with zero bytes of data transferred. The a data underrun error with zero bytes of data transferred. The
workaround for now is to use DMA buffers allocted from internal workaround for now is to use DMA buffers allocated from internal
SRAM. SRAM.
Status: Open Status: Open
Priority: Low Priority: Low
@@ -1913,7 +1921,7 @@ o 8051 / MCS51 (arch/8051/)
Priority: Low -- only because there as so many other issues with 8051 Priority: Low -- only because there as so many other issues with 8051
Title: 8051 BUILD BROKEN Title: 8051 BUILD BROKEN
Description: The last time I tried to build the pjrc-8051 configurtion using Description: The last time I tried to build the pjrc-8051 configuration using
the SDCC 3.2.1 toolchain (for Windows). I got compilation the SDCC 3.2.1 toolchain (for Windows). I got compilation
errors in sched/os_bringup.c. It complained about type errors in sched/os_bringup.c. It complained about type
mis-matches. What I gather from Googling, this is a problem mis-matches. What I gather from Googling, this is a problem
@@ -1952,11 +1960,11 @@ o MIPS/PIC32(arch/mips)
UPDATE: This bug was recorded using the PIC32 Ethernet UPDATE: This bug was recorded using the PIC32 Ethernet
Starter kit with a RAM disk (that board has no SD card slot). Starter kit with a RAM disk (that board has no SD card slot).
Howevever, using the USB mass storage device with the However, using the USB mass storage device with the
Mikroelektronika using a real SD card, there is no such Mikroelektronika using a real SD card, there is no such
problem -- the mass storage device seems quite stable. problem -- the mass storage device seems quite stable.
UPDATE: Hmmm.. retesting with the Mikroelectronka board UPDATE: Hmmm.. retesting with the Mikroelektronika board
shows problems again. I think that there are some subtle shows problems again. I think that there are some subtle
timing bugs whose effects can very from innocuous to severe. timing bugs whose effects can very from innocuous to severe.
Status: Open Status: Open
@@ -2126,7 +2134,7 @@ o z80/z8/ez80/z180 (arch/z80)
rule removes .asm files. This works because there are no .asm rule removes .asm files. This works because there are no .asm
files except in sub-directories that are provided from 'make clean' -- files except in sub-directories that are provided from 'make clean' --
except for XTRS: It has a .asm file in its src/ directory that except for XTRS: It has a .asm file in its src/ directory that
gets removed everytime clean is performd. gets removed every time clean is performd.
Status: Open Status: Open
Priority: High if you happen to be working with XTRS. Priority: High if you happen to be working with XTRS.
@@ -2150,7 +2158,7 @@ o z80/z8/ez80/z180 (arch/z80)
Priority: Med Priority: Med
Title: UNFINISHED Z180 LOGIC NEEDED BY THE P112 BOARD Title: UNFINISHED Z180 LOGIC NEEDED BY THE P112 BOARD
Description: 1) Need to revist the start-up logic. Looking at the P112 Bios Description: 1) Need to revisit the start-up logic. Looking at the P112 Bios
(Bios.mcd), I see that quite of bit of register setup is done (Bios.mcd), I see that quite of bit of register setup is done
there. there.
2) Finish ESCC driver logic. 2) Finish ESCC driver logic.
@@ -2204,7 +2212,7 @@ o z16 (arch/z16)
__uwcase is passed a pointer to a structure containing jump __uwcase is passed a pointer to a structure containing jump
information. The cause of the failure appears to be that information. The cause of the failure appears to be that
the referenced switch data is bad. the referenced switch data is bad.
This is submited as ZiLOG support incident 81459. This is submitted as ZiLOG support incident 81459.
Summary of ZiLOG analysis: "This is a ZNEO run time library problem. Summary of ZiLOG analysis: "This is a ZNEO run time library problem.
One workaround is to replace the line 58 in uwcase.asm One workaround is to replace the line 58 in uwcase.asm
@@ -2255,11 +2263,30 @@ o z16 (arch/z16)
Title: NATIVE BUILD PROBLEMS Title: NATIVE BUILD PROBLEMS
Description: When last tested (ca.12/12), there were some missing .obj files in 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 arch/z16/src. A little additional TLC will be needed to get a
reliable Windows native build. As of this writing, the Cygwin reliable Windows native build.
based build has not been re-verified.
Status: Open Status: Open
Priority: Low -- I don't think anyone uses the Z16 port with the native build. Priority: Low -- I don't think anyone uses the Z16 port with the native build.
Title: COMPILER BUG
Description: There is a bug in the ZDS II 5.0.1 compiler. It generates incorrect
code when calling through a function pointer if (1) the function
pointer is a field in a structure, and (2) the function pointer has
a variable number of arguments.
The exact name of the bug is this: Normally, when a function is
called, parameters are passed in registers. When calling a
function with a variable number of arguments, parameters must
instead be passed on the stack. In this failure case3, parameters
are erroneously passed in registers while the receive function
expects the parameters on the stack. This usually results in a
crash.
Unfortunately, NSH does have this exact kind of function call and
because of this compiler bug, NSH cannot be used with the ZNEO
Status: The bug has been reported to ZiLOG and they have reproduced the
problem. There is, however, no schedule for correction of the bug.
Priority: High if you are using ZNEO
o mc68hc1x (arch/hc) o mc68hc1x (arch/hc)
^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^