Debian Linux for Xscale modules
Contents
Overview
The Linux file system for CompuLab CM-X270 module is based on Debian GNU/Linux 4.0 (etch) 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.16 and 2.6.24 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 Network configuration chapter in the Debian Reference. 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.
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 ucb1400-ts cd /sys/class/input name="" for tsdir in *; do if [ -f $tsdir/name ] ; then name=`cat $tsdir/name` fi; echo $name | grep -i "touchscreen" >& /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 type:
modprobe libertas_spi
The firmware for the Wireless LAN controller is included in the Debian Linux image and can be found at /lib/firmware directory. Additionally, the Linux example filesystem package for CM-X270 contains gspi_firmware.tar.gz archive with the firmware.
To setup Wireless LAN parameters Linux standard ifconfig and iwconfig and wpa_supplicant utilities can be used.
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
Note: 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.
Power Management
Linux for CM-X270 supports suspend-to-RAM low power state. You can put the system into this state with apmsleep command.
Software Management
Debian Linux for CM-X270 image includes all the information required to use Debian package management utilities. You can use apt-get and dpkg out of the box.
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.