blueDonkey.org

Books.VxWorksToLinuxPreface

Preface


Introduction

Who Should Read this Book

This book is aimed at the current VxWorks user who is looking at, or currently in the process of migrating their system from Wind River's VxWorks real-time operating system to Linux. While many of the topics in here will be relevant to anybody working with Linux in the embedded space, there are perhaps other books that would be better for those starting from a fresh place to create an embedded Linux product.

It is expected that the reader will be familiar with many of the issues of embedded programming, as well as much of the terminology (though this book will include a glossary for many common terms). It is also expected that they will be familiar with at least the core parts of the VxWorks API. This book will not explain the usage of any VxWorks API, just how similar functionality can be achieved using Linux.

Why Migrate to Linux?

There are a number of reasons why you might find yourself needing to migrate some or all of your company's existing applications to a system built on Linux. Depending on your position within the organisation these include (but are not limited to):

  1. Your company's management has made the decision, and you now have to implement it.
  2. Your application needs features that VxWorks does not offer, but Linux does.
  3. Your company needs to cut the final system cost, and the VxWorks royalty (a.k.a. the Wind River Tax) is too high for the new budget.
  4. Your company's customers are asking for it.
  5. Your company's investors are asking for it.

Many of those are business reasons rather than technical ones, but the second is perhaps worthy of a little more information. What does Linux have that VxWorks does not offer? The table below highlights some of the more obvious ones within the kernel realm. When you start to look at the number of applications that can be run on a Linux system, there is no comparison.

Operating System Features
Feature Linux VxWorks
Multiple architectures
DONE
DONE
Runs without disc storage
DONE
DONE
Small footprint
1
1
Memory protection
DONE
2
Shared libraries
DONE
2
MMU-less systems
DONE
(uClinux)
DONE
Inter-process communication
DONE
DONE
Synchronisation primitives
DONE
DONE
POSIX compliance
DONE
partial
Real-time performance
3
DONE
Embedded graphics solution
DONE
$$$
Java VM
DONE
$$$
I/O Devices
Feature Linux VxWorks
USB
DONE
DONE
IEEE1394
DONE
$$$
CAN
DONE
$$$
BlueTooth
DONE
$$$
PCMCIA
DONE
limited
CardBus
DONE
 
I2C
DONE
 
X10 (Home Automation)
DONE
 
IrDA
DONE
 
ARCnet
DONE
 
Parallel port
DONE
limited
Keyboard & Mouse
DONE
limited
Networking
Feature Linux VxWorks
Full TCP/IP stack
DONE
DONE
Customisable TCP/IP stack
DONE
$$$
Number of network drivers
> 300
~30
802.11 support
DONE
$$$
802.1X support
DONE
$$$
RADIUS client
DONE
$$$
RADIUS server
DONE
 
NAT support
DONE
$$$
IPSEC
DONE
$$$
HTTP server
DONE
$$$
FTP client & server
DONE
DONE
PPP
DONE
$$$
Routing protocols
DONE
$$$
Firewall/packet filtering
DONE
 
QoS
DONE
 
SNMP
DONE
$$$
IPv6
DONE
$$$
NFS client & server
DONE
4
SMB client & server
DONE
5
File Systems & Media
Feature Linux VxWorks
Flash file system
DONE
DONE
Journalled file system
DONE
 
CD-ROM support
DONE
DONE
CD-RW support
DONE
 
DVD support
DONE
 
DOS/FAT16/FAT32 support
DONE
DONE
NTFS support
6
 
RAM file system
DONE
DONE
ROM file system
DONE
DONE
Compressed file system
DONE
 
UDF support
6
 

Notes:

  1. For comparable feature sets, the OS footprint is perhaps similar, but since VxWorks does not offer full memory protection, or the flexibility of the Linux I/O system, this comparison is hard to make. It is fair to say that the minimum size of the VxWorks kernel will be smaller than that for Linux.
  2. VxWorks AE offered memory protection and shared libraries for VxWorks, but has since been discontinued by Wind River. Their AE653 product, derived from the standard VxWorks AE, does offer memory protection but in a very specialised form (compliant with the ARINC 653 standard) that would make it difficult to use in many embedded applications. Currently, their only offering for adding any kind of memory protection to a VxWorks system is VxVMI, which does not really meet minimum requirements for memory protection.
  3. Standard Linux is far from being a real-time operating system, but there are a number of extensions, some commercial some freely available, that add some degree of real-time performance to Linux.
  4. While VxWorks does come with an NFS client and server, both have limitations. The client is not up to the latest standard, in particular it does not offer NFS over TCP. The server has had continued integration problems with the VxWorks DosFS file system, as well as both performance and reliability problems for some users.
  5. There is an extra-cost Wind River partner offering that provides SMB (the Windows network file system) support for VxWorks.
  6. Linux currently has read-only support (without enabling experimental options which would probably be considered unwise in an embedded device).

Wind River's new licensing scheme, and the platform products that are associated with it, may mean that some of the features listed as extra-cost in the table above become included in a base product. Others are partner offerings though, which will most likely remain extra-cost options.

ALERT! If you see any inaccuracies in the table above, please report them to me at john_94501@yahoo.com including links to more information where appropriate and I will do my best to update the table.

Is Linux Really Free?

I guess the short answer is no, Linux is not really free. While you can obtain the sources for the kernel, and most of the other things you will need free of charge from the internet, you will spend some time putting these together and making them work on your system. Whether this cost will be higher than purchasing a distribution will depend on your requirements and experience level (chapter 1 might give you some things to think about here). Either way, if you need some of the features that are unsupported, or require additional licensing from Wind River or one of its partners (including, often times, additional royalty payments for each system you deliver), you will probably find Linux to be cheaper. It will never be totally free though.

Additionally, while you have many more choices when it comes to tools and development environments, unless you choose to pay for an embedded development suite from a company such as RedHat or MontaVista you will be left with the work of building and maintaining cross-compilers and other development tools. Chapter 2 will provide more detail about getting a development environment set up, and maintaining it yourself. This is not so hard for somebody familiar with Linux software development, but is quite different from the install-and-run environments in commercial offerings, such as Wind River's Tornado.

What Other Books Should I Read

There are a number of good books out there for those working with Linux in general, and certainly having a familiarity with Linux on a desktop machine would be advantageous. For embedded Linux users though, I am finding a relatively new book, Building Embedded Linux Systems by Karim Yaghmour, to be very useful. It is available from most online and brick & mortar bookstores (and can almost certainly be ordered in your favourite store if they don't have it on the shelf - the ISBN code you need is 0-596-00222-X). This book can also be read online or downloaded as a PDF file from http://www.xml.com/ldd/chapter/book/index.html.

For device driver work, including getting an understanding of the internals of the Linux network stack, you should probably also get Linux Device Drivers, 2nd Edition by Alessandro Rubini and Jonathan Corbet. The ISBN for this one, in case you need to order from your local bookstore, is 0-596-00008-1.

Terminology

About the Editor

John Gordon is an embedded systems software specialist who has been working with VxWorks for almost 10 years. Most recently he was the systems designer, technical lead and the de-facto chief advocate for Wind River's VxWorks AE RTOS, and has been working on the core of the VxWorks runtime since 1998 when he joined Wind River. Prior to that, he worked for a U.K. defense contractor, where he was instrumental in the design of a very successful multi-processor VxWorks-based real-time system for use in naval electronic warfare equipment.

Currently, as well as contributing material, and overseeing the creation of this book and the VxWorks Cookbook, he is an embedded systems engineer working on embedded Linux based wireless networking products the San Francisco bay area. John also contributes regularly to the comp.os.vxworks usenet forum, and monitors a number of others where he contributes occasionally. He can be contacted at john_94501@yahoo.com, but will not respond to private requests for free assistance there (please post such requests to the appropriate usenet forum).

Acknowledgements

Add your TWiki username here if you make any contributions

-- JohnGordon - 20 Jul 2003

 
 
© 2003-5 blueDonkey.org, except where otherwise noted. All rights reserved.