SPU ARM Board

From OrbSWARM
Jump to: navigation, search

Tips and tricks for using the TS-7260 ARM-9 board from Technologic Systems .

Documentation

Here's the TS-7260 hardware manual (pdf)

and the guide to Linux on the TS-7000 boards (pdf)

The TS-7200 Yahoo group is the first place to look when you have questions or issues: http://tech.groups.yahoo.com/group/ts-7000/


TS-72XX Wiki: http://www.seiner.com/ts7000/index.php/


Usage

Making a ramdisk

mount -t ramfs none /tmp -o maxsize=16777216

Mounting a USB drive

first, load the USB modules:

/usr/bin/loadUSBModules.sh

Then mkdir the mount dir, say

mkdir /usb/

mount /dev/scsi/host0/bus0/target0/lun0/part1 /usb/

Remote NFS mounts

Got windows? Here's how to set up your windows box as an NFS server using Cygwin. Yoy can then mount a cygwin directory on the ARM board. You really want to do this. http://www.csparks.com/CygwinNFS/index.xhtml

Got a Mac? "OSX 10.4 uses NFS v4. To have the TS-7000 access the share, the opts field in netinfo needs to have '32bitclients'"

Programming

Cross-compiling

Some hints here: http://www.ailis.de/~k/docs/crosscompiling/

Porting Python (yay) to a TS-7200: looks hairy (boo!) But it is possible. If anyone wants a go at this I would love it.

http://tech.groups.yahoo.com/group/ts-7000/message/5229 http://www.vanille-media.de/site/index.php/projects/python-for-arm-linux/

This looks promising but I haven't tried it: http://www.scratchbox.org/documentation/docbook/tutorial.html


Serial I/O

Some example code that does serial I/O to a GPS. Looks pretty standard if not POSIX. http://tech.groups.yahoo.com/group/ts-7000/message/6308

COM2 Serial port hints: http://groups.yahoo.com/group/ts-7000/message/6391


select()

The POSIX select() function is going to be useful to manage multiple I/O streams. It's new to me. Here's some poop: http://www.gnu.org/software/libc/manual/html_node/Waiting-for-I_002fO.html http://trajano.us.es/clases/lcd/man/man2/select.2.html http://homepages.cwi.nl/~aeb/linux/man2html/man2/select_tut.2.html

Floating point

The ARM chip has a floating point co-processor, but for various ugly reasons it's not supported without what looks like some ugly kernel hacking. Ugly details here: http://tech.groups.yahoo.com/group/ts-7000/message/6263

More info on crunch: http://arm.cirrus.com/files/linux/crunch/docs/crunch_user_guide.text Executive summary: use the -lsoft-float option when compiling.

SPI interface

The SPI bus is implemented in the EP9302, you'll need to refer to the EP9301 User's Guide for information.

http://www.embeddedarm.com/downloads/Components/EP9301_User_Guide.pdf

(Oops! The TS-7260 with the extra COM ports doesn't have XDIO and thus the SPI interface available.)

Hardware

Schematic

http://www.embeddedarm.com/downloads/Schem_Mech/TS-722_Schematic.pdf

Connectors

The power connector is part #281-1763-ND, the mating connector from the power supply is 281-1063-ND Both are available from http://www.digikey.com

WOOPS, WRONG WRONG WRONG. I think that's from a previous board, not the TS-7260 . Connector image on digi-key looks nothing like what it is, which is .05 wide pins 5mm apart. It looks like it may be digi-key ED1613-ND but I will order and check.

Mating 0.1 header accepts 0.025 square pins (a little hard to find) http://www.mouser.com/search/refine.aspx?Ntt=517-974-01-36%09

To get a DB-9 serial port from COM2, you can use an IDC DB9 female, ribbon cable, and a 10-pin header. Digi-key part numbers soon.

ADC channels

Note only ADC2 and ADC4 are free, but you can monitor power supply on ADC0

  • channel 0: Power In(voltage divider)
  • channel 1: PC/104 5V(voltage divider)
  • channel 2: DIO2 header
  • channel 3: 1.8V
  • channel 4: DIO2 header

How to build a cross toolchain for TS-7260

1. Dan Kegel has done all the hard work to build gcc cross tool chains. Check out his how-to document first- http://kegel.com/crosstool/crosstool-0.43/doc/crosstool-howto.html. Especially check out the section for OSX.

2. Figure out what version of glibc the kernel was compiled with - do "ls /lib/libc*" and look for libc-<version>.so file to find the version. Looking at the pre-compiled toolchains available on the Technologic website gcc 3.3.4, glibc 2.3.2 and kernel 2.4.26 is the configuration we want for out tool chain.

3. Download the crosstool-0.38 from http://kegel.com/crosstool/crosstool-0.38.tar.gz

4. Dan says - <snip> To build gcc and glibc on Mac OS X, you'll need to install a few gnu utilities:

   * gnu wget
   * gnu awk
   * gnu sed
   * gnu install (part of gnu coreutils) 

such that they are used instead of the native versions. </snip>

And

<snip> One recurring problem is that various Gnu configure scripts assume that 'as' and 'ld' are the Gnu versions, run them with -v to get the version number, and compare it with some gnu version. That doesn't work well on the Mac. You can either hack the configure scripts to not do that, or write wrapper scripts for as and ld. </snip>

Someone has already written a script(http://sourceware.org/ml/crossgcc/2006-02/msg00272/build.sh) to do all this but running the script as-is implies that you will install the toolchain as root. Not a good idea. So run these from the script or some variant thereof: [ -r gnutools/awk ] || ( /opt/local/bin/port install gawk && ln -s /opt/local/bin/gawk gnutools/awk )

[ -r gnutools/sed ] || ( /opt/local/bin/port install gsed && ln -s /opt/local/bin/gnused gnutools/sed )

[ -r gnutools/make ] || ( /opt/local/bin/port install gmake && ln -s /opt/local/bin/gmake gnutools/make )

echo '[ "$1" = -v ] && echo GNU assembler 2.13 || /usr/bin/as $*' >gnutools/as

echo '[ "$1" = --version ] && echo GNU ld 2.13 || /usr/bin/ld $*' >gnutools/ld

chmod a+x gnutools/as

chmod a+x gnutools/ld

Prefix gnutools or equivalent to your path.

5. Your native gcc version may not be able to build the bootstrap compiler. Mine didn't( powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 ). So you may have to use an earlier compiler to build the bootstrap i.e. A bootstrap for your bootstrap. I used gcc-3.3.6. Build and prefix to your path.

6. Extract crosstool-0.38.tar.gz and edit demo-arm.sh. Uncomment this line- "eval `cat arm.dat gcc-3.3.4-glibc-2.3.2.dat` sh all.sh --notest". Cat arm.dat gcc-3.3.4-glibc-2.3.2.dat to make sure it's the configuration you want. Says - BINUTILS_DIR=binutils-2.15 GCC_DIR=gcc-3.3.4 GLIBC_DIR=glibc-2.3.2 GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2 LINUX_DIR=linux-2.4.26

7. Everything looks good. Set PREFIX and build. Go on vacation to the South Seas. When you come back your cross compiler will be ready.