Debian Linux for Xscale modules
Contents
Overview
The Linux file system for CompuLab CM-X270 module is based on Debian GNU/Linux 3.1 (sarge) distribution and includes the following components:
- Package manager (apt-get, dpkg …)
- Telnet client
- SSH server/client
- FTP server/client
- Web server thttpd
- SAMBA
- Editor – nano
- PCMCIA card manager
- Various Linux utilities (basic Debian set of utilities from debootstrap)
- Madplay - command-line mp3 player
- X Windows system with BlackBox window manager
- Dillo (web browser), aterm – X Windows applications.
This package was designed specifically for CM-X270 module, but it was tested on CM-X255 module as well. Architectural differences are handled by kernel, therefore different kernel is provided per product. This package was tested with 2.6.12 and 2.6.16 kernels on X270 and with kernels 2.4.26, 2.6.7 and 2.6.12 on X255. Rest of the document refers only to X270, but the same instructions are also true for X255.
CM-X270 specific settings
Connection and Logging In
Use the following usernames and passwords to login:
Account with administrative privileges:
User: root Password: 111111
Regular user account:
User: user Password: 111111
In addition to these accounts CM-X270 allows anonymous FTP access. To login into the Linux system, you may use a serial console at 38400 bps (ttySA0 for Linux 2.6.16 and ttyS0 for previous Linux versions), or connect through the network, or use a keyboard and VGA display (tty1, tty2, tty3).
IP Address
The IP addresses for both network interface are obtained automatically using DHCP. To configure networking, edit /etc/network/interfaces, /etc/resolv.conf, and /etc/hostname. For more information about Debian Linux network configuration read: [1] For kernel 2.6.12: Ethernet controller of CM-X270 is eth1; Ethernet controller of ATX or SB-X270 is eth0. For other kernels Ethernet controller of CM-X270 is eth0; Ethernet controller of ATX or SB-X270 is eth1.
Consoles
Linux file system image is designed to suit different kernel versions and configurations. Therefore, during the operating system startup, consoles at several serial ports and VGA display are enabled. Some of these devices may not be supported either because of kernel versions incompatibilities or because the kernel was not configured to support these devices. When the console is enabled at such device the following or similar message will appear on active console: INIT: Id "T0" respawning too fast: disabled for 5 minutes This is not an error message, it is just a warning that can be eliminated by editing /etc/inittab file.
THTTPD Web Server
Use /etc/thttpd/thttpd.conf to configure THTTPD web server. The THTTP server is very sensitive to file permissions. In summary, data files should be mode 644 (rw-r--r--), directories should be 755 (rwxr-xr-x) if you want to allow indexing and 711 (rwx--x--x) to disallow it, and CGI programs should be mode 755 (rwxr-xr-x) or 711 (rwx--x--x). Try http://<your.target.ip.address>/users/thttpd.htm
X Windows system
CompuLab distribution contains small-footprint Kdrive based X Server optimized for embedded devices, and BlackBox window manager. Before starting X Windows, connect USB mouse and keyboard to the system. You can run X Windows by typing startx. To close the X Windows, type stopx.
X server contained in CompuLab distribution supports screen rotation by 90, 180 and 270 degrees. To change screen resolution or color depth, or to enable screen rotation append option -screen <XRes>x<YRes>@<angle>x<bpp> option to X Server invocation command. XRes and YRes are horizontal and vertical screen resolution and angle is desired rotation angle, and bpp is color depth in bits. Note, that color depth change is not fully supported on PXA frame buffer device.
The X Windows system on CM-X270W can utilize either CPU internal LCD controller or 2700G graphics accelerator. Therefore, to choose the device, the "startx" utility must be provided with one of two options:
- -fb – to run X Server using CPU internal LCD controller
- -2700G – to run X Server using 2700G graphics accelerator
There are some X applications in distribution:
- Aterm (X terminal)
- Dillo (Web browser)
Touchscreen support
The X Windows system provided with CompuLab Debian Linux package supports touchscreen interface using on UCB1400 controller. Touchscreen calibration can be performed with ts_calibrate utility. To calibrate the touchscreen make sure X Server is not running, load touchscreen driver and then type ts_calibrate:
modprobe snd-pxa2xx-ac97 modprobe ucb1x00-ts cd /sys/class/input name="" for tsdir in *; do if [ -f $tsdir/name ] ; then name=`cat $tsdir/name` fi; echo $name | grep "Touchscreen panel" >& /dev/null if [ $? -eq 0 ] ; then name=`ls -1 $tsdir | grep event\[0-9\]` break; fi; done; export TSLIB_TSDEVICE=/dev/input/$name ts_calibrate
For proper calibration you are required to touch the touchscreen corners and center in the following order: top-left, top-right, bottom-right, bottom-left, center. The calibration results are saved to file /etc/pointercal.
Wireless lan support
CompuLab Debian Linux package supports Wireless LAN on CM-X270L modules. To enable Wireless LAN interface:
modprobe bgw200
To specify ESSID during driver startup:
modprobe bgw200 pu8SSID=<essid>
To setup Wireless LAN parameters Linux standard ifconfig and iwconfig utilities can be used.
Using WEP with CM-X270L
The CM-X270L onboard Wireless LAN supports WEP (Wired Equivalency Privacy) security protocol. The following command sequence enables the WEP encryption on the CM-X270L:
modprobe bgw200 pu8SSID=0 iwconfig eth1 key restricted [1] <KEY> iwconfig eth1 key restricted [1] iwconfig eth1 essid <ESSID>
PC Card
The PC Card market confuses people with differences in terminology sometimes referring to 16-bit PCMCIA cards as CompactFlash, and sometimes calling 32-bit cards PCMCIA. CM-X270 uses completely different interfaces to access 16-bit and 32-bit cards, so here we make some clarifications about terminology we use, and restrictions on PC Card usage. The PXA270 internal PCMCIA controller is used to access all types of 16-bit cards. Therefore we call all 16-bit cards PCMCIA. On the other side, 32-bit cards are accessed through CardBus controller present on the ATXBase, therefore we call all the types of 32-bit cards CardBus.
Debian linux for CM-X270 tries to detect presence of the CardBus controller, and accrording to the detection results it loads an appropriate driver. Either pxa2xx-cs for PXA270 internal PCMCIA (16-bit) controller, or yenta_socket for external CardBus controller.
In general, the CardBus controller should also work with 16-bit cards, but currently this feature is not supported by our Linux kernel.
Several PCMCIA devices have been validated with the CM-X270 – ATA Flash Disk card, NE2000 compatible Ethernet. Their drivers are provided with the kernel. However, there should be no problems using other PCMCIA cards. You just have to compile the driver of the device either built into the kernel or as a loadable kerne module. If compiled as module, it should be placed in an appropriate directory under /lib/modules/ on the CM-X270.
MMC/SD
The support for MMC/SD card on CM-X270 is available as loadable kernel module. You need to
modprobe mmc_block modprobe pxamci
to enable these drivers.
Afterwards, to mount the memory card, monitor /proc/partitions to see what partitions were detected on the MMC/SD card. Next, if there's approptiate device node in /dev, you can directly mount it, otherwise you should create the device node first. For example, suppose MMC/SD partition you'like to mount is mmcblk0p1 then:
if [ ! -b /dev/mmcblk0p1 ]; then mknod /dev/mmcblk0p1 b 253 1; fi mount /dev/mmcblk0p1 /mnt/mmc
![]() |
The MMC and PCMCIA slot B interfaces share card detection pin, so to use MMC/SD interface on SB-X270, you will need either disable PCMCIA driver, or modify it so it will use only Slot A. |
Software Management
Using the Debian Packaging System
The CM-X270 Linux distribution is a fully functional, small footprint Debian system. It requires ~90 MB of boot media. In order to fit this size, files not necessary for system functionality, including documentation and manuals, internationalization and localization support, and also package manager information, were removed. The information needed to use Debian package management utilities (apt and dpkg) is available from the Linux - Debian file system image package in the archive packages.tar.gz. To use this information, unpack the archive into a directory on your host machine:
tar –xzf packages.tag.gz –C /path/to/cm-x270/packages/
add the following line to /etc/exports:
/path/to/cm-x270/packages/ \ 192.168.0.0/255.255.255.0(rw,no_root_squash,sync)
As root, restart the NFS service on your host workstation to make the update of /etc/exports visible on the network:
/etc/init.d/nfs restart
On the CM-X270, mount the NFS directory containing packaging information to /mnt/net:
mount –t nfs 192.168.0.10:/path/to/cm-x270/packages/ /mnt/net
From this point on, you can use the apt and dpkg utilities to manage Debian packages like in a desktop Debian system.
Modifiyng NAND Flash Contents
Modifying File System Image
The archive Disk.dat.zip in the Linux - Debian file system image package contains the Linux ext3 file system image (disk.dat). This image can be mounted as a loop device and modified on the host Linux workstation:
mount –t ext3 –o loop /path/to/disk.dat /path/to/mount/point
After the modifications have been done, the image should be unmounted and it can be installed on the NAND flash on the CM-X270 using the procedure described in the Getting started with Linux on CM-X270 document.
umount /path/to/mount/point … install the image to the target …
Creating Images of Different Sizes
The NAND flash size on the CM-X270 is not necessary 512MB. It can be smaller 32, 64, 256 or 512 MB. The 512 MB file system image is not suitable for flash sizes other than 512 MB. Here is an example script for the creation of a 256 MB file system image. The new image will contain the same files as does the default disk.dat image.
#!/bin/bash cd /path/to/new/image/ # Create temporary directories mkdir –p /tmp/srcimg mkdir –p /tmp/destimg # Create a placeholder for the new image # Make image ~242 MB to fit it to NAND devices with bad blocks dd if=/dev/zero of=256mb.img count=248472 bs=1024 # Format it using ext3 file system mke2fs –F -j 256mb.img # mount the new (empty) image mount –t ext3 -o loop 256mb.img /tmp/destimg # mount original image read only mount –t ext3 -o loop,ro /path/to/old/image/disk.dat /tmp/srcimg # copy files preserving device nodes, ownership, permissions and # symbolic links cp -a /tmp/srcimg/* /tmp/destimg # unmount the images umount /tmp/srcimg umount /tmp/destimg # flush disk caches to the physical storage sync # clean up rm -rf /tmp/srcimg /tmp/destimg
After running this script, the image /path/to/new/image/256mb.img will contain a file system suitable for a 256 MB NAND flash. This image can be installed on the CM-X270 using the procedure described in the CM-X270 Linix:Getting started document.
Improving System Performance During Flash Writes
System performance is affected if an application intensively writes to the NAND flash, because:
- Flash write operations sometimes disable interrupts for significant periods.
- Flash write operations are performed by CPU (rather than DMA) loops.
- Parts of the NAND code driver run at the kernel's priority. If it runs for long periods, application timeshare is diminished.
To minimize the effect of flash writing, it is recommended to utilize a write throttling policy: On the application level, divide store operations of large files to blocks between 16 to 128 KB each, and allow idle time between consequent blocks (the application can proceed with other tasks). No need to close and re-open the file between blocks. Take into account that in case of a power fail, open files can lose contents accumulated during the last five seconds since the file was opened.
In addition to intensive application writes to the NAND flash, system performance may be affected by ext3 periodic journaling operations. To minimize the effect of ext3 journaling, the following actions might be taken:
- Minimize ext3 journal size (see mke2fs manual page)
- Disable/minimize system logging facilities or/and write system logs to ramdisk or tmpfs mounted partition.
- Create several partitions on the NAND flash. The partition containing the Linux system should be explicitly mounted as read-only. The partition needed for application writes should be made as small as possible thus decreasing ext3 journal size.