Sunday, 4 November 2007

My development set-up

To develop my software for/on the FoxBoard, I've chosen to use the following set-up:

  • My PC is a Pentium 4, 3.2GHz with 1GB RAM and two internal harddisks of 160GB each.
    Next to this, there are another two external harddisks of 160GB each. Both external harddisks are connected using a FireWire connection (aka 1394).
    You can see my set-up below:


    On the left, you see the monitor for my Linux sessions (and occasionally also some Windows applications if the right monitor gets too busy).
    Yes, I'm an animal lover,hence the wolf as a background picture (but in fact, tigers are my favourite ones...).

    Next to this monitor, the monitor for my Windows applications.

    If you click the picture, you will also see the two external harddisks (while a third one is waiting to be build into a harddisk case).

  • My main OS is (sorry, Linux freaks) WinXP Home Edition SP2. But I do like Linux more... See further.

  • On my PC, I've installed VmWare, so that I'm able to run Linux in a virtual machine (here you go, Linux freaks, I'm one of them too...)
    I've done this to avoid having to use a second PC to run Linux. This way of working not only saves space on my desk, it also is much less power consuming
    Taking care of the environment is one of my hobbit horses and I'm doing whatever I can to save as much as possible resources...

  • I'm running Kubuntu Gutsy Gibbon as Linux OS, where I've installed the SDK of Axis (with lots of modifications done by John Crispin).
    I recently re-installed the SDK (due to a crash with Kubuntu while upgrading from verions 6.10 to 7.10, see another article in this blog...), using the SVN installation script as explained on the Acme Website.

  • I've also installed Samba on my Linux machine, to be able to see the content of certain directories under Windows too.

  • I also have two LCD monitors: one for my Windows applications and one for my Linux applications.

    "But, you idiot, if the environment is so important to you, why do you use two monitors then", one can ask? Well, let me try to "defend" myself:

    1. Both monitors are of the LCD type, so together they're consuming less than one "classic" monitor

    2. It's very unhandy if you have to "control" the screens of two different operating systems on one monitor

    Next to this, I'm trying to do as much as possible from within my Windows environment (NotePad++ is a God's Blessing to do those things, see just below), so I don't really need much my Linux monitor, which I switch off then of course...
  • To edit my files, I'm using NotePad++ (visit http://notepad-plus.sourceforge.net/uk/site.htm for more info about this wonderful editor).
    This editor is running under Windows.
    But why did I choose again for a Windows application to develop Linux stuff??? Well, see below:
    • I'm spoiled by the Windows GUI for more than 15 years now, so kicking the habbit is quite "heavy"
    • I didn't find any decent and competitive editor running under Linux. I've tried Eclipse, NetBeans, KDevelop, Kate,...
      All have their own pro's and con's, but none of them could compete with the ease of use of NotePad++
    • I'm able to in fact do almost everything from my Windows environment (even running Linux tasks), so why would I switch constantly between Linux and Windows?
    The only reason I really need to see my Linux OS on my monitor, is when I need the debugger (see further), since this one is solely running under Linux. And also (but very occasionally) when I have to restart my Linux virtual machine (but that's mostly because I've made a mistake...)

  • To compile my FoxBoard software, I'm using (of course) the compiler/linker which is part of the SDK provided by AcmeSystems (http://www.acmesystems.it). This one is (for sure) running on my Linux virtual machine.

  • To debug my FoxBoard software (yes, I indeed need a debugger from time to time), I'm using Insight from RedHat (visit http://sources.redhat.com/insight to know more about this debugger).

  • I've found a way to start my makes on the Linux machine from within NotePad++. This is extremely handy, since I really like this editor and now I can even start my builds on the Linux machine and see the feedback in a console window of NotPad++.
    To acomplish this "trick", I wrote a small parametrised shell script that I'm calling from NotePad++.
    But there's more to it: to be able to call a Linux script from Windows, you need a tool like plink to "bridge" the gap between Linux and Windows. The whole Putty suite (including plink) can be found here: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html.
    Plink needs a private/public key to see if it's allowed to run a script on a Linux machine, coming from a Windows environment.
    Once plink is installed correctly (create a private/public key using puttygen, part of the Putty suite, for this), I can call this application with the necessary parameters to run the build on my Linux environment.

  • To be able to do that in NotePad++, you need to install a plug-in (NotePad++ has an open architecture, that is, you can create plug-ins for NotePad++ yourself) called NppExec. This plug-in is written by Vitaliy Dovgan and can be downloaded here: http://sourceforge.net/project/showfiles.php?group_id=189927&package_id=224034.
    The image below shows my NotePad++ editor with the console window showing the compilation steps of a build:



  • At the end of every compilation, I've a script running that automatically downloads the new program to the FoxBoard, using FTP (file transfer protocol).
    The FoxBoard is connected to my Linux machine via my router (so, using ethernet connections).
    I've created a special directory on the FoxBoard root file system in RAM, to which I FTP my new executable after every build. As said before, this is done automatically.
    So, very frequently downloading the application for testing purposes in that memory area cannot harm the life span of the FoxBoard memory, since it's RAM.

  • Once the application is more or less ready for another test phase, I'm copying the application in a USB memory stick, connect that stick to the FoxBoard, restart the FoxBoard and automatically this application is read out while booting up the FoxBoard.
    The application starts automatically to run.
Easier than this is to change code, recompile and reprogram in the FoxBoard, is next to impossible, I think...

For those interested: I also have a Wiki page explaining some stuff much more in detail.
Pls. visit http://www.gevawebsolutions.com/wiki/index.php?title=Main_Page to read more.

No comments: