Intel Sitsang Overview

Purpose

This document provides a guide for getting started using the Intel Sitsang development board for systems research. It is intended to compliment the Sitsang/PXA255 Evaluation Platform Linux User's Guide provided on the CD-ROM at /Software and Related Documentation/Software Documentation/Linux Documentation/Sitsang-PXA255 Evaluation Platform Linux User Guide.pdf. Consult the User's Guide for more detailed information about the steps below.


Getting Started

The Intel Sitsang development board comes preloaded with a Linux 2.4.19 kernel, root filesystem, and the RedBoot bootloader.

To begin, use the JTAG cable suppied with the Sitsang to connect the board to the serial port of a desktop system. Open a terminal emulator (such as HyperTerminal or minicom) on the desktop using the following serial port settings: 115,200 BPS, 8 data bits, no parity, 1 stop bit, no flow control. Connect the power adapter to the Sitsang board, and press the power button (located next to the DC power socket) on the Sitsang board to begin. After a few seconds, you should see the following output:

+                                                                            
ARM eCos                                                                     
                                                                             
RedBoot(tm) debug environment - built 22:13:14, Sep  3 2003                  
Platform: Intel(R) Sitsang Development Platform RedBoot* Debug Monitor ()    
Copyright (C) 2000, Red Hat, Inc.                                            
                                                              
RAM: 0xa0000000-0xa4000000                                    
FLASH: 0x00100000 - 0x04000000, 128 blocks of 0x00040000 bytes each.
LAN91C96: The current MAC address is 00 08 32 33 00 01        
IP: 192.168.1.100, Default server: 192.168.1.1                
== Executing boot script in 5.000 seconds - enter ^C to abort

Hint: When using the Sitsang, always use the DC power adapter instead of relying on battery power. The Sitsang will sometimes stop running if the battery gets too low, even if the power adapter is connected.


Default Kernel

After 5 seconds, RedBoot will start the default Linux 2.4.19 kernel. Once everything is initialized, a login prompt will appear:

Sitsang Linux (experimental)                                                    
Kernel 2.4.19-rmk4-pxa2-alvin2 on an armv5tel                                   
Sitsang2 login:

Login with the username root. No password is necessary. At this point, you will receive a standard BASH prompt:

[root@Sitsang2 root]$

Root Filesystem and Necessary Modifications

The preloaded root filesystem is a 40 megabyte JFFS2 filesystem containing a variety of open-source applications, including the Qtopia desktop environment. Unfortunately, most of this just gets in the way of useful research, so the first thing to do is delete the unnecessary stuff.

Remove /rd/*.avi. This video takes up a large portion of the Flash memory, and removing it will provide ample room for research.

Next, remove the following symlinks:

/etc/rc.d/rc3.d/S90irda
/etc/rc.d/rc3.d/S95qtopia

This will prevent IRDA and Qtopia from being started at bootup. IRDA constantly generates interrupts, which can interfere with real-time schedulers. Qtopia consumes a lot of CPU and memory resources, severely hurting the performance of other applications.

Next, you may choose to install the ZMODEM applications, which are useful for transferring small files over the serial port. Instructions for installing ZMODEM are on this page.


Compiling a Kernel from Scratch

Compiling a Linux kernel for the Sitsang requires the arm-linux-gcc toolchain. If working in the College of Computing at Georgia Tech, the toolchain has already been installed at /usr/local/arm/3.2.3/bin. Simply add this directory to your path. Otherwise, if you must install the toolchain on your own machine, follow the instructions in Section 3.2 of the User's Guide.

The source code to the 2.4.19 Linux kernel may be obtained from kernel.org or the Sitsang CD-ROM. Decompress it using bzip2:

$ bzip2 -dc linux-2.4.19.tar.bz2 | tar xvf -

You may rename the linux-2.4.19/ directory to a more descriptive name to identify the new kernel. Next, apply the Sitsang patches provided by Intel:

$ cd linux-2.4.19/
$ gzip -dc ../patch-2.4.19-sitsang2.gz | patch -p1

At this point, you may apply any other patches, such as the DWCS real-time scheduler patch. Then, configure the kernel:

$ make sitsang_config
$ make oldconfig

Next, modify the EXTRAVERSION line in the Makefile. Change it from -rmk4-pxa2-alvin2 to something new, so that the new kernel will use a separate set of modules from the preinstalled kernel.

Finally, compile the kernel and modules:

$ make dep
$ make zImage
$ make modules

The new kernel will be located at arch/arm/boot/zImage.


Installing a New Kernel

Once the new kernel has been compiled, it may be installed on the Sitsang using the RedBoot bootloader. Initially, the Sitsang's flash memory is organized as shown below:

Flash RangeInitial Use
0x00000000 - 0x0003FFFFRedBoot
0x00040000 - 0x000FFFFFUnused
0x00100000 - 0x001FFFFFLinux Kernel
0x00200000 - 0x02FFFFFFRoot Filesystem
0x03000000 - 0x03F7FFFFUnused
0x03F80000 - 0x03FFFFFFRedBoot

Note the area of unused space from 0x03000000 to 0x03F7FFFF. Assuming kernels are a maximum size of 1 megabyte, this gives us enough space to keep 15 additional kernels on the Sitsang at a time.

To add a new kernel to the Sitsang, boot the Sitsang, and press Control+C at startup to enter RedBoot. To see the current contents of flash memory:

RedBoot> fis list
Name              FLASH addr   Mem addr    Length      Entry point              
RedBoot           0x00000000   0x00100000  0x00040000  0x00000000               
RedBoot config    0x03F80000   0x03F80000  0x00040000  0x00000000               
FIS directory     0x03FC0000   0x03FC0000  0x00040000  0x00000000               
JFFS2             0x00200000   0x00200000  0x02800000  0x00000000               
linux             0x00100000   0xA0200000  0x00100000  0x00000000               

To install a new kernel: , choose an unused starting location between 0x0300000 and 0x03E00000. Then:

RedBoot> load -r -m xmodem -b 0xa0200000
<Send zImage using XMODEM>
RedBoot> fis create linux2 -b 0xa0200000 -l 0x00100000 -f 0x03000000 -r 0xa0200000
... Erase from 0x03000000-0x03100000: ....                                      
... Program from 0xa0200000-0xa0300000 at 0x03000000:                           
addr:3000000,data:a0200000,size:40000.                                          
addr:3040000,data:a0240000,size:40000.                                          
addr:3080000,data:a0280000,size:40000.                                          
addr:30c0000,data:a02c0000,size:40000.                                          
... Unlock from 0x03fc0000-0x04000000: block: 3fc0000,block_size: 40000,blocks:0
.                                                                               
... Erase from 0x03fc0000-0x04000000: .                                         
... Program from 0xa3fb0000-0xa3ff0000 at 0x03fc0000:                           
addr:3fc0000,data:a3fb0000,size:40000.                                          
... Lock from 0x03fc0000-0x04000000: . 

Replace linux2 with any unique name to identify your kernel, and replace 0x03000000 with the starting address of your choice, ranging from 0x03000000 to 0x03100000.

Note: Be EXTREMELY careful when entering the hexadecimal addresses to install the new kernel. RedBoot does not validate these values, and one mis-typed character will likely corrupt your bootloader or root filesystem.

To boot your new kernel:

Redboot> fis load linux2
Redboot> go 0xa0200000

Using Kernel Modules

Linux kernel modules greatly simplify development by allowing you to dynamically add or remove kernel code at runtime, without having to use the bootloader to reflash the entire kernel.

After a make modules, compiled modules will appear as .o files in the directory the source code was located. To upload a module, create a /lib/modules/2.4.19-<EXTRAVERSION> directory, where <EXTRAVERSION> is the name you specified in the Makefile above. Upload the .o file to this directory (ZMODEM is a quick and easy way to do this), then type:

[root@Sitsang2 root]$ insmod <modulename>.o

Last Modified: 8/16/04 by lcs@cc
Return to Intel Sitsang Resources | Leo Singleton