Jun 29, 2005

How QNX Failed Amiga

The Amiga platform has exhibited amazing longevity for something so plagued by problems. And for a platform with such problems, it's been an excruciatingly slow march to resolve matters. Amiga is still running a twenty-year old operating system on chips that haven't been updated in over eleven years, and is only able to use anything modern through emulation or as an add-on card. What other platform offers accelerator cards faster than the main CPU by a factor of ten?

Accordingly, the sorry state of Amiga lays mostly to blame in its many sponsors over the years, from Commodore to Escom to Gateway and finally to Amiga, Inc. Each and every one of these companies have fumbled the ball in directing Amiga, burying it further and further every year. Third parties have stepped in to alleviate this, but can not push the platform ahead, only offer it short-term boosts that allow applications — and not the operating system — speed-ups and modern features.

Enter QNX Software Systems, contracted by Gateway in 1997 to create a desktop operating system based on its embedded QNX Neutrino micro-kernel environment. QNX was a significant player in the embedded industry and had a reputation for efficient, real-time systems that oversaw everything from medicine drips to auto-assembly robots. It looked like such finely-honed technology would be the proper bridge to the second coming of the Amiga. Appearances, however, can be deceiving.

Jun 26, 2005

Interview With QNX's Vince Davis

1. Since the acquisition of QNX Software Systems by Harman International, has the direction of QNX's software or strategy changed?

Vince Davis: Harman has taken the attitude that QNX Software Systems knows what's good for itself, and that what's good for QSS is good for Harman's telematics needs. So basically QSS retains its autonomy. Having said that, some things have changed, and for the better.

Harman's financial backing has helped us go ahead with research and implementation that would have otherwise waited, so we can be more aggressive in delivering new technology to the marketplace. This means we can compete more effectively in the embedded arena against some of our larger competitors, such as WindRiver and Microsoft, and support new hardware faster, closer to its release date.

2. How is the competition going with Linux/Montavista? What are QNX's advantages over Linux?

Vince Davis: Real-time Linux is simply real-time kernel extensions running on top of a non-real-time kernel. I guess one could say Linux's advantages over QNX would be that it's more familiar to some customers since their developers know Linux already. In other words, our competition with Linux in the embedded space is with customers' comfort and prior investment with Linux.

QNX is better for real-time applications because it is built from the ground up with our microkernel which requires fewer system resources to run and less development time to customize. Linux's regular monolithic structure with extensions is a real kludge, so system deployment is nowhere near as efficient during development or runtime. Projects that have very specific requirements benefit greatly from our software.

We're working on a porting guide and some slick porting tools for release with QNX Momentics 6.4 to help ease developers from Linux to QNX. Changes are already minimal since we use POSIX, but we're doing everything we can to make moving to QNX effortless. Eventually we'll be including more GNU tools as well, making the QNX experience more similar to Linux than ever (see below for more details).

3. How does QNX compare to WindowsCE?

Vince Davis: WinCE is a lot of things to a lot of people, and to discount Microsoft in the embedded market is foolish. We're always keeping abreast of competitor's progress, and having said that, QNX Neutrino compares to Windows CE favorably both in mindshare and technology.

The embedded market is a lot different than the desktop market, and Microsoft's desktop offerings are far from being reliable and stable. Microsoft has had to work very hard to make inroads to the embedded world beyond its existing partners. A lot of people see using software from Microsoft as a bad bet and tend to stay with proven technologies from established embedded market players.

As far as the technology goes, WinCE was once based on a sub-set of the Win32 API but has evolved on its own since then. So if you're familiar with Win32, writing for WinCE shouldn't be much of a problem. The problem lies in that Win32 was made for the desktop and was never that elegant; it was more of a forced march with a lot of hacks and fixes along the way.

QNX offers the standard POSIX API, which makes porting Unix software a breeze. Alongside that we offer Photon which was specifically built for running on small system with limited resources, so developer won't have to sacrifice a lot of the system to include a graphical interface. There are also many third-party libraries for use in writing software for QNX platforms.

The kernel of WinCE is specially written for WinCE and its specs aren't publicly available, but it is used in some soft real-time applications. It's probably a monolithic kernel, which compares poorly with QNX's microkernel model. In QNX the kernel just passes messages and talks to hardware, and all other processes — from TCP/IP stacks to Photon applications — run as processes outside the kernel.

4. A few years ago there was an interesting project, eQip. Are there any plans for smartphones or PDAs?

Vince Davis: eQip stand for "Embedded QNX on Intelligent Platforms" and began as an effort to port QNX Neutrino to the iPaq, but quickly broadened to other PDA platforms. It was basically the QNX platform for PDA systems. The project stalled out in early '04 for a number of reasons, one of which was that QNX integrated the efforts this project was focused on, making it redundant.

As for what QNX's plans for smart phones and PDAs are, I can't talk about a lot but I can say it's the one market where QNX is underrepresented and that's changing. QNX makes an excellent phone/PDA operating system platform, especially with QNX Neutrino 6.3's new energy management. I'd keep an ear open in the next year or so for more news regarding QNX on phones and PDAs.

5. Are there plans for a new desktop release of the QNX RTOS for x86? If yes, what features should we expect?

By the second half of '06 we'll release QNX Momentics 6.4, which will include the QNX Neutrino RTOS 6.4. This upgrade will be a large step forward for the platform just as QNX 6.3 was from QNX 6.2. Among the advancements:

  1. Integration of SMP support into one kernel. The SMP code is mature enough to sit in with the main kernel without a performance hit, so out of the box QNX will support up to four processors.
  2. More of the GNU software library is being ported to QNX. With QNX 6.4, QNX will host all of the typical command-line tools a regular distribution of Linux would include.
  3. Photon will support more modularization for ultra-embedded devices. There's some tweaks to how windows are rendered and buffers are retained, so there'll be less of a footprint than before.
  4. Compiles using remote resources, more command-line tool support in the GUI, more board support packages, GCC 4.0 integration, and better support for older target versions.
  5. Support for the latest Intel processors and chipsets, including the Pentium M and dual-core processors. QNX 6.4 should also be running on Apple's first wave of Intel Macintosh systems as well.

6. Do QNX Neutrino releases have code-names during development?

Vince Davis: Yes, though these generally aren't used beyond the development cycle. QNX 6.0 was Amiga, since it was supposed to be Amiga's new operating system. QNX 6.1 went by Homo Erectus because it was the first entirely QNX-driven release — our first to stand on its own — and Patches A and B were called Neandertal Man and Cro-Magnon Man respectively. We dubbed QNX 6.2 A Night at the Opera and its follow-up, QNX 6.2.1, A Day at the Races. QNX 6.3 was Godzilla and Service Pack 1 was Son of Godzilla. QNX 6.4 goes by Overfiend.

7. What are the minimum chip speed and memory requirements for the QNX Neutrino operating system and QNX Momentics development suite?

Vince Davis: Keep in mind the requirements and recommendations we list are for the QNX Momentics development suite and not the operating system itself. Minimum requirements for QNX Momentics 6.3 are a 700 MHz Pentium III with 256M RAM. We recommend a 2 GHz Pentium 4 and 512M RAM.

Minimum requirements for the QNX 6.4 development suite are likely to be around a 2 GHz Pentium 4 and 256M RAM. (Minimum requirements aren't ironed out until very late in the development cycle, and usually end up being the low-end of PCs at the time of release.)

Happily for many developers and enthusiasts, the QNX operating system will run on much less powerful hardware than what the development suite requires. The bare minimum for RAM is 32M (though 128M is more realistic for actually doing anything) and we've gotten QNX to run on some pretty old processors.

I have QNX 6.3 SP1 running on a dual-233 MHz Pentium Pro system with 512M RAM while another engineer has QNX 6.2.1 running on a 100 MHz Pentium box with 128M RAM. If you want to get QNX running on something older, adjust the boot iso's startup script and go to town. Serious developers will definitely want to stick to something above 500 MHz, however.

Jun 19, 2005

Legend of the QNX Upgrade

When I first got involved with QNX, I was looking for a better platform than Mac, Linux, or Windows. Each had had severe disadvantages that I'm sure we're all familiar with by now: Mac runs only on proprietary Apple hardware, Linux is a mess of spaghetti code not ready for a production environment, and Windows is a security and stability nightmare. After having spent years working with these shortcomings of the Big Three operating systems, I discovered and installed QNX.

My initial impression of the OS was that while small, fast, and efficient it lacked applications, drivers, and a polished interface. Booting it alongside Linux and Windows for novelty, I watched for improvements to the platform. When QNX 6.1 was released it became the only operating system on my hard drive. I finally had a truly efficient system that took full advantage of my hardware without the bloated overhead that Linux and Windows had.

This trend continued by leaps and bounds about a year later with QNX 6.2 and again the next year with 6.2.1. Another year and QNX 6.3 introduced an updated GUI and polished multi-processor support. A year after that and QNX 6.3 Service Pack 1 pushed the platform ahead even more. It was around this time, however, that I heard whisperings of a major upgrade to the platform, but all lips seemed sealed tight about the project save for its codename, Overfiend.

Jun 13, 2005

QNX Lags Behind the Big Three

I just bought a dual 3.6 GHz Pentium 4 system to install QNX on since last time I was running it was two years ago with version 6.2.1 and it was dog slow. I figured that QNX 6.3, having been upgraded quite significantly, would run a lot better and so bought the best hardware I could for it. I'm pretty depressed by my latest experience with QNX, however, and I'll break down why.

Unlike QNX 6, 6.1, and 6.2, QNX 6.3 (released June '04) has pretty good multi-processor support. For once it's not a big deal to enable the SMP kernel and both chips are properly recognized. I only wish that Neutrino was optimized for HyperThreading and SSE3, because I'm basically running on two 3,600 MHz Pentium Pro chips here. Oh well, two is better than one, multimedia extensions or not.

Speaking of processor annoyances, why is there no check box to enable 64-bit support? Is it on by default, or does this operating system just not support this feature at all? With how slow it runs it would be my guess that it only runs in 32-bit mode. All the major operating systems — Windows, Mac, and Linux — support 64-bit. I find this neglect of 64-bit to be unnerving and amateur. Let's hope QNX 6.4 acts like it was made in the 21st century when it's released.

I don't know what the QNX engineers are doing, but each new version of QNX uses a lot more memory than its predecessor. For instance, QNX 6.2 on a 1 GHz Pentium III system was taking about 96 MB out of my 1 GB of RAM; QNX 6.3 on my dual Pentium 4 system is grabbing about 412 MB of my 4 gigs of memory. What gives? This is at startup, before I've even loaded any programs. This is a huge use of resources for no discernible benefit — in other words, a waste.

Networking is a nightmare. Aside from the horrible graphical interface for network configuration, speed is an issue. It seems to crawl at only a fraction of what it should be, and I have no doubts Windows would be faster on the same hardware. Perhaps it's limited driver support, and QNX only has generic drivers for all but a few choice chipsets. Maybe I'd be better off running a BSD TCP/IP stack. All I know is that I'm using a 10/100BaseT ethernet card and seeing little better than 56k speeds.

All I want to say is that QNX had better get its ass in gear if it wants a piece of the real commercial market. Why bother releasing an operating system that's only going to piss people off? I honestly don't know why I bother retrying it every release and I'm already boxing up this new PC to return it and save my money and I imagine a lot of other folks feel the same on this topic. Here's to hoping folks are still interested when QNX 6.4 is released in another couple years and that it played a serious game of catch-up in the meantime.

Jun 8, 2005

Intel Mac Frequently Asked Questions

Why didn't Apple just go with Motorola/Freescale's new dual-core 8600 chips? Why did they have to make the huge jump to Intel?

Because of Motorola/Freescale's sterling reputation at delivering fast chips so early and often, Apple decided it would rather not play keep-up and go with a more predicable partner that wouldn't constantly be one step ahead of them. IBM's Power5 and gaming console plans proved to be too rich for Apple to work with as well.

Will my Mac run faster than it did on PowerPC chips?

No, not at all. Apple designed this move to push its processor speed back a few notches since first Motorola and now IBM have been introducing speedy new processors so often. The move to Intel architecture chips will keep Apple at a stand-still like the rest of the PC industry, something akin to the 500 MHz Fiasco of 1999 — the last time Jobs and co. were truly happy with their processor partners.

Will I be able to run System 6 software on Intel Macs? Apple will include Classic with 68k emulation, right?

Absolutely. And what a great idea too! Apple realizes the importance of running decades-old software that its users can't upgrade from due to stubbornness or misplaced sentimentality and so has invested millions in making sure you can bring your antique computer programs with you to the next Mac platform.

Will this be like the 68k-to-PowerPC switch?

It most assuredly will. If Apple learned anything from previous platform migrations it's that developers don't want it easy. Thanks to Xcode 2.1 and the general structure of Mac OS X, the port to Intel will take at least 10 years and run software slower than ever before — until Apple can crank out a "native" version of OS X since it's never run on these processors before.

So with Rosetta I can emulate a Power Mac, right? Can I just emulate the whole OS on it? I hate Intel! PowerPC forever!!!

Sure you can, but don't forget to enable the "Full-Speed Emulation" checkbox that lets you emulate your dual 2.7 GHz Power Mac G5 at full speed with AltiVec. This means that all of your software will run in PowerPC mode so you don't feel like a cheap dirty technology sellout running on Intel processors.

Will this mean Macs will be cheaper because they're using commodity hardware?

Yes. You can expect your Mac purchases after 2006 to be hundreds of dollars cheaper than ever before, since the processor makes that much of a difference in the bottom line and Apple hasn't been using any other common PC components before now.

Intel Mac minis should sell for $99 and new quad-processor Power Mac systems with Intel inside will start at a modest $999. iMacs and eMacs will hover somewhere in the $399-599 range, while iBooks will start at $299 and PowerBooks at $499. High-end servers based on eight-way Pentium Extreme chips and 32 gig of RAM might crack the $1999 boundary, however.

Can I install Mac OS X on my sweet dual Pentium Pro box? I overclocked the processors to 233 MHz so it really cooks.

You sure can. Apple made it so that you can install Mac OS X on any Intel PC dating back to the original Pentiums in all 60 MHz of their glory. Never-mind that they're equivalent to PowerPC 603 chips at the same clock speed and that Mac OS X would run like molasses in Winter on them — Apple has made it easy to bypass their hardware and sincerely want you to run their software on something that will make you curse its speed to the lowest pit of Hell.