printer friendly version

support
contact us

VirtualLogix C5 - Frequently Asked Questions

C5 Operating System



What is the difference between VirtualLogix C5 "Carrier-Grade Edition" and VirtualLogix C5 "Developer Edition"?

VirtualLogix C5 "Carrier-Grade Edition" integrates optimizations and features which are not available in the VirtualLogix C5 "Developer Edition". It is a thoroughly validated packaged product, intended for industrial use, and on which VirtualLogix provides extended support services, custom engineering projects, consulting and training. VirtualLogix C5 "Carrier-Grade Edition" is supplied on a subscription basis with no-royalty fee for deployed systems.

 

VirtualLogix C5 "Developer Edition" is intended to be used as a source for innovation and development projects by the Open Source community. VirtualLogix C5 "Developer Edition" is available for free download from SourceForge.net.

Which host development systems are supported?

The VirtualLogix C5 host-target development environment is currently supported on Linux and Solaris 8 operating environments.

Which target hardware systems are supported by VirtualLogix C5?

VirtualLogix C5 currently supports the following targets:

 

Processors

Reference BSPs

Intel 386/486
Intel Pentium - Pentium II - Pentium III
Intel Celeron

i386at
CPN5360

PowerPC 750
PowerPC 74x0

mcp7xx for MCP750, MCPN750, MCPN765

PowerPC 7410

mcp820

PowerQUICC: MPC8xx

mpc8xxADS

PowerQUICC II: MPC8260

sbc8260

PowerQUICC II: MPC8272

mpc8272ADS

PowerQUICC III: e500 core-based

mpc8560ADS

 

VirtualLogix C5 has been designed to be very easily ported to new processors or reference platforms. VirtualLogix C5 ancestors (ChorusOS) have been ported to UltraSPARC-IIi (CP1500), MicroSPARC II, ARM 7 (ARMPID 7T, Cogent CMA 220), 68K (Motorola QUADS, MVME 177), SH2 (SH7040), MIPS, etc... VirtualLogix undertakes customized or generic ports on request.

How much time is required to port VirtualLogix C5 to a new platform?

The VirtualLogix C5 device driver framework clearly separate device drivers that are portable and re-usable between platforms, from platform specific code required to power-up, boot and reset a given board.

In addition, VirtualLogix C5 defines the notion of BSP (Board Support Package) as the combination of:

 

  • a small piece of board specific code (power-on, boot, reset), which is well isolated in a board specific directory,
  • a platform configuration file, describing the memory map and the list of actors to be embedded into the system image for a given target board,
  • a collection of drivers (referenced into the configuration file above)

 

In this context, and assuming an already supported processor family, the time it takes to port VirtualLogix C5 to a new platform varies typically from a couple of weeks to a few months, depending on the number of new device drivers to write. VirtualLogix C5 workshop, our host-target development environment, is currently supported on Linux and Solaris 8 operating environments.

How can I port an existing driver to VirtualLogix C5?

The C5 microkernel in VirtualLogix C5 provides a powerful device driver framework supporting real-time, hardened, hot-swappable device drivers. This framework defines portability interfaces and a layered device driver structure that mimics the underlying hardware bus/device architecture:

 

  • the DKI (Driver to Kernel Interface) defines the interface to be used when implementing low level bus or device drivers (i.e. drivers directly using microkernel resources like a PCI host bridge or a CPU timer driver)
  • the DDI (Device Driver Interface) defines the interface to be provided at each level by a driver of a given bus or device class (e.g., PCI, ISA, Ethernet, UART, timer, watchdog, etc.)

 

In addition, VirtualLogix C5 BSD subsystem provides a BSD driver framework.

 

A BSD driver requires little work to be adapted to VirtualLogix C5 BSD subsystem. Typically it will be adapted to use DKI for memory (DMA) management, and DDI for hardware access (I/O, interrupt management).

 

A driver intended to run directly as a microkernel actor would additionally need to participate in the driver framework registration, initialization, probing, and event management scheme. Typically the code would be re-organized in "methods" and event handlers required by the C5 driver framework.

Is it possible to customize low level functions of VirtualLogix C5 (e.g. change scheduling policies or memory management)?

The C5 microkernel is composed of multiple functional modules. Some of these modules (like CORE executive) are mandatory. Others may be either included in the bootable system image or not (according to the microkernel configuration). Features supported by the C5 microkernel widely depend on its configuration.

 

For example, for a given processor architecture, the C5 microkernel may provide up to three different memory modules: FLM, PRM and VM. The FLM module implements a simple flat memory model sharing the same address space between microkernel and applications. The PRM module provides a protected memory model protecting the supervisor address space (which is shared between microkernel and trusted supervisor actors) against user applications running as user actors within its private user address space. The VM module provides a full Unix-like memory model including copy-on-write semantics as well as an interface to an external file system mapper allowing an OS personality module (running on top of the microkernel) to implement memory mapped files semantics.

 

It is thus possible to tune a microkernel profile in order to meet specific system requirements.

 

Moreover, the microkernel module framework is open enough to enable adding specific third party microkernel modules.

 

Note that the scheduling policies supported by the microkernel scheduler are not implemented as separate modules. They are all embedded into the CORE executive module. However, internal scheduler interfaces are flexible enough to allow easy addition of a new scheduling policy into the microkernel scheduler.

What programming languages are supported?

VirtualLogix C5 supports assembly, C, C++ and Java programming languages. VirtualLogix C5 comes with GNU CC (gcc) version 3.2 which enhances the overall performance as well as the compatibility with the latest C/C++ standards.

How much POSIX compliant is VirtualLogix C5 POSIX API? Have POSIX applications been ported to VirtualLogix C5?

VirtualLogix C5 conforms to POSIX IEEE Std 1003.1b. It also supports POSIX Real-time Synchronization system calls such as the rtMutex family.

 

A number of POSIX applications have been ported to VirtualLogix C5. This includes third-party products such as routing protocol stacks or Java Virtual Machines.

What are the differences between ChorusOS 4.0.1 and VirtualLogix C5?

Relative to ChorusOS 4.0.1, VirtualLogix C5 has been enhanced in several domains in order to meet high availability requirements of carrier-grade systems:

 

  • The POSIX API has been completed (fork/exec and signals).
  • Linux hosts are supported.
  • An instrumentation framework has been implemented to allow monitoring of system and applications.
  • Networking services have been significantly extended. The TCP-IP protocol stack supports IPv6 and the RPC messaging library has been extended to provide one-way messages.
  • The boot framework supports the DHCP protocol.
  • The device driver framework has been extended by a management proxy that allows supervisor applications to perform management operations without any knowledge of the DDI/DKI interfaces.
  • Up-to-date C and C++ support based on gcc 3.2.

 

Detailed information can be found in the C5 Transition Guide.

Is the VirtualLogix C5 documentation free?

Yes, VirtualLogix C5 documentation is free. The complete set of documentation in HTML format is available here.