zaterdag 17 mei 2008

porting vs. Porting

Open-source is all about sharing code. Getting involved with open-source is committing yourself to share all the code you write and let everyone else use it, mostly free charge (I’m not gonna go into a license-type here). With this project I want to take that commitment one step further: sharing code is one thing, sharing knowledge something totally different. My intention is to share all the knowledge I gain with this project with the rest of the world. And with ‘all’ knowledge, I really mean ALL knowledge, including the parts that don’t seem directly relevant to the core goal of the project itself. If I learned it somehow in relation with this project, I’ll share it with you. And what better way to share free knowledge is there than through a dedicated project blog? Right.

That said, let’s begin with the first important information I’ve learned: There’s porting, and there’s Porting. When you take an existing operating system (OS), or application for that matter, and you want run it on some specific hardware, you’ll have to port (with a small ‘p’) it to the platform in question. If, however, you want it to be able to run on a different processor, you’ll have to Port. As a general rule, you’ll mostly be porting applications and Porting operating systems, which is of course not an absolute rule. Take Linux, for example. The chance the you’ll have to Port it is very, very small, since most processor architectures are already supported by the kernel. You’ll often want to port it though, because it does not include support for every type of hardware platform. So basically ‘porting’ is mostly writing drivers for peripherals on your target hardware platform so that you’ll be able to control them through your OS or application. It’s adding support for certain devices in your program. ‘Porting’, on the other hand, is adapting the core of your application (e.g. the kernel) to a specific, no-yet-supported, processor architecture. It’s like explaining to your application how to be friends with the processor. And making new friends can often be hard, way harder than just getting used to a new environment.

I’ll be Porting Minix 3 to the embedded ARM platform this summer. I use the word ‘platform’ here instead of ‘architecture’, because I’ll actually be Porting and porting, which is the only humanly-possible way of Porting I can think of. The target platform for this project – that is, the development board used – is the TS-7250 which has been selected by my mentor Bert Thomas. The processor is the Cirrus EP9302 ARM9 CPU, which is relatively standard nowadays for newer embedded ARM devices.



More info on the board can be found here http://www.embeddedarm.com/products/board-detail.php?product=TS-7250 .

Some first experiences with the board and Minix will be the topic of my next blog post, which you may expect a few days after the official start of the program. Until then, all comments on this writing are more than welcome :).

1 opmerking:

Unknown zei

Very interesting. Keep us posted!