Apr 28

When reading the site of the GNU Compiler Collection I can not find a simple install package like the one for the FOX board. It does provide a very long manual on how to build the compiler yourself but that might prove to be complex for a beginner like me but I will give it a try.

First step is to host specific installation notes for GCC. On the i?86-*-linux* page it states that binutils 2.13.1 or later is required. So, which version is Ubuntu using? A search on binutils +Ubuntu shows version 2.16.1 is available but that does not tell me if this comes with every Ubuntu installation. Clicking the installation file tiggers the package installer that informs me that a later version is already installed (also 2.16.1). Perfect.

Next step is downloading GCC, an important message tells me that the source code is of little use if I don’t have a C compiler installed. Classical case of the chicken and the egg… There are several binaries available but not for Ubuntu. Searching on the Ubuntu site for GCC shows several comments that under the hood of GCC is used. Perhaps this is already installed but the previous error is caused by something else?

In the Applications menu there is an option to Add/Remove software, clicking this shows not only a list of installed programs but also a list of programs that are supported by Ubuntu! Clicking the programming selection button and showing all open source applications does not show GCC. Selecting all still does not show GCC. Searching for GCC shows a program SysInfo that can give detailed information of the system it is installed on. Checking this program and pressing the update button triggers the installation.

After starting this SysInfo application and clicking on the System button and showing more details it states GCC version 4.1.3 is installed. The good news is that I now know that GCC is available and I learned that searching for available programs is very easy in Ubuntu. The bad news is that the previous error is caused by something else. But what?

Apr 28

The casing for the mini ITX board arrived, it looks very nice and complete.

The assembly is very straight forward, all wires are nicely labeled on the connectors. There is even a breakout in the back for a second serial port.

 When all cables are connected the casing looks to be full but in practice all cables stay nicely in place so that when the top cover is mounted no cables try to escape…

The DVD player is using the IDE connection, the one that I used during installation of Ubuntu is using a SATA connection. Also there are two jumpers on the mini ITX board that allow the USB power to be switched on during booting, by default these were disabled but since I would like to use an USB keyboard and mouse it might make sense to enable them. I’m not sure how these hardware changes will affect Ubuntu during it’s next boot but let’s see.

After closing the case and inserting the power supply the board automaticly powers on and the fan that is in the casing starts spinning silently. A couple of seconds later Ubuntu starts without complaints, I’m even capable to type my username and password with the USB keyboard. Also the USB mouse works fine, again I’m plessantly surprised.

Apr 25

From this point forward I have no idea what I’m doing. I do have a lot of experience in developing software for Windows or on embedded micro controllers but not for Linux based systems. I ordered the FOX board from ACME, in order to develop software for it I need a C compiler and a debugger, this software development kit (SDK) can be found on the site of AXIS. After creating an account the compiler and debugger can be downloaded seperatly.

Since I don’t know how to create my own binary it does not make sense to download the source files. Instead the binary can be downloaded but there are two versions: .rpm and .deb. Which one to use? After some searching it seems these are two different package management systems. It also seems that Ubuntu uses the Debian system, when I click on the .deb file a message states that this is a software package and the option is presented to open it with the GDebi Package Installer.

It took some time to type this log, when clicking the install button it started downloading at 84% complete. Seems this is already running in the background to optimize the speed of Firefox. When the download is completed it states this is the GCC for the Axis system, a final click on install prompts me for a password. PANIC! Password? Reading carefully the message it states this is required to prevent automated installations, this still does not tell me what the password is.

The only one I know is the one I use for logon to Ubuntu, so let’s try that. Yes, it works, the installer runs ans ‘cris-dist_1.64-1_i386.deb’ is installed. The same process is repeated for the debugger ‘gdb-cris_6.3.50-cvs20050523-1_i386.deb’.

OK, two items have been installed. Let’s see if we can use them. Clicking the Applications menu does not show any programs. Neither do the other menu options. Hmmm…..

Seems I’m not the only one who has no clou how to do this, on the Axis Developer Wiki they have a how to topic on compiling for CRIS. Using the Places menu the folder Development/SankeBotOne/Hello is created in my home folder using the Create Folder menu option in the file browser. After this a new document is created using the Create Document menu options and the name hello.c is entered. A simple text editor is opened and below code is entered:

#include <stdio.h>
int main(int argc, char *argv[]) {
  printf(“Hello World!\n);
  return 0;
}

After saving and closing the file the Terminal program is started from the Applications|Accessories. Using the cd command the path is changed to Development/SankeBotOne/Hello and the ls command shows indeed the hello.c file is available. Typing the command: gcc -o hello_host hello.c should compile it but instead several errors are reported including stdio.h: no such file or directory.

Now what?

Reading the instructions more carefully it seems this step is for compiling for the host (so the mini ITX board) and not for the target. The compiler installed was for the target, perhaps there is no compiler available for the host. The command stated gcc which stands for GNU Compiler Collection.

Apr 24

Well, waiting did the trick! Ubuntu has installed and is running. I did not test all the IO devices yet like USB or CF but I must say I’m plessantly surprised so far.

Since Ubuntu now runs on the mini-ITX board it’s time to package it in a housing, so far it is just lying on my table.

There are manu mini ITX casings, I decided to use the Procase Noah Mini-ITX Black in combination with a slim-line DVD player (so not the one on the image above). This casing has an integrated power supply and allows 1 PCI32 card, I don’t know what card at this moment but this might come in handy in the near future. In all the case is only 202x97x273mm in size.

Apr 18

When booted from the Ubuntu DVD the first option is selected. Some progress bars later (for about 2 minutes) the Ubuntu desktop appears. Now the big question is: is it installed or just running from DVD? Two icons are shown on the desktop: Examples and Install. A click on the Examples icon confirm my guess that it was not isntalled (also the Install icon might be a hint). An explorer like window opens and shows the content of my PC, seems all Windows files are still there!

Clicking the Install icon starts indeed the installation program. Seems 7 steps are enough to customize the installtion. Step 4 is “how do you want to partition your disk?” Good question, the answers possible are not so clear. Option 1 is “Guided, use entire disk (60Gb).” The guided part sounds good, but after pressing the next button it jumps to step 6. So much for guidance…

Step 6 is for providing your account details. Funny, I can not use a login name that starts with a capital.  Step 7 shows a summary and a warning that all data of the disk will be removed. OK, so be it, farewell Windows.

The installation starts, after the progress bar reaches 15% it states “detecting file systems” and it seems to hang. After waiting for about 10 minutes I decided to reboot the system and run the installer again. Funny is that now in step 4 an additional option is presented: “Guided, resize SCS1 and use freed space”. It seems it was not hanging but formatting? This time I will be more patient since it hangs again at 15%….

I will leave it running overnight.

Apr 16

In order to develop application for the snake that uses an embedded version of Linux it makes sense to use a Linux based PC as a development environment. At the place that I work the developer use Ubuntu, using this as well at home provides a nice helpdesk in case I run into problems….

From a previous project I had a 1.2GHz Fanless VIA Eden mini-ITX board still available. Although I’m not sure what I will run into with various device drivers it’s worth a shot to see if Ubuntu can be installed on this board. It uses 1Gb of 533MHz DDR2 memory, a 60Gb harddisk connected with SATA and a DVD player also connected with SATA. The disk contains a Windows XP and has two partitions (C and D drive).

The ISO file from Ubuntu 7.10 is downloaded using the Windows XP. Question one is which version to download? Ubuntu is available for standard PC’s, 64 bit AMD/Intel and Sun. The Sun is clearly not the one to select, but I’m not sure if the 64 bit version can be used (or even the standard PC version). After some time searching the net it seems the Eden familiy is 32 bits, so the version to use is the standard PC version. 

The ISO file is downloaded and burned to a DVD using Write Disc from ISO file option in CDBurner XP Pro. A reset of the ITX board forces a boot from the DVD and a couple of seconds later a brown screen is displayed with the options how to install Ubuntu…

Apr 10

It has been a while since the last post; two commercial projects interrupted the development. The good news is that it gave me time to think about the hardware and software architecture of the Snake.

The final goal is a snake that maintains itself; it goes where it wants to go and it feeds itself when energy is low. What would be cool it to see the world though the eyes of the snake, perhaps even record it’s movements so a history can be shown of where it is and how it got there.

An ultra mobile PC would provide enough processing power and offers standard interfaces like WIFI and USB for a camera. Also the fact that it will run Windows XP (sorry…) allowing easy application development in Delphi is a big plus. However the weight and the battery consumption is far too large.

Instead a small ARM9 or ARM11 based board with embedded Linux on it will offer the same possibilities but this is a full new area of development I’m entering. I have no experience with Linux or with the development tools/environment associated with it. Another option would be to use a Microsoft Mobile device but this environment is also new to me; in that case I better invest in building knowledge on a Linux system.

Some requirements of the controller board would be:

  • Low power
  • ARM9/ARM11 processor
  • Linux 2.6
  • RAM and ROM
  • WIFI enabled or a CF slot
  • Minimum 1 USB port, preferred more
  • RS232 or RS485 interface
  • Several IO pins for own use

and optionally:

  • Audio
  • Blue tooth
  • CAN

Using Google I found several candidates:

http://www.virtualcogs.com/store/index.php?cPath=22

A stackable solution using an ARM9 controller from FreeScale. Nice but very expensive. No network standard available.

http://www.taskit.de/en/products/stamp/index.htm

A stackable solution using an ARM9 controller from ATMEL. There is a development board available on which a controller board can be plugged. I like ATMEL since there documentation is very complete and their chips are logical designed. No network standard available else it might have been a winner.

http://www.hectronic.se/website1/1.0.1.0/11/1/index.php?item=prod_prod-s1/15&group=prod_prod_grp-s1/15

A very small footprint module using an ARM9 controller from ATMEL. A breakout board is available but since it is so small it will not be very practical for development. Also no network available.

http://www.hectronic.se/website1/1.0.1.0/11/1/index.php?item=prod_prod-s1/14&group=prod_prod_grp-s1/15

The bigger brother of the previous board. Still small (credit card size) but more complete. As a bonus an FPGA on board allowing my own complex hardware designs. The wired network requires some external components.

http://www.acmesystems.it/?id=4

A very interesting solution on a small board. It uses some custom Multi Chip Module, the speed it not very high (100MHz) but the IO range is very complete (1 serial, 2 USB and a wired network). Various extension boards are available, including a ZigBee module for wireless serial communication. No WIFI but there is a SD slot available on the extension board, not sure if it support SDIO for a SD WIFI card.

http://gumstix.com/store/catalog/product_info.php?products_id=204

Offers various boards including WIFI on an extension board. Well documented, they exist already for some time and have grown rapidly.

So, which one to choose? I’m leaning towards the solution from ACME (the Fox Board). Main reasion is that the available IO and the fact that it already contains a small web server that is perfect for hosting the user interface.