IVM SA1100 Single Board computer Pages

For the very latest details, please look at the Mission Technolgies website - for low cost JTAG programming and ARM development boards.

This page contains;

1. My system introduction
2. What I did (and who to thank for it)
3. Other info such as system sizes
4. Clickable links leading to pages showing how I did what I did...
If you email me please expect me not to answer.  If I do you are lucky, if I don't you won't feel disappointed.
 

Specs:


Hardware Parts used
Intel SA1100 processor (up to 206MHz) FADES1100DF
1MByte Atmel FLASH 2 x AT49BV4096A devices
16MBytes EDO DRAM 2 x MT4LC4M16RTG-6 devices
16bit stereo ADC (up to fs=48kHz) CS4330
16bit stereo DAC (up to fs=48kHz) CS5330A
3.6v power supply (av. 200mA peak 350mA) 2 x MAX1658 devices
64-way expansion bus 2 serial ports, 32-bit data bus, nCS, nOE, nWE & GPIO
5 x 9cm 6-layer 0.007" design rule pcb Done on OrCAD!!
 
Software Versions
Bootloader in flash boot block Heavily based on blob2.02
Linux kernel 2.4.4 With  patch-2.4.4-rmk3 & diff-2.4.4-rmk3-np1
Ramdisk Busybox 0.51
TinyLogin 0.80
Both statically linked against uClibc snapshot of 18/6/2001


LART and others

I really am indebted to the LART people and others in the embedded/ARM Linux community in the following ways;

1. When designing my pcb I got stuck with the DRAM design (I'd never done DRAM before, only SRAM).  Looking for a solution I found the LART pages, and 'borrowed' part of their DRAM interface circuit!

2. Once my pcb was built, I found that my ARM Multi-ICE JTAG emulator wouldn't work.....so I downloaded the Jflash JTAG driver, modified the code for my hardware layout, and for Atmel PEROM flash.
CLICK HERE FOR MY JFLASH PAGE

3. The GNU toolchain (GCC 2.95.2) works absolutely perfectly for me when cross compiling under Linux Mandrake 2.4.3-20mdk, thanks to Russell King, the LART people, and others.

4. blob.  After playing with my own bootloader for a while, I grabbed blob2.02 and again modified it for my hardware (memory locations and flash device type) - it works fine for me!
CLICK HERE FOR MY BLOB PAGE

5. When I designed my pcb I definitely wanted to run linux on it, but had no idea how to get started.  What did I need?  Well a quick look at the LART website showed me exactly how to compile my own linux kernel.  I just needed to change some memory and other hardcoded definitions in the kernel source, and compile as if I had a LART (it was far easier starting from a known point - the LART - that was close to my system, than starting from scratch).
CLICK HERE FOR MY KERNEL PAGE

6. Finally a RAM disc.  Luckily those wonderful people at Lineo have been sponsoring the development of Busybox (a single executable that can perform the function of, and hence replace, a whole bunch of other programs).  Also TinyLogin (similar) and uClibc.   In my system with 1MByte of flash storage, there's no way I could link against Glibc.
Here are some sizes;
CLICK HERE FOR MY RAMDISK PAGE
 
Program (compiled for SA1100) Dynamically linked Statically linked
libc-2.1.2.so n/p 950k  to  1,050k
libm-2.1.2.so n/p 160k  to  200k
ld-2.1.2.so n/p 90k  to  105k
libuClibc-0.9.5.so n/p 240k
Busybox 0.51 150k (to uClibc) 205k (against uClibc)
150k (to glibc) unknown
Tinylogin 0.80 34k (to uClibc) 70k (against uClibc)
38k (to glibc) unknown

So what did I end up with?  Here are the sizes of the kernel and working RAM disc;
 
raw filesize gzipped uuencoded
kernel 2.4.4 (zImage) n/a 452,656 623,687
initrd-ivm-20.6.2001 1,228,800 114,525 157,813
(No that's not a mistake, the gzipped ramdisk is really 114K and not 1.14Meg because, although it expands to a 1.2MByte ramdisk, that ramdisk is only 26% full).

Big disclaimer - I can't really do much with this setup since the ramdisk lacks lots of things like sz, rz, bash (I'm using the lash shell built in to busybox), but at least it boots, and it's very stable.



About me (the interesting bits only);
I've been running linux on x86 for around 6 years now, and ran it on StrongARM first in about 1995 (along with RiscBSD- both on my RiscPC).  I've been building embedded systems for quite a while, but this is the first time I attempted to run linux on one (building a StrongARM system was also a first for me).