Difference between revisions of "Gumstix Verdex"

From New IAC Wiki
Jump to navigation Jump to search
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Installing the build environment==
+
=Installing the build environment=
  
The main instructions are on the gumstix.net [http://gumstix.net/wiki/index.php?title=Build_Environment_Ubuntu_9.04 wiki], but that page has several details that are now obsolete. Here are the steps I did:
+
The main instructions are on the gumstix.net  
 +
[http://gumstix.net/wiki/index.php?title=Build_Environment_Ubuntu_9.04 wiki],  
 +
but that page has several details that are now obsolete. Here are the steps I did:
 
  mkdir ~/gumstix
 
  mkdir ~/gumstix
 
  cd ~/gumstix
 
  cd ~/gumstix
Line 7: Line 9:
 
  cat gumstix-oe/extras/profile >> .bashrc
 
  cat gumstix-oe/extras/profile >> .bashrc
 
  . .bashrc
 
  . .bashrc
 +
 +
gcc-4.3 gives a lot of errors, but gcc-4.1 works '''so far'''
 +
There is a problem documented [http://old.nabble.com/Gumstix-%2B-Debian-%2B-bitbake-td27276271.html here]
 +
about duplicate getline functions.
  
 
Then to set up a cross-compilation environment:
 
Then to set up a cross-compilation environment:
 
  bitbake gcc-cross
 
  bitbake gcc-cross
 +
 +
[[Gumstix_BitBake_onDAQ]]
 +
 +
;Note
 +
:It fails if there are any error messages so follow all the installation requests until it starts saying it is "Handling BitBake files"...
 +
preferred version 2.5 of glibc not available (for item virtual/arm-angstrom-linux-gnueabi-libc-for-gcc)
 +
 +
You need to install Pysco
 +
 +
svn co http://codespeak.net/svn/psyco/dist/ psyco-dist
  
 
To make an image to burn onto the gumstix use:
 
To make an image to burn onto the gumstix use:
Line 18: Line 34:
 
  gumstix-oe/tmp/cross/bin/arm-angstrom-linux-gnueabi-*
 
  gumstix-oe/tmp/cross/bin/arm-angstrom-linux-gnueabi-*
  
==Compiling==
+
=Compiling=
====To set up build environment====
+
==To set up build environment==
 
  source  ~/gumstix/gumstix-oe/extras/profile
 
  source  ~/gumstix/gumstix-oe/extras/profile
 
Executables for cross-compiling are stored in:
 
Executables for cross-compiling are stored in:
Line 26: Line 42:
 
  PATH=$PATH:/home/brian/gumstix/gumstix-oe/tmp/cross/arm-angstrom-linux-gnueabi/bin
 
  PATH=$PATH:/home/brian/gumstix/gumstix-oe/tmp/cross/arm-angstrom-linux-gnueabi/bin
  
====To compile====
+
==To compile==
 
  arm-angstrom-linux-gnueabi-g++ cgi.cpp vfatregister.cpp vfatedit.cpp vfati2c.cpp -o vfat$i.cgi -lcgicc
 
  arm-angstrom-linux-gnueabi-g++ cgi.cpp vfatregister.cpp vfatedit.cpp vfati2c.cpp -o vfat$i.cgi -lcgicc
 
And if you need to link against cgicc (for web interfaces) add both of the arguments
 
And if you need to link against cgicc (for web interfaces) add both of the arguments
Line 32: Line 48:
 
  -L/home/brian/gumstix/gumstix-oe/tmp/work/armv5te-angstrom-linux-gnueabi/libcgicc-3.2.3-r0/cgicc-3.2.3/cgicc/.libs
 
  -L/home/brian/gumstix/gumstix-oe/tmp/work/armv5te-angstrom-linux-gnueabi/libcgicc-3.2.3-r0/cgicc-3.2.3/cgicc/.libs
  
==Flashing the gumstix==
+
===Compiling Hello ===
 +
 
 +
Now that the cross compiler is installed on the DAQ machine it is time to try and compile the simplest program, download it to the gumstix, and see if it will run.
 +
 
 +
Here is the source code
 +
 
 +
<pre>
 +
#include <stdio.h>
 +
 
 +
int main(void)
 +
{
 +
  printf("Hello Gummy\n");
 +
  return 0;
 +
}
 +
 
 +
</pre>
 +
 
 +
 
 +
I put it on the DAQ machine in the subdirectory
 +
 
 +
~/gumstix/Hello/ Hello.c
 +
 
 +
I compiled it with the command
 +
 
 +
  ~/gumstix/gumstix-oe/tmp/cross/arm-angstrom-linux-gnueabi/bin/gcc Hello.c
 +
 
 +
 
 +
 
 +
It made the binary a.out
 +
 
 +
I copied it over to the gumstix using scp
 +
 
 +
scp a.out root@134.50.3.175:
 +
 
 +
and it ran
 +
 
 +
root@gumstix-custom-verdex:~$ ./a.out
 +
Hello Gummy
 +
 
 +
=== Compile cMsg libraries===
 +
 
 +
[[Gumstix_cMsg]]
 +
 
 +
 
 +
 
 +
=Flashing the gumstix=
  
=== Serial Com using Macbook USB ===
+
== Serial Com using Macbook USB ==
  
 
I was able to use the USB port of my Macbook pro to communicate with the Gumstix using a USB to serial cable and a serial adapter plugged into the gumstix board.
 
I was able to use the USB port of my Macbook pro to communicate with the Gumstix using a USB to serial cable and a serial adapter plugged into the gumstix board.
Line 76: Line 137:
 
[http://www.gumstix.net/Software/view/Developer-how-to-s/Reflashing-from-a-linux-login-session/111.html Reflash over ssh]
 
[http://www.gumstix.net/Software/view/Developer-how-to-s/Reflashing-from-a-linux-login-session/111.html Reflash over ssh]
  
==Changes necessary from the default image==
+
=Changes necessary from the default image=
====Boa config====
+
==Boa config==
 
Boa is a webserver designed for small/embedded platforms
 
Boa is a webserver designed for small/embedded platforms
  
Line 94: Line 155:
 
  /etc/init.d/boa start
 
  /etc/init.d/boa start
  
====Add the following files====
+
===Add the following files===
 
These are the files for the cgicc (C++ cgi script) library. Copy from the bitbake to the /usr/lib/ directory
 
These are the files for the cgicc (C++ cgi script) library. Copy from the bitbake to the /usr/lib/ directory
 
*libcgicc.so.5
 
*libcgicc.so.5
Line 100: Line 161:
 
*libcgicc.so.5.0.1
 
*libcgicc.so.5.0.1
  
====Install additional packages====
+
===Install additional packages===
 
  ipkg install libstdc++6
 
  ipkg install libstdc++6
  
====Suid cgi-bin====
+
===Suid cgi-bin===
 
Programs that run I2C directly need to be suid as root so they have permissions to make I2C system calls.
 
Programs that run I2C directly need to be suid as root so they have permissions to make I2C system calls.
 
  chown root /var/www/cgi-bin/vfat*.cgi
 
  chown root /var/www/cgi-bin/vfat*.cgi
 
  chmod u+s /var/www/cgi-bin/vfat*.cgi
 
  chmod u+s /var/www/cgi-bin/vfat*.cgi
  
====Add home PATH====
+
===Add home PATH===
 
*'''optional'''
 
*'''optional'''
 
Make a file in /etc/profile.d/ that contains the following:
 
Make a file in /etc/profile.d/ that contains the following:
 
  #!/bin/sh
 
  #!/bin/sh
 
  export PATH=$PATH/home/root/bin:
 
  export PATH=$PATH/home/root/bin:

Latest revision as of 18:27, 25 June 2010

Installing the build environment

The main instructions are on the gumstix.net wiki, but that page has several details that are now obsolete. Here are the steps I did:

mkdir ~/gumstix
cd ~/gumstix
svn co https://gumstix.svn.sourceforge.net/svnroot/gumstix/trunk gumstix-oe
cat gumstix-oe/extras/profile >> .bashrc
. .bashrc

gcc-4.3 gives a lot of errors, but gcc-4.1 works so far There is a problem documented here about duplicate getline functions.

Then to set up a cross-compilation environment:

bitbake gcc-cross

Gumstix_BitBake_onDAQ

Note
It fails if there are any error messages so follow all the installation requests until it starts saying it is "Handling BitBake files"...
preferred version 2.5 of glibc not available (for item virtual/arm-angstrom-linux-gnueabi-libc-for-gcc)

You need to install Pysco

svn co http://codespeak.net/svn/psyco/dist/ psyco-dist

To make an image to burn onto the gumstix use:

bitbake gumstix-basic-image

where "gumstix-basic-image" is a recipe from the directory gumstix-oe/com.gumstix.collection/packages/images/

The cross-compiler binaries can be found in:

gumstix-oe/tmp/cross/bin/arm-angstrom-linux-gnueabi-*

Compiling

To set up build environment

source  ~/gumstix/gumstix-oe/extras/profile

Executables for cross-compiling are stored in:

/home/brian/gumstix/gumstix-oe/tmp/cross/arm-angstrom-linux-gnueabi/bin

And the PATH can be set with:

PATH=$PATH:/home/brian/gumstix/gumstix-oe/tmp/cross/arm-angstrom-linux-gnueabi/bin

To compile

arm-angstrom-linux-gnueabi-g++ cgi.cpp vfatregister.cpp vfatedit.cpp vfati2c.cpp -o vfat$i.cgi -lcgicc

And if you need to link against cgicc (for web interfaces) add both of the arguments

-I/home/brian/gumstix/gumstix-oe/tmp/work/armv5te-angstrom-linux-gnueabi/libcgicc-3.2.3-r0/cgicc-3.2.3 
-L/home/brian/gumstix/gumstix-oe/tmp/work/armv5te-angstrom-linux-gnueabi/libcgicc-3.2.3-r0/cgicc-3.2.3/cgicc/.libs

Compiling Hello

Now that the cross compiler is installed on the DAQ machine it is time to try and compile the simplest program, download it to the gumstix, and see if it will run.

Here is the source code

#include <stdio.h>

int main(void)
{
  printf("Hello Gummy\n");
  return 0;
}


I put it on the DAQ machine in the subdirectory

~/gumstix/Hello/ Hello.c

I compiled it with the command

 ~/gumstix/gumstix-oe/tmp/cross/arm-angstrom-linux-gnueabi/bin/gcc Hello.c


It made the binary a.out

I copied it over to the gumstix using scp

scp a.out root@134.50.3.175:

and it ran

root@gumstix-custom-verdex:~$ ./a.out
Hello Gummy

Compile cMsg libraries

Gumstix_cMsg


Flashing the gumstix

Serial Com using Macbook USB

I was able to use the USB port of my Macbook pro to communicate with the Gumstix using a USB to serial cable and a serial adapter plugged into the gumstix board.

Minicom and the Virtual comport driver were two pieces of software I needed to install on the Macbook.


The first software was a Virtual COM port driver available at

http://www.ftdichip.com/Drivers/VCP.htm


after installing I restarted the Macbook and found the following file had been installed

bash-3.2$ ls /dev/tty.usb*
/dev/tty.usbserial-FTC9IF6E


The next step was to install minicom. Minicom was easy if you have already install MacPorts. The command is

sudo port install Minicom

You now need to set the port driver location within minicom using the -s switch

minicom -s 

speed baud parity and stop bit = 115200 8N1


Note
The driver only shows up if the USB-Serial cable is plugged in. You don't need something plugged into the serial port.

If the Gumstix won't boot, you can (rather slowly) flash the filesystem over serial.

Correct alignment of the TTL RS232 adapter

If the gumstix will boot, then flashing from RAM disk over ssh is faster, but if the process fails or gets interrupted you'll have to fall back on the serial method. Remounting the filesystem read-only may not work, and the whole processed failed. Reflash over ssh

Changes necessary from the default image

Boa config

Boa is a webserver designed for small/embedded platforms

In /etc/boa/boa.conf change the following lines:

From To
#ServerName www.your.org.here ServerName gumstix
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ ScriptAlias /cgi-bin/ /var/www/cgi-bin/

Stop and then start boa with:

/etc/init.d/boa stop
/etc/init.d/boa start

Add the following files

These are the files for the cgicc (C++ cgi script) library. Copy from the bitbake to the /usr/lib/ directory

  • libcgicc.so.5
  • libcgicc.so
  • libcgicc.so.5.0.1

Install additional packages

ipkg install libstdc++6

Suid cgi-bin

Programs that run I2C directly need to be suid as root so they have permissions to make I2C system calls.

chown root /var/www/cgi-bin/vfat*.cgi
chmod u+s /var/www/cgi-bin/vfat*.cgi

Add home PATH

  • optional

Make a file in /etc/profile.d/ that contains the following:

#!/bin/sh
export PATH=$PATH/home/root/bin: