Thursday, December 11, 2014

Intel Edison and RTEMS - Road Forward

The Intel Edison is now (11 December 2014) is now running RTEMS but there are issues to resolve and features which need adding. This post is a list of what needs to be done.

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.
There may be other clean up but that should be enough to get the current Edison support into the tree.

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
That will get a complete basic BSP working with no hackery. Beyond this, RTEMS needs support for the other peripherals on the Edison:

  • 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.
There is probably more to do to fully support the Intel Edison board but it does work now and provides a baseline for future enhancements. At this point, interested users can fund core developers to add capabilities or volunteer to add it. That is how open source works.

1 comment:

  1. Nice Information! I personally really appreciate your article. This is a great website. I will make sure that I stop back again!.
    intel vs amd