In the near term, the current code needs clean up before it can be submitted to the RTEMS Community. The following is a list of some of the activities which need to be performed before the code can be submitted:
- Break conditionals in build system and C code from "if Edison" to more features oriented conditionals. This requires being able to disable at least VGA, IDE, and legacy COM ports at BSP configure time.
- Split the current Edison specific polled console code into its own file.
- Review dynamic console selection code and see if the current code can be improved so Edison specific conditionals are not needed.
- Generally split the one large patch into smaller discrete patches and try to not make them Edison specific.
- Write instructions.
Longer term, there is more to do and it involves coding. Some of this can be done without access to Edison System On Chip documentation. But other parts will require having access to the details.
- Add support for APIC interrupt controller.
- Figure out why clock tick isn't working. This may require using different hardware for the clock tick driver.
- Provide access routines for the memory mapped PCI configuration space.
- Provide glue so hacked NS16550 console support can use libchip driver like COM[1-4] do. There is support already for PCI cards with multiple NS16550s so this should just be a matter of having the information once PCI configuration space is working.
- Test this driver polled
- Test this driver interrupt driven
- Add support for the discrete I/O and analog inputs.
- Evaluate supporting the Flash. We may want to be careful to not destroy the Linux installation or we may want to simply take over the entire Flash as long as we avoid conflicts with other uses. Having the Linux and USB file loading is nice.
- Add WiFi support. This is a more involved project as RTEMS currently does not support TCP/IP over USB or WiFi.
- Since the new FreeBSD 9.x TCP/IP stack came with the USB stack, supporting wired Ethernet over USB is a logical first step and is also needed to support Ethernet on the Raspberry Pi.
- Once wired Ethernet over USB works, then the wireless part can be addressed including applications to manage connecting to access points.