GSoC ideas 2011

From Milkymist Wiki

Jump to: navigation, search

Contents

[edit] Task list

[edit] Hardware development

Knowledge of logic design and Verilog HDL is essential. Code must follow the HDL guidelines. Experience with FPGA/ASIC development is highly recommended.

  • Develop MIDI and DMX512 controllers. This is an easy task since those are straightforward protocols, and recommended if you do not have a solid experience with FPGA development.
  • Develop a full speed (12MBit/s) USB host controller. The controller should be co-designed with its software driver and strike a good balance between hardware and software. The controller must be low level (the raw USB signals directly connected to the FPGA with only analog shaping).
  • Develop a LM32 memory management unit (MMU) with full virtual memory.
  • Write more advanced test benches for the existing IP cores. All features of the cores must be included in the test bench, and code coverage must be analyzed (preferably with an open source tool such as Covered).

[edit] Kernel and low level development

Knowledge of the C language and experience with system programming is essential.

uClinux is currently running on Milkymist, however some bits are missing.

[edit] Libraries

Knowledge of the C language and Unix programming is necessary. Experience with embedded systems is a plus but not absolutely necessary.

  • Develop an userspace library to use the TMU2. This should be straightforward. In case the library is running on systems where the TMU2 is not available (e.g. a PC, for tests), a software or, better, OpenGL implementation should be used.
  • Develop a userspace library to use the PFPU. This is a more complex task. The library should have a high-level interface that hides the gory details of using the PFPU (e.g. the library must include a compiler and VLIW scheduler). The API should be clean and well-designed and the PFPU should be emulated on systems where it is not available. Basically, we want a floating point numeric computation library that is able to use PFPU acceleration where it is available.
  • Support TMU2 acceleration (via the TMU2 library) in Genode FX for scaling images and blitting/moving windows.

[edit] Renderer

Knowledge of the C language is necessary.

The renderer computes the nice video effects. It is heavily inspired by MilkDrop and is hardware accelerated by the PFPU and TMU2.

  • Port the existing rendering code (in the SoC demo firmware, which was shown on http://www.vimeo.com/9531921) to Linux, using SDL and the TMU2 and PFPU libraries plus ALSA for audio input.
  • Implement more MilkDrop features (wave modes, per-pixel equations, ...).
  • Test presets and, when they don't match the original, find out why.

[edit] VJ application

Knowledge of the C language is necessary.

  • Develop a neat user-friendly interface using Genode FX. This is for high level programmers and usability experts!
  • Integrate the renderer into the Genode FX-based code.

[edit] QEMU

Knowledge of the C language, system programming, assembly and embedded systems is essential.

The QEMU emulator already supports many parts of the Milkymist system, including the CPU, UART, timer video framebuffer, and keyboard+mouse. It can run the port of Linux. However, simulation models of several special peripherals are missing.

[edit] Resources

  • Many tasks do not require access to a development board, the developed software can be tested on a x86 computer.
  • QEMU can be used to test compatibility with the embedded processor (LM32).
  • We will lend you a development board if you need one.
  • See also the Roadmap for hardware.
Personal tools