GoogleCodeInProjects
From RTEMSWiki
|
|---|
If RTEMS is to participate in Google Code-In, then we have to have a nice list of small tasks divided into the following categories and rated by difficulty (e.g. Easy, Medium, Hard). This is the list that participants will view.
In order to get an idea of the scope of projects, please visit Google Highly Open Participation Contest Projects which lists links to the project issues tackled during the GHOP.
Code
Tasks related to writing or refactoring code
Merged RSS Feed
Difficulty: Hard
RTEMS is used by multiple applications that have their own RSS feeds. We would like to provide a single RSS feed for the set of applications using RTEMS.
Identify a tool that merges RSS feeds and use that to merge a few RSS feeds for us. We will want to make this available via our website.
Add a POSIX Timing Test
Difficulty: Hard
This task consists of adding a benchmark test to the RTEMS POSIX Timing Test Suite. There are templates for each benchmark pattern we have identified. The task consists of identifying the correct pattern, instantiating it using the "mktest" script, and then filling that in with the appropriate calls.
This task can be instantiated for multiple areas in POSIX but the following is a typical set for communications and synchronization objects. A GSOC 2011 project implemented many tests for semaphores, message queues, etc., but there are still many left to implement. Example areas include thread cancellation services and spinlocks.
- pthread_cancel - single case
- pthread_setcancelstate - no cancellation case
- pthread_setcancelstate - cancellation occurs
- pthread_setcanceltype - single case
- pthread_testcancel - no cancellation case
- pthread_testcancel - cancellation occurs
- pthread_cleanup_push - single case
- pthread_cleanup_pop - single case
- pthread_spin_init - single case
- pthread_spin_destroy - single case
- pthread_spin_lock - available
- pthread_spin_trylock - available
- pthread_spin_trylock - not available
- pthread_spin_unlock - single case
There are likely 50-100 instances of this task possible.
Classic API Manual Examples
Difficulty: Hard
Our manual is pretty good but we do not have easy to read and understand example implementations of the typical usage patterns as presented in textbooks. This task consists of taking an existing example from another source and modifying it to use the RTEMS Classic API or POSIX API. The code must be presentable enough where it could be included in a user manual.
TBD: RTEMS folks look in other places for specific examples. For example, write bounded buffer in terms of RTEMS Classic API or POSIX services.
This task can be instantiated at least 20 times.
Documentation
Tasks related to creating/editing documents
POSIX Compliance Spreadsheet
Difficulty: Hard
If you are a spreadsheet wizard, this is a task for you. RTEMS has a Google Docs spreadsheet to track compliance with the Open Group's Single UNIX Specification. This spreadsheet has most of the raw compliance information already entered but is missing the formulas that would check which features RTEMS has and see how compliant we are with the four POSIX profiles. A profile is simply a subset of the calls defined in the full standard.
Finish a POSIX API Chapter
Difficulty: Medium
RTEMS has permission to use information from the Open Group's Single UNIX Specification in our RTEMS POSIX API User's Guide. Each of the chapters in this manual is incomplete to a greater or lesser extent. The document is written in texinfo. This task consists of completing a chapter.
This task can be instantiated for the following chapters:
- Process Creation and Execution Manager
- Process Environment Manager
- Files and Directories Manager
- Input and Output Primitives Manager
- Device- and Class- Specific Functions Manager
- Language-Specific Services for the C Programming Language Manager
- System Databases Manager
- Semaphore Manager
- Mutex Manager
- Condition Variable Manager
- Memory Management Manager
- Scheduler Manager
- Clock Manager
- Timer Manager
- Message Passing Manager
- Key Manager
- Thread Cancellation Manager
BSP Wiki Pages Info Boxes
Difficulty: Easy
RTEMS uses a Mediawiki installation for its wiki. Each embedded board supported by RTEMS is supposed to have its own wiki page. There is an Infobox on the upper right hand side of each BSP wiki page. Some BSPs do not have BSPs and even those that do have pages created do not always have a completed Infobox. This is necause we learned how to implement the Infoboxes after the pages were added, most of them are just stubs. The Infobox template is here and is the complete view of the fields available. A reasonably good example of a filled in Infobox is the Blackfin BF537 Stamp BSP page.
This task consists of finding the vendor specification on a particular board (which should be publicly available) and filling in the Infobox. The master list of Board Support Package pages is on the Board Support Package Information page. There are approximately 100 pages in this group.
This task can be instantiated for each of the BSP wiki pages. Tasks are possible for the BSPs below:
- GDB ARM Simulator -- armulator
- EDB7312 -- edb7312
- Cogent CSB336 -- csb336
- Cogent CSB337 -- csb337
- Cogent CSB637 -- csb637
- GameBoy Advance -- gba
- GamePark GP32 -- gp32
- RTL22xx (Philips/NXP ARM7) -- rtl22xx
- RTL22xx_t (Philips/NXP ARM7 in Thumb mode) -- rtl22xx_t
- GamePark Holdings GP2X -- gp2x
- SMDK2410 for Samsung's s3c2410 ARM9 -- smdk2410
- Gumstix with PXA255 or PXA270 cpu --gumstix
- NXP LPC24XX (QVGA Base Board from Embedded Artists) -- lpc24xx
- NXP LPC32XX (phyCORE LPC3250 RDK) -- lpc32xx
- AVRTest
- GDB H8/300 Simulator -- h8sim
- i386ex
- PC Compatible for i386, i486, Pentium, and AMD CPUs pc386
- ts_386ex
- Lattice EVR 32
- Milkymist
- M32CSIM
- M32RSIM
- DY-4 DMV152 -- dmv152
- Generic MC68302 -- gen68302
- Generic MC68340 -- gen68340
- Generic MC68360 -- gen68360
- Motorola IDP -- idp
- Motorola MCF5206Elite -- mcf5206elite
- Motorola MCF5235EVB -- mcf5235
- Motorola MCF52235EVB -- mcf52235
- Motorola MCF5329EVB -- mcf5329
- Freescale MCF548x -- genmcf548x
- Mini RoboMind board -- mrm332
- Motorola MVME135 and MVME136 -- mvme136
- Motorola MVMV147 -- mvme147
- Motorola MVME147s -- mvme147s
- Motorola MVME162 -- mvme162
- Motorola MVME162LX -- mvme162lx
- Motorola MVME167 -- mvme167
- ods68302
- BSVC Simulator 68000 -- sim68000
- BSVC Simulator CPU32 -- simcpu32
- Avnet MCF5282 ColdFire -- av5282
- Cogent CSB250 and CSB350 -- csb350
- Cogent CSB360 -- csb360
- Arcturus Networks uCDIMM ColdFire 5282 -- uC5282
- Cogent CSB650 -- csb650
- Cogent CSB655 -- csb655
- Generic Mongoose V -- genmongoosev
- Hurricane V320USC -- v320usc
- Toshiba JMR3904 -- jmr3904
- Toshiba RBTX4925 -- rbtx4925
- Toshiba RBTX4938 -- rbtx4938
- Generic IDT 4600 -- p4000
- Generic IDT 4650 -- p4650
- DY-4 DMV177 -- dmv177
- Embedded Planet EP5200 -- gen5200
- Frasca ETHCOMM -- eth_comm
- Generic PPC405 -- gen405
- IMD Helas 403 -- helas403
- Motorola MBX8xx series -- mbx8xx
- Motorola MCP750 -- mcp750
- Motorola Shared BSP -- motorola_powerpc
- Freescale MPC5200Lite aka IceCube (based on MPC5200) -- gen5200
- Freescale MPC8349EMDS (based on MPC8349) -- gen83xx
- Freescale MPC8313RDB (based on MPC8313E) -- gen83xx
- Freescale MPC5200Lite -- gen5200
- AMCC Haleakala PPC405EX -- ppc405ex
- Motorola MPC8260 ADS -- mpc8260ads
- Motorola MTX603e -- mtx603e
- Motorola MVME2100 -- mvme2100
- Motorola MVME2307 -- mvme2307
- Motorola MVME2400 -- mvme2400
- Motorola MVME2600 -- mvme2600
- Motorola MVME2700 -- mvme2700
- Motorola MVME5500 -- mvme5500
- MicroSys PM520 (based on MPC5200) -- gen5200
- GDB PowerPC Simulator -- psim
- Radstone PPCn/60x -- ppcn_60x
- Vista Controls Score603e -- score603e
- Intec SS555 -- ss555
- Radstone Empower EP1A -- ep1a
- Xilinx Virtex-4 -- virtex
- TQ Components TQM8xx -- tqm8xx
- gensh1
- gensh2
- gensh4
- shsim
- sim7032
- sim7045
- simsh4
- ERC32 with FPU
- ERC32 without FPU - unnecessary after 4.6.5
- SPARC Instruction Simulator (sis)
- leon2
- leon3
- Sparc64 UltraSPARC III
- Sparc64 UltraSPARC T1
- eZKit533
- ADSP-BF537 STAMP
Check the list left against was done in GCI 2010 before publishing a task.
Outreach
Tasks related to community management and outreach/marketing
Presentation to peers on RTEMS
Difficulty: Medium
This task consists of creating a presentation in either PowerPoint of OpenOffice Impress on RTEMS which is targeted at persons who would be of the appropriate age for Google Code-In (13-18). The presentation should include speaker notes and be at least 10 minutes in length.
New Logos for RTEMS
Difficulty: Medium
This task consists of creating a designing a new logo for RTEMS. We would like the result to be modifiable in in an open source tool and either a vector graphic or a high resolution bitmapped image. If the RTEMS developers like it, we can follow this up with another task to produce the graphics in various sizes and with transparency layers. We will want to be able to use it on web sites, print, t-shirts, stickers, etc.
Design an RTEMS T-Shirt
Difficulty: Medium
This task consists of creating a designing a t-shirt design for RTEMS. We would like the result to be modifiable in in an open source tool and either a vector graphic or a high resolution bitmapped image. If the RTEMS developers like it, we can follow this up with another task to produce the graphics in various sizes and with transparency layers. We will want to be able to use it on web sites, print, t-shirts, etc.
Getting Started for your Peers
Difficulty: Medium
As a project, we try to make RTEMS approachable for new comers. Help us by making our existing getting started howto's even easier. There is a Getting Started manual (HTML) and a number of wiki pages. But they are written by people who are familiar with RTEMS and how to install it. Review one of the Getting Started documents and give us guidance.
Info for flyers for various projects using RTEMS
Difficulty: Easy
The RTEMS Project has a number of flyers on various projects which have used RTEMS. Each of these flyers is based upon a Wiki page about that project with the same text and pictures. This task consists of preparing a wiki page on a an RTEMS application which consists of approximately one page of text, 2 or more nice pictures or figures about the project, and a few URLs of reference for more details. The information on the flyers is presented in a very uniform manner.
When you take one of these tasks, you may be given an email address of a contact for that project to obtain information from.
This task can be instantiated for at least the following projects:
- Stanford Linear Accelerator Center (SLAC)
- Canadian Light Source
- Brookhaven National Laboratories
- Mitre Centaur Robot
- NASA Express Logistics Carrier (ELC)
- BMW Superbike
There should be more applications we can identify if this is a popular task.
Quality Assurance
Tasks related to testing and ensuring code is of high quality
Test Documentation Files update
Difficulty: Medium
This task consists of reading an existing test and its associated Test Description File (TDF) and verifying that the TDF accurately represents the contents of the test and is in the correct format.
Each task will do this for a single test program. There are approximately 280 TDFs in RTEMS so this task can be instantiated a significant number of times.
Test Coverage HTML Improvements
Difficulty: Easy
This task consists of modifying the existing Bourne shell script that generates the primary table of results per target. There are columns in the table which are not necessary since it is constant in each table instance. The heading for each table should then be modified to reflect the information. An example of this can be found in the erc32 coverage results. Columns 2 through 4 are constant and should be represented in the header.
This is a single task with no instantiation option.
Research
Tasks related to studying a problem and recommending solutions
Identify new microprocessor architectures appropriate for RTEMS
Difficulty: Easy to Medium
Although most computer users are only familiar with the x86, PowerPC (Mac), and ARM (phones, etc.), there are at least a dozen other microprocessor architectures used in embedded systems. Identify one which RTEMS is not available for and determine if it is feasible to port RTEMS to it. If it is not feasible, identify why. If it is feasible, look at the features of the architecture that would be important to the person porting RTEMS to this architecture. The expected result is a short paper.
Test Coverage Status Reporting Improvements
Difficulty: Medium
The RTEMS developers are not web experts and we are sure there are ways in which the information presented in the test coverage reports can be improved. Your task is to identify how we can improve the presentation. Possible areas are using some JavaScript to make the reported data more dynamically accessible, reformatting to improve readability, etc..
The only idea we currently have is to use JavaScript to make the main tables dynamic.
This is probably one task which could be repeated if the first person leaves room.
Identify a Timeline Visualization Tool
Difficulty: Medium
RTEMS systems have the option to capture timestamped data about what is happening in the system. But reading long files with timestamped messages is not a good way to get insight into the run-time behavior of a system. Find us a free, open source timeline visualization tool which can be taught to read the RTEMS captured information.
Ideal solution would be one which dynamically updates as input arrives and is flexible on input sources (e.g. files, sockets, etc).
This could be multiple tasks if there are multiple visualization tools.
eBook Formats for RTEMS Documentation
Difficulty: Medium
It would be nice to offer the RTEMS Document Set in an ebook format so it is available in a suitable format for cell phones, eReaders, PDAs, etc. This project is to evaluate the formats, their openness, availability of readers on a wide variety of platforms, etc.. We want to know which format is best for a FOSS project to produce and how that format can be produced using our Texinfo documentation source.
Reference: http://en.wikipedia.org/wiki/Comparison_of_e-book_formats
This is one task. A follow up may be to actually produce the eBook.
Switch to texi2html
Difficulty: Hard
RTEMS is using an old and non-standard tool called texi2www. Switch us over to the standard texi2html.
Training
Tasks related to helping others learn more
Create Moodle Questions
Task: Easy
This task consists of reading a chapter in the RTEMS Application C User's Guide and writing at least twenty (20) questions in a format appropriate for the RTEMS installation of Moodle.
The questions should be written in the GIFT format.
This task can be be instantiated for each of the following chapters:
- Key Concepts
- RTEMS Data Types
- Initialization Manager
- Task Manager
- Interrupt Manager
- Clock Manager
- Timer Manager
- Semaphore Manager
- Message Manager
- Event Manager
- Signal Manager
- Partition Manager
- Region Manager
- Dual-Ported Memory Manager
- I/O Manager
- Fatal Error Manager
- Scheduling Concepts
- Rate Monotonic Manager
- Barrier Manager
- Board Support Packages
- User Extensions Manager
- Configuring a System
- Multiprocessing Manager
- Stack Bounds Checker
- CPU Usage Statistics
- Object Services
- Chains
Check the list left against was done in GCI 2010 before publishing a task.
Translation
Tasks related to localization
Translate Project Flyers to Another Language
Difficulty: Easy
The RTEMS community is unusual in that most engineers in the world can read and write English even if they cannot speak it very well. So we are not in need of having our entire documentation set translated into other languages. However, getting translations of the marketing literature we have to other languages would be nice.
This task can be instantiated for each of the following:
- RTEMS Trifold Flyer
- RTEMS Users Flyer
- Introduction to RTEMS Presentation
- Translate existing project flyers into other languages
User Interface
Tasks related to user experience research or user interface design and interaction
Adapt Linux Trace Toolkit (LTT) Visualization Took
Difficulty: Hard
Investigate the use of the LTT Visualization Tool and its input file format(s). The goal is to use it to display traces from the RTEMS Capture Engine. Your goal is to get it to display an arbitrary timeline.
This will provide us with the definition of the input files so the RTEMS Capture Engine's output can be visualized using the LTT Visualization Tool.
Adapt an Eclipse Plug-In Module For Use In RTEMS Development
Difficulty: Hard
RTEMS is not a GUI application. Most RTEMS users only see a GUI when they are doing development. The most frequently used GUI development environment used by RTEMS developers is Eclipse. Take one of the Eclipse plugin modules identified as a research focused project and adapt it for use by the RTEMS community.