GCC / Buildroot Tool Chain
- support for Execute in Place ("XIP") for nommu flavor (needs completely position independent code ("PIC") support by the Compiler)
- support for "thread" keyword
- support for MMU-based architecture
Kernel Arch
- Every pieces of nios2 code should be reviewed and compared again those of m68knommu or other arch.
Files to be revised: - Coding style clean up.
- Optional MPU support.
- Optional "full" Linux with MMU
- Would providing architecture specific "atomic" code instead of using the code in "asm-general" be beneficial ?
- Is there a way to support hardware for some atomic instructions for Kernel mutex/spinlioc and FUTEX ? (see multi-threading)
Kernel Drivers
- All drivers should use platform driver model.
Drivers to be revised:
- Opencore I2C driver, there is the driver in mainline kernel, but we need platform data and testing.
=== done, also all drivers are in new driver form mainline ===
- SPI driver, the old one is useless. The new one should be developed.
=== is the driver that supports SPI for the NEEK touchscreen and SD-Card good enough for general applications ? ===
- DMA interface driver, the old one is useless.
- NEEK LCD framebuffer
=== done ===
- NEEK touch screen driver
=== done === - "programmable timer" driver for "tickless Linux" (the appropriate hardware needs to be designed, too)
- ioremap as a macro to inline it if nommu
File Systems
- cifs (Samba) client (hangs)
Make / Configuration System
- Add NEEK to board selection
=== done ===
- When XIP is available move as many apps as possible into busybox by default (init, shell, ...)
- When XIP is available use hush as a better shell than sash by default
- Makefile glitch: 10 times "Making symlinks in include/". Once seems to be enough.
=== done ===
- Better integration of the definition of the ptf file to be used (no "make vendor_hwselect" necessary after "make clean")
User Space Libs and Apps
- Compiling error when gdb-server is activate
=== partly solved:
gdbserver is not enabled as default any more
gdbserver (old) - which does not support multithreadding - can be used ===
- More "user friendly" FTP server by enabling ls in busybox on default and adding password for root (and a user uclinux) in passwd
- Start inetd and boa in rc on default (no harm done, if they can't run due to not Ethernet configured)
- "haserl" does not compile (Makefile problem)
=== partly solved === (On some systems a dummy file "NEWS" seems to be necessary.) - "haserl" does not work
=== partly solved === (After adding a line syslog("Haserl start") in main() it works due to a miracle. It only works if the syslog daemon is running)
=== solved === (with boa 0.94.14 the problem magically disappeared)
- "haserl" very slow
=== solved === (by using hush instead of msh. An even better solution would need XIP for the busybox tools other than echo and test / "[" ) - Support for dynamic linking
Beside potential space and speed benefits this would solve some queer licensing issues regarding glibc.
multi-threading Support
- NPTL
- provide a decent architecture-aware "atomic" code for FUTEX (disble interrupt -> do stuff -> enable interrupt) instead of using the code in "asm-general". This is a decent way to go if no MPU is used, as di/ei can be done in user land. If with "full" Linux the MPU is activated (and thus di/ei is privilidged and only executable in Kernel space) we would need to have hardware support for some atomic instructions.
- at best have Altera add some atomic instructions to the NIOS arch
- debugging support for Multithreading by fixing "gdbserver" instead of falling back to "gdbserver (old)"
- "thread" keyword in gcc
GDB
- remote debugging user space application via Kernel based GDB stub
- fixing "gdbserver" instead of falling back to "gdbserver (old)"
- using a serial link alternatively to Ethernet
- debugging Multi-threaded Applications does not seem to be possible at all (very high priority !)
- integration in NIOS II Studio
- debugging the Kernel and Kernel modules
- integration in NIOS II Studio
Documentation
- "make help" should create a decent output. At least listing the available make targets including the "_only" and "_clean" stuff.
- how to modify the various real-time configuration files
- RC (easy: /vendor)
- passwd (easy: /vendor)
- initd.conf
- services
- stuff in vendors/Altera/nios2nommu/romfs_list
- ...
- inittab / rc
=== see appropriate Wiki page ===
- how to save the Kernel and application/library configuration in a way that it survives a "git checkout -f" or "git clean -d" or "make real_clean" (easy: "make menuconfig" -> "Update Default Vendor Settings") noves the configguration files into /Vendor)
- ...
Politics
- Have Altera and/or SLS and/or WindRiver mirror (or run) the GIT server (with HTTP support)
- Communicate with SLS and/or WindRiver about company <-> community collaboration and preserving a common code base (especially regarding the MMU-enabled tiool suite)
- Suggest NIOS arch for inclusion into the main line Kernel
- Method to assign to-do issues to programmers and to track progress
- A great deal of the necessary documentation is not specific to the NIOS arch. There should be a central uCLinux-dist documentation Wiki for that.