wiki:Developer/OpenProjects

Version 333 (modified by C Rempel, on May 25, 2013 at 7:38:40 PM) (diff)

/* Tools and Development Environment */

Open Projects

Welcome! Whether you're here because of Summer of Code (SOC) or just want to scratch an itch to hack, we invite you to peruse our projects and ask about them on the RTEMS mailing list or IRC. If you plan to submit a proposal to do something for the RTEMS Project as part of a SOC, see Getting Started for SoC Students. RTEMS projects span kernel hacking, adding support for a new board (BSP), improving the development environment, developing tests, and more.

If you want to get your feet wet with RTEMS then check out our small projects page? where you can find projects that require little coding skill and are appropriate for those new to RTEMS or open source software projects. If you are interested in one of these projects but are not able to code and test it yourself, consider sponsoring one of the core RTEMS developers to do it for you. Volunteering or sponsoring is how things get done -- users keep RTEMS development alive!

Most of these projects will take between a few weeks and a few months of effort by a person who is familiar with the general use of GNU/Linux and GNU tools. Many RTEMS projects are done by student or volunteer coders, so we try to define small projects or subtasks that can be completed and committed individually. Most of the projects are feasible as a Summer of Code project. Since some projects have multiple steps, students should work with prospective mentors to define the scope of work in their proposal. Similarly, some projects might be a starting point for a class project or graduate thesis.

Overview

The order of projects in the list does not reflect their importance, difficulty, or feasibility. Our project list is not exclusive: if you have an idea, solicit feedback from the project's mailing list or IRC channel; many developers sit in IRC and check it (and their email) infrequently throughout the day, so be patient! There may or may not be enough work on a project to constitute an SOC project, and some of these are past SOC projects. If you are interested in one of these, please ask on the mailing list or IRC.

Projects in Bold text are higher priority simply meaning that users or developers have expressed a lot of interest in such projects. Projects in Italic text have had some work done and may need an updated description, might be complete already, and may or may not have sufficient work remaining.

If you have a new project add it to the appropriate list below, link to a wiki page that follows the recommended Open Project Template?, and briefly (1-2 sentences) summarize the project and how it will improve RTEMS.

Testing

Testing a large body of software like RTEMS is in a continual state of improvement. There is always a need for more test cases and easier ways to run them all and decode the results. In addition, we want to be able to run all tests on as many hardware and simulator configurations as possible. Testing doesn't sound exciting to most people but when you combine the breadth of what we need to test with our desire for 100% instruction and branch path coverage, you get some very interesting and challenging work.

Some of the identified activities which would augment our testing capabilities are listed here:

Tools and Development Environment

RTEMS applications are cross-compiled on a development host to produce executables that are transferred to and executed on target systems. The projects in this section focus on the host side of that equation. This means they will run on a developer's computer and possibly communicate with embedded hardware.

The following areas have been identified for projects related to improving RTEMS development:

RTEMS_Run-Time_Oriented

The_projects_in_this_category_are_more_focused_on_the_development_of_software_that_runs_on_RTEMS_on_target_hardware.

Executive_(SuperCore?,_SuperCoreCPU,_libcpu):_a.k.a._kernel

  • _[[SMP_Improvements_to_SMP_support]_-_Multiprocessing_is_of_increasing_importance_in_modern_systems_and_we_want_RTEMS_to_remain_competitive_and_useful._This_is_a_large_project_and_subtasks_should_be_identified_before_writing_any_proposal.
    • _Implement_or_integrate_[[Atomic_Operations_MinGW_Tools_for_Windows_GDB_Python_GDB_Python]_Script_support_for_RTEMS
  • _Scripts_and_documentation_for_creating_and_installing_prebuilt_tool_packages:
    • _[[Building_Tool_RPM_Packages]
    • _[[DebianHostedToolsDebian_Packages]
    • _[[MacOSHostedTools_MacOS_tools]
    • _[[MinGW_Tools_for_Windows]
    • _[[Canadian_Cross_Compiler_Building_Tool_RPM_Packages]
    • _[[DebianHostedToolsDebian_Packages]
    • _[[MacOSHostedTools_MacOS_tools]
    • _[[MinGW_Tools_for_Windows_GDB_Python_GDB_Python]_Script_support_for_RTEMS
  • _Scripts_and_documentation_for_creating_and_installing_prebuilt_tool_packages:
    • _[[Building_Tool_RPM_Packages]
    • _[[DebianHostedToolsDebian_Packages]
    • _[[MacOSHostedTools_MacOS_tools]
    • _[[MinGW_Tools_for_Windows]
    • _[[Canadian_Cross_Compiler]
  • _Improvements_to_the_[[RTEMS_Source_Builder_RTEMS_Source_Builder]_such_as_building_host_tools,_building_a_GUI,_and_improving_configuration_management_and_creation.

RTEMS_Run-Time_Oriented

The_projects_in_this_category_are_more_focused_on_the_development_of_software_that_runs_on_RTEMS_on_target_hardware.

Executive_(SuperCore?,_SuperCoreCPU,_libcpu):_a.k.a._kernel

  • _[[SMP_Improvements_to_SMP_support]_-_Multiprocessing_is_of_increasing_importance_in_modern_systems_and_we_want_RTEMS_to_remain_competitive_and_useful._This_is_a_large_project_and_subtasks_should_be_identified_before_writing_any_proposal.
    • _Implement_or_integrate_[[Atomic_Operations]._SMP_code_requires_additional_synchronization_primitives_that_are_not_available_currently_in_RTEMS.
  • _Unified_Interrupt_and_PCI_APIs_--_[[UnifiedAPIs_Building_Tool_RPM_Packages]
    • _[[DebianHostedToolsDebian_Packages]
    • _[[MacOSHostedTools_MacOS_tools]
    • _[[MinGW_Tools_for_Windows]
    • _[[Canadian_Cross_Compiler_Building_Tool_RPM_Packages]
    • _[[DebianHostedToolsDebian_Packages]
    • _[[MacOSHostedTools_MacOS_tools]
    • _[[MinGW_Tools_for_Windows_GDB_Python_GDB_Python]_Script_support_for_RTEMS
  • _Scripts_and_documentation_for_creating_and_installing_prebuilt_tool_packages:
    • _[[Building_Tool_RPM_Packages]
    • _[[DebianHostedToolsDebian_Packages]
    • _[[MacOSHostedTools_MacOS_tools]
    • _[[MinGW_Tools_for_Windows]
    • _[[Canadian_Cross_Compiler]
  • _Improvements_to_the_[[RTEMS_Source_Builder_RTEMS_Source_Builder]_such_as_building_host_tools,_building_a_GUI,_and_improving_configuration_management_and_creation.

RTEMS_Run-Time_Oriented

The_projects_in_this_category_are_more_focused_on_the_development_of_software_that_runs_on_RTEMS_on_target_hardware.

Executive_(SuperCore?,_SuperCoreCPU,_libcpu):_a.k.a._kernel

  • _[[SMP_Improvements_to_SMP_support]_-_Multiprocessing_is_of_increasing_importance_in_modern_systems_and_we_want_RTEMS_to_remain_competitive_and_useful._This_is_a_large_project_and_subtasks_should_be_identified_before_writing_any_proposal.
    • _Implement_or_integrate_[[Atomic_Operations_MinGW_Tools_for_Windows_GDB_Python_GDB_Python]_Script_support_for_RTEMS
  • _Scripts_and_documentation_for_creating_and_installing_prebuilt_tool_packages:
    • _[[Building_Tool_RPM_Packages]
    • _[[DebianHostedToolsDebian_Packages]
    • _[[MacOSHostedTools_MacOS_tools]
    • _[[MinGW_Tools_for_Windows]
    • _[[Canadian_Cross_Compiler_Building_Tool_RPM_Packages]
    • _[[DebianHostedToolsDebian_Packages]
    • _[[MacOSHostedTools_MacOS_tools]
    • _[[MinGW_Tools_for_Windows_GDB_Python_GDB_Python]_Script_support_for_RTEMS
  • _Scripts_and_documentation_for_creating_and_installing_prebuilt_tool_packages:
    • _[[Building_Tool_RPM_Packages]
    • _[[DebianHostedToolsDebian_Packages]
    • _[[MacOSHostedTools_MacOS_tools]
    • _[[MinGW_Tools_for_Windows]
    • _[[Canadian_Cross_Compiler]
  • _Improvements_to_the_[[RTEMS_Source_Builder_RTEMS_Source_Builder]_such_as_building_host_tools,_building_a_GUI,_and_improving_configuration_management_and_creation.

RTEMS_Run-Time_Oriented

The_projects_in_this_category_are_more_focused_on_the_development_of_software_that_runs_on_RTEMS_on_target_hardware.

Executive_(SuperCore?,_SuperCoreCPU,_libcpu):_a.k.a._kernel

  • _[[SMP_Improvements_to_SMP_support]_-_Multiprocessing_is_of_increasing_importance_in_modern_systems_and_we_want_RTEMS_to_remain_competitive_and_useful._This_is_a_large_project_and_subtasks_should_be_identified_before_writing_any_proposal.
    • _Implement_or_integrate_[[Atomic_Operations]._SMP_code_requires_additional_synchronization_primitives_that_are_not_available_currently_in_RTEMS.
  • _Unified_Interrupt_and_PCI_APIs_--_[[UnifiedAPIs]
  • _[[RTEMSSystemEventskqueue(2)_or_taskqueue(9)]_is_a_project_to_port_the_kqueue(2)_or_taskqueue(9)_API_from_FreeBSD.
  • _Add_cache_manager_support_for_architectures_not_having_it.
  • _[[TinyRTEMS MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows]
    • [[Canadian Cross Compiler Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows GDB Python GDB Python] Script support for RTEMS
  • Scripts and documentation for creating and installing prebuilt tool packages:
    • [[Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows]
    • [[Canadian Cross Compiler]
  • Improvements to the [[RTEMS Source Builder RTEMS Source Builder] such as building host tools, building a GUI, and improving configuration management and creation.

RTEMS Run-Time Oriented

The projects in this category are more focused on the development of software that runs on RTEMS on target hardware.

Executive (SuperCore?, SuperCoreCPU, libcpu): a.k.a. kernel

  • [[SMP Improvements to SMP support] - Multiprocessing is of increasing importance in modern systems and we want RTEMS to remain competitive and useful. This is a large project and subtasks should be identified before writing any proposal.
    • Implement or integrate [[Atomic Operations MinGW Tools for Windows GDB Python GDB Python] Script support for RTEMS
  • Scripts and documentation for creating and installing prebuilt tool packages:
    • [[Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows]
    • [[Canadian Cross Compiler Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows GDB Python GDB Python] Script support for RTEMS
  • Scripts and documentation for creating and installing prebuilt tool packages:
    • [[Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows]
    • [[Canadian Cross Compiler]
  • Improvements to the [[RTEMS Source Builder RTEMS Source Builder] such as building host tools, building a GUI, and improving configuration management and creation.

=RTEMS Run-Time Oriented=

The projects in this category are more focused on the development of software that runs on RTEMS on target hardware.

==Executive (SuperCore?, SuperCoreCPU, libcpu): a.k.a. kernel==

  • [[SMP Improvements to SMP support] - Multiprocessing is of increasing importance in modern systems and we want RTEMS to remain competitive and useful. This is a large project and subtasks should be identified before writing any proposal.
    • Implement or integrate [[Atomic Operations]. SMP code requires additional synchronization primitives that are not available currently in RTEMS.
  • Unified Interrupt and PCI APIs -- [[UnifiedAPIs Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows]
    • [[Canadian Cross Compiler Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows GDB Python GDB Python] Script support for RTEMS
  • Scripts and documentation for creating and installing prebuilt tool packages:
    • [[Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows]
    • [[Canadian Cross Compiler]
  • Improvements to the [[RTEMS Source Builder RTEMS Source Builder] such as building host tools, building a GUI, and improving configuration management and creation.

=RTEMS Run-Time Oriented=

The projects in this category are more focused on the development of software that runs on RTEMS on target hardware.

==Executive (SuperCore?, SuperCoreCPU, libcpu): a.k.a. kernel==

  • [[SMP Improvements to SMP support] - Multiprocessing is of increasing importance in modern systems and we want RTEMS to remain competitive and useful. This is a large project and subtasks should be identified before writing any proposal.
    • Implement or integrate [[Atomic Operations MinGW Tools for Windows GDB Python GDB Python] Script support for RTEMS
  • Scripts and documentation for creating and installing prebuilt tool packages:
    • [[Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows]
    • [[Canadian Cross Compiler Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows GDB Python GDB Python] Script support for RTEMS
  • Scripts and documentation for creating and installing prebuilt tool packages:
    • [[Building Tool RPM Packages]
    • [Debian Packages?
    • [[MacOSHostedTools MacOS tools]
    • [[MinGW Tools for Windows]
    • [[Canadian Cross Compiler]
  • Improvements to the [[RTEMS Source Builder RTEMS Source Builder] such as building host tools, building a GUI, and improving configuration management and creation.

=RTEMS Run-Time Oriented=

The projects in this category are more focused on the development of software that runs on RTEMS on target hardware.

==Executive (SuperCore?, SuperCoreCPU, libcpu): a.k.a. kernel==

  • [[SMP Improvements to SMP support] - Multiprocessing is of increasing importance in modern systems and we want RTEMS to remain competitive and useful. This is a large project and subtasks should be identified before writing any proposal.
    • Implement or integrate [[Atomic Operations]. SMP code requires additional synchronization primitives that are not available currently in RTEMS.
  • Unified Interrupt and PCI APIs -- [[UnifiedAPIs]
  • [[RTEMSSystemEvents kqueue(2) or taskqueue(9)] is a project to port the kqueue(2) or taskqueue(9) API from FreeBSD.
  • Add cache manager support for architectures not having it.
  • [[TinyRTEMS] is an umbrella term that corresponds to any activities or ideas that could shrink the code and data space requirements for RTEMS. The goal is to progressively lower the minimum CPU requirements.
  • Improve the RTEMS SuperCore Scheduler?
  • Paravirtualization? of RTEMS to make it suitable to be run as a guest OS in a hypervisor.
  • MMU Support? for RTEMS.
  • RTEMS Sequenced Initialization? is a project to allow RTEMS initialization to be dynamically constructed based upon user requirements. It would be like C++ global constructors conceptually.
  • ISO9660 file system?
  • Condition Variables? for the Classic API.

==Debugging==

==Board Support Package (BSP)==

  • RTEMS can always use more BSPs for Simulators?. Being able to test, debug, and perform coverage analysis on simulators is critical to the ongoing success of the project.

==API Layers (POSIX, Classic, SAPI)==

==rtems-libbsd==

  • Update the RTEMS TCP/IP stack? - The networking stack is old and showing it. This project actively underway. At a high level, this effort requires porting the TCP/IP stack and providing support functional equivalents of multiple BSD kernel constructs. This project has many subprojects many of which are appropriate for SOC. It would be of great usefulness to the community to get as many of these does as an SOC project as possible.
  • port BSD USB stack?

==Languages==

V8 is high performance JavaScript? engine. It was writen in C++ and it can be embedded into a C++ application. With V8 it would be easier for user to build web server with javascript and even run js framework node.js.

==Libraries and Applications==

  • Identify and implement the functionality currently missing in dup()
  • Port Transparent IPC (http://tipc.sourceforge.net/index.html) to RTEMS
  • Implement a Simple Line Editor?. Existing code can be refactored for starting point.
  • Dynamic Object File Loading lets a base application with RTEMS dynamically load the rest of the application. The dynamic parts can be optional features and never loaded, or upgraded replacements for parts of the application.
  • RTEMS Toolkits - We are defining collections of libraries and support programs which make it easier to get started for certain types of applications. We haven't identified all potential toolkits or components. Each potential component must be evaluated for license and appropriateness for use in an embedded environment like RTEMS. We also should define some guidelines about creating and maintaining toolkits in general. Here are the toolkits areas identified so far:
  • Turn the current port of LWIP into a first class citizen. Submit port, make target independent, create maintenance plan.
  • IDL/COM? Support for RTEMS.
  • Make Addon Package? - write a tool to help other developers with Libraries, Languages, and Applications

=Retired Projects=

The following projects are complete or pending.

=Obsolete Projects=

Some projects have been proposed that are viewed as being of minor use. This list is meant to provide a way to avoid wasted effort on projects that are not widely desired. However, projects on this list might still be useful to someone, given a motivated individual to work on them.