Gedare-Csphd

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Monday, 25 April 2011

RTEMS GSoC 2011

Posted on 15:51 by Unknown
Congratulations to the students accepted to participate in the GSoC 2011 with RTEMS as their mentoring organization!

Student: Christophe Huriaux
Project: Implementation of the ISO9660 filesystem
Goal: Implement the ISO9660 filesystem so that RTEMS can read CD, DVD, and similar media.

Student: Ricardo Aguirre Reyes
Project: POSIX Timing Tests
Goal: Implement a suite of tests to time POSIX routines.

Student: Cui Xiang
Project: POSIX Compliance Test Suite (misnomer)
Goal: Implement a suite of tests for filesystem testing.

Student: Petr Benes
Project: Porting of resource reservation framework to RTEMS executive
Goal: Port the FRESCOR resource reservation framework to support RTEMS.

Student: Quanming Shi
Project: RTEMS MMU Context Support
Goal: Implement an architecture independent API and structure to manage memory blocks with access attributes based on MMU Support.

Student: Scotty Smith
Project: Lua Scripting and Shell Support in RTEMS
Goal: Add Lua as a library in RTEMS and provide a Lua-based shell as an alternate to the current shell.

Student: Zhang Wenjie
Project: Hypervisor for RTEMS
Goal: Implement virtualization support in RTEMS kernel and demonstrate Linux running on RTEMS.

Student: Jie Liu
Project: RTEMS port of the GNU Java Compiler
Goal: Support compiling Java applications on RTEMS with the GCJ (for x86 at least).
Read More
Posted in RTEMS | No comments

Thursday, 14 April 2011

cvs diff -u

Posted on 18:20 by Unknown
I've previously mentioned the RTEMS project, in which I participated with for GSOC 2010 as a student with my modular scheduler project. This article is the first of what I hope to be a recurring segment on my blog about the happenings in RTEMS development. RTEMS has a fairly small active development community, so the sources do not change very rapidly. However, from release to release, the changes accumulate and it can be difficult to keep track of what has happened that might affect developers and end users. The changes are tracked on the RTEMS wiki, but the rationale, reasoning, and features that haven't been released are not necessarily represented.

This post describes some of the proposals, commitments, and debates for the RTEMS CVS since the 4.10 release, oldest to newest. rtems-4.10 was cut in 2010, some of these changes may have been back-ported already to the 4.10 release, which happened in February of 2011.

June and July, 2010
A few important changes were made in June and July that did not propagate to the 4.10 branch. (The actual cutting for 4.10 is a bit confusing.)

The ITRON API was removed.

Together with Eugen Leontie, I submitted the SPARC-V9 (sparc64) port of RTEMS, which was developed on the Niagara and Serengeti targets using the Simics functional simulator. [PRs 1560--1565]

Joel pushed a percpu patch that includes some controversial macros for accessing structure fields using compile-time offsets. This is the first in a series of patches to introduce SMP support to RTEMS, which is an ongoing effort.

Sebastian introduced the USB stack port, which has not yet been merged.

Sebastian requested a file systems test suite.

I proposed a new Periodic Manager for handling periodic tasks in the SuperCore. The Object model for the new Manager is not consistent with other Score objects, so the new Manager has not been merged.

I submitted a red-black tree for the SuperCore, which has been committed in April 2011. There are some improvements that were requested in the PR that were not made, namely to add support for non-integer keys and to consider replacing the bdbuf AVL with the red-black tree. Both of these would make good open projects.

August 2010
August marked the tail of the GSOC, so a lot of the commits were related to GSOC 2010 projects, in no particular order
  • Bharath Suri improved the RTEMS coverage to 96%, up from 80% when he started.
  • Alin Rus submitted his AIO improvements, which were slowly merged; the PR is still open.
  • Yann Sionneau's MilkyMist BSP was committed; the PR is still open, and Michael Walle submitted a rename patch that hasn't been merged.
  • Zhang Wenjie's Sequenced Initialization is finished but not committed.
  • Claudio Silva's ATAPI/SATA driver is finished but uncommitted.
  • Bob Kuo's Parrot work was fine on the RTEMS side, but there were issues with the Parrot side, although some progress was made.
  • Vinu Rajashekhar successfully ported GCC Go to RTEMS with all tests passed.
  • I submitted my modular scheduler framework, which supports the fixed priority scheduler.
I submitted an alignment bug fix, which causes ports that have CPU_STACK_ALIGNMENT=0 to crash. This bug-induced-bug was exposed in the lm32 port, and also affects other ports. [1733]

Sebastian Huber submitted an improvement to the memory allocator that provides protection for heap blocks.

Sebastian also proposed some API changes to Chains in the SuperCore. These changes are pervasive to Chain internals and provide better encapsulation of the Chain Handler. Code should not try accessing chain nodes directly. [See also: PR1711]

Sebastian requested that RTEMS consider moving from GNU intrinsics to the C99 standard. Ralf said that C99 support is incomplete in GCC and this issue has been postponed.

Joel started to use the Coverity Scanner tool to check for bugs and other code inconsistencies. At first, PRs raised due to Coverity scans were assigned by Coverity ID (CID), but the forward-compatibility, uniqueness, and availability of Coverity reports were listed at reasons to avoid using CID in ChangeLogs. Although consensus was not reached, CIDs no longer appear in ChangeLogs.

September 2010
Joel posted a patchset to add libdbm support, but it has not been committed.

Joel also proposed changes for pthreads/newlib; the changes were committed, although the PR is still open.

Sebastian pushed some macros for generic bit manipulations to the shared BSP utility.h file, which caused a bit of debate among the developers. Two issues were raised: first, whether such macros are useful; second, whether such macros should reside in the BSP_ namespace. The usefulness issue was not settled, but the macros were allowed to stay with a rename to include the BSP_ namespace.

October 2010
Joel posted a patchset on behalf of Marcello Presulli adding the LWIP networking stack. LWIP is proposed as an alternate to the BSD networking stack that RTEMS uses; the BSD stack does not work on targets with 256K ROM and 64K RAM. Because of concerns with maintenance and management of multiple networking stacks, the patchset will not be committed. Instead, an approach for connecting LWIP to an RTEMS build needs to be developed. There is an open project page, although it lacks details. Ralf is opposed to the idea and thinks there should be a single networking stack.

November 2010
Joel applied the clang tool to detect code inconsistencies.

December 2010
Joel posted and committed the scheduler simulator, an in-tree project that tests the scheduling subsystem as a host-based application.

Sebastien Bourdeauducq posted FTPD patches [1722,1724] that fix FTPD paths with spaces and adds FTPD authentication.

I posted an EDF scheduler, although that patchset is probably now out-of-date.

Sebastian Huber raised an issue about the lack of atomic timestamps. This has not been resolved.

Sebastian committed a change that added initialization of the loop-back interface during normal initialization of rtems_bsdnet_initialize_network. Existing code that attempts to use rtems_bsdnet_loopattach will fail.

January 2011
Jennifer Averett introduced an SMP patchset that adds an array of percpu structures for managing per-core data in an SMP configuration. There were some issues raised, including the outstanding problem with the existing percpu implementation. An area of concern continues to be the creep of BSP-like features into the SuperCore and the integration of a good spinlock API.

Sebastian raised an issue with the behavior of malloc(0): in RTEMS, it returns NULL; in FreeBSD and Linux, it returns a pointer. After much debate, it was decided to stay with the original behavior, so malloc(0) will continue to return NULL in RTEMS.

February 2011
Joel refactored the scheduler configuration to simplify it so that only one scheduler implementation can be configured. His change, while reasonable, added C99 struct initializers that break with C++. Peter Dufualt quickly pointed this out and it was corrected. Ralf made a complaint about the general use of initializers within the confdefs.h file, although no constructive alternative for configuring the scheduler has been put forth. Filesystem configuration is similarly done.

Jennifer posted a simple priority scheduler that was merged without much complaint. This patch gave OAR developers some experience with the modular scheduler framework; it is hoped that this scheduler can benefit TinyRTEMS, although the O(n) behavior is a concern.

Peter Dufault noticed that the VERSION file was out-of-date, and has been for awhile. This has been fixed.

Jennifer pushed i386 irq support into the libchip/serial/ns16550 driver in anticipation of a refactoring of the i386 BSP serial drivers to be BSP-independent, which should help porting Microwindows to more platforms that can support a libchip-based serial mouse driver.

Sebastian committed a change to the shared bsp/console.c file that alters how console devices are initialized. This affected the sparc64 console [1770], and possibly other console drivers too. The

There was some debate about the use of extern in header files. Ralf put forth the idea of requiring that all header files declare functions extern or static explicitly. No consensus was reached, and I suspect that functions will continue to be declared extern both implicitly and explicitly.

RTEMS 4.10 and 4.9.5 were released.

March 2011
The i386ex and ts_386ex BSPs were removed.

The erc32 console driver, which was replaced last year [1506], was updated by Joel to include polled mode as the default behavior.

Joel introduced and committed a new serial mouse driver under libmisc that is BSP-independent, and adapted the pc386 serial mouse to use the new driver.

Sebastian started work on bringing RTEMS support to the ARM Cortex-M by requesting tool support for ARM EABI 5. The request was postponed, but we can expect to see more work in this area coming down the pipe.

Jennifer committed a change to read the maximum possible SMP processors from a configuration variable. At first the new variable was a namespace violation, but this was fixed [1773]. Now SMP initialization can probe for the number of available cores, up to a configurable maximum.

Joel pushed a change that converted an strlen to strnlen call that was flagged by Coverity. Some debate was raised about the necessity and validity of the change. Joel reverted the change. This adds some doubt in my mind about committing changes suggested by Coverity directly to the CVS.

RTEMS was accepted as a mentoring organization for GSOC 2011. And that wraps up this post. Tune-in next time...
Read More
Posted in RTEMS | No comments
Newer Posts Older Posts Home
Subscribe to: Comments (Atom)

Popular Posts

  • Generating interrupts with a gem5 device
    Today I extended my work of adding a device to gem5 by causing the device to generate an interrupt. Interrupts seem to be architecture-spec...
  • RTEMS Modular Task Scheduler
    As I mentioned in my last post , this past summer I participated in the Google Summer of Code by working on the RTEMS project. I have hopef...
  • Extensible Data Structures in C
    A lot of systems programming code is done in C, primarily because of the exposure of explicit memory addresses, but for other reasons too. ...
  • On brevity
    Concise and compact diction is an art that I appreciate more each day. A taste of brevity comes in savoring a phrase that captures an idea w...
  • Spacecraft Flight Software Workshop
    MMS: a NASA mission that will fly RTEMS Last week I attended the Workshop on Spacecraft Flight Software (FSW 2011) at the Johns Hopkins Uni...
  • Post 0
    I've been thinking about starting a blog for awhile, but unlike some of my compulsions, I actually followed through this time.  Although...
  • OT: Apple Pie
    The holidays really give me a hankering for pie.  I made some apple pies awhile back after going apple picking, and I took a couple photos. ...
  • Software product country of origin (COO)
    Late last year, US Customs ( CBP ) issued an advisory ruling regarding how to determine the COO for software products when software is deve...
  • Critical Bugs and Quality Assurance
    Sebastian Huber recently posted a nasty RTEMS bug and fix. While simple, the bug manifested in their application as an increase in one task...
  • Understanding Energy and Power
    Lately I've been looking at power as an evaluation metric for my research. Power consumption has always been an important design concer...

Categories

  • cerification
  • computer architecture
  • computer security
  • COO
  • cooking
  • gem5
  • git
  • government
  • GSoC
  • hacking
  • LaTeX
  • life
  • linux
  • lolcat
  • Lua
  • mentorsummit
  • OOP
  • open source software
  • rant
  • research
  • RTEMS
  • science
  • sisu
  • space
  • thesis
  • VC
  • visualization
  • work

Blog Archive

  • ►  2013 (12)
    • ►  October (1)
    • ►  May (3)
    • ►  April (1)
    • ►  February (4)
    • ►  January (3)
  • ►  2012 (12)
    • ►  November (1)
    • ►  October (6)
    • ►  August (1)
    • ►  May (2)
    • ►  April (2)
  • ▼  2011 (29)
    • ►  December (5)
    • ►  November (3)
    • ►  October (2)
    • ►  September (2)
    • ►  August (2)
    • ►  July (5)
    • ►  June (2)
    • ►  May (2)
    • ▼  April (2)
      • RTEMS GSoC 2011
      • cvs diff -u
    • ►  March (2)
    • ►  February (1)
    • ►  January (1)
  • ►  2010 (19)
    • ►  December (2)
    • ►  November (2)
    • ►  July (3)
    • ►  June (2)
    • ►  May (3)
    • ►  April (2)
    • ►  March (5)
Powered by Blogger.

About Me

Unknown
View my complete profile