Project

General

Profile

Linux on Auerswald COMmander Basic2

This page is an attempt to document bits and pieces about the embedded Linux OS that runs on the Auerswald COMmander Basic2 PBX.

More speificially, it's an ARM/Linux based system running on a Digi International NS9360 ARM926 SoC built from PTXdist-0.7.5

Source Code

Serial Console

The ARM SoC has a serial console (ttyS2) at 3.3V. It is running at 19200 bps and is exposed on test pads near the NS9630 on the PBX mainboard.

Pinout

The pinout related to the orientation of the pictures is (from top to bottom):

location signal
top GND
center TxD (of CB2)
bottom RxD (of CB2)

u-boot

u-boot bootlog

YABOL 1.3 (11:21:24Jan 17 2007)
hardware version: 01
checking for image mode...on... no
loading binary from NAND
binary loaded, starting...

U-Boot 1.1.2 (Aug  7 2006 - 08:23:30) FS.1-gds3.1

U-Boot code: 00F80000 -> 00F9D148  BSS: -> 00FA83DC
IRQ Stack: 00f5fb7c
FIQ Stack: 00f5eb7c
SDRAM-Size: 2000000 hex
RAM Configuration:
Bank #0: 00000000 32 MB
NAND:  64 MB
Init NAND-FLASH ....
Using default environment

In:    serial
Out:   serial
Err:   serial

Board revision 1 found
serial: 2448900276AU0123103800820H      
ethaddr: 00:09:52:00:d1:7f
ccode: 0
reserve:                                 
Checking for factory reset... no
Looking for boot partition...
reading marker block: ********
Checking Partition 1... OK
Hit any key to stop autoboot:  0 
Partition changed to 1
### JFFS2 loading 'boot/bas2boot.1.img' to 0x10000
Scanning JFFS2 FS: ......... done.
### JFFS2 load complete: 456 bytes loaded to 0x10000
## Executing script at 00010000
### JFFS2 loading 'boot/fpga_r1.bin' to 0x10000
### JFFS2 load complete: 75895 bytes loaded to 0x10000

FPGA Version @0x40088000: 11    .
### JFFS2 loading 'boot/uImage' to 0x10000
### JFFS2 load complete: 952212 bytes loaded to 0x10000
## Booting image at 00010000 ...
   Image Name:   Linux-2.6.11-fs.1-gds9.4
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    952148 Bytes = 929.8 kB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
OK

u-boot environment

bootargs=console=ttyS1 ip=192.168.0.240::192.168.0.10:255.255.255.0 root=mtdblock/$(bootpart) ro rootfstype=jffs2
bootcmd=chpart $(bootpart);fsload boot/bas2boot.$(board_revision).img;autoscr;chpart $(backuppart);fsload boot/bas2boot.$(board_revision).img;autoscr;booterr 3 4 4
bootdelay=3
baudrate=19200
ipaddr=192.168.0.240
serverip=192.168.0.10
gatewayip=192.168.0.1
netmask=255.255.255.0
bootcmd_error=booterr 1 4 4
bootcmd_install=autoscr;mw.b 1000000 0 100;echo update failed;booterr 1 4 4
stdin=serial
stdout=serial
stderr=serial
board_revision=1
serial=2448900276AU0123103800820H
ethaddr=00:09:52:00:d1:7f
ccode=0
reserve=
bootpart=1
backuppart=2

boot script

u-boot> fsload boot/bas2boot.1.img
u-boot> md 0x10000 80
00010000: 56190527 233f5c22 ffa86e5c 88010000    '..V"\?#\n......
00010010: 00000000 00000000 1b0005ea 01060205    ................
00010020: 00000000 00000000 00000000 00000000    ................
00010030: 00000000 00000000 00000000 00000000    ................
00010040: 80010000 00000000 6c746573 30206465    ........setled 0
00010050: 0a0a3320 6f6c7366 31206461 30303030     3..fsload 10000
00010060: 6f6f6220 70662f74 725f6167 69622e31     boot/fpga_r1.bi
00010070: 70660a6e 6c206167 2064616f 30312030    n.fpga load 0 10
00010080: 20303030 69662824 6973656c 0a29657a    000 $(filesize).
00010090: 6f686365 47504620 65562041 6f697372    echo FPGA Versio
000100a0: 3040206e 635c5c78 2e646d0a 30342062    n @0x\\c.md.b 40
000100b0: 30383830 31203030 65730a0a 766e6574    088000 1..setenv
000100c0: 6f6f6220 67726174 73616273 63206369     bootargsbasic c
000100d0: 6f736e6f 743d656c 32537974 3239312c    onsole=ttyS2,192
000100e0: 75203030 5f726573 75626564 35323d67    00 user_debug=25
000100f0: 65730a35 766e6574 6f6f6220 67726174    5.setenv bootarg
00010100: 64746d73 6f6f7220 746d3d74 6f6c6264    smtd root=mtdblo
00010110: 242f6b63 72617028 69746974 20296e6f    ck/$(partition) 
00010120: 72206f72 66746f6f 70797473 666a3d65    ro rootfstype=jf
00010130: 20327366 61687465 3d726464 74652824    fs2 ethaddr=$(et
00010140: 64646168 63202972 65646f63 6328243d    haddr) ccode=$(c
00010150: 65646f63 65732029 6c616972 7328243d    code) serial=$(s
00010160: 61697265 730a296c 6e657465 6f622076    erial).setenv bo
00010170: 7261746f 24207367 6f6f6228 67726174    otargs $(bootarg
00010180: 73616273 20296369 6f622824 7261746f    sbasic) $(bootar
00010190: 746d7367 0a0a2964 6f6c7366 31206461    gsmtd)..fsload 1
000101a0: 30303030 6f6f6220 49752f74 6567616d    0000 boot/uImage
000101b0: 7465730a 2064656c 0a322030 746f6f62    .setled 0 2.boot
000101c0: 3031206d 0a303030 5a2cf071 6b6b6b6b    m 10000.q.,Zkkkk

modified bootscript to get root shell

u-boot> setled 0 3
u-boot> fsload 10000 boot/fpga_r1.bin
### JFFS2 loading 'boot/fpga_r1.bin' to 0x10000
### JFFS2 load complete: 75895 bytes loaded to 0x10000
u-boot> fpga load 0 10000 $(filesize)
u-boot> setenv bootargsbasic console=ttyS2,19200 user_debug=255 init=/bin/sh
u-boot> setenv bootargsmtd root=mtdblock/1 ro rootfstype=jffs2 ethaddr=$(ethaddr) ccode=$(ccode) serial=$(serial)
u-boot> setenv bootargs $(bootargsbasic) $(bootargsmtd)
u-boot> fsload 10000 boot/uImage
### JFFS2 loading 'boot/uImage' to 0x10000
### JFFS2 load complete: 952212 bytes loaded to 0x10000
u-boot> setled 0 2
u-boot> bootm 10000

kernel

kernel bootlog

Starting kernel ...

Uncompressing Linux............................................................... done, booting the kernel.
Linux version 2.6.11-fs.1-gds9.4 (build@build) (gcc version 3.4.2) #375 Fri Mar 5 09:55:24 CET 2010
CPU: ARM926EJ-Sid(wb) [41069264] revision 4 (ARMv5TEJ)
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
CPU0: D cache: 4096 bytes, associativity 4, 32 byte lines, 32 sets
Machine: A9M9360
Memory policy: ECC disabled, Data cache writeback
NS9360 Rev. 0, running at 154 MHz
Built 1 zonelists
Kernel command line: console=ttyS2,19200 user_debug=255 root=mtdblock/1 ro rootfstype=jffs2 ethaddr=00:09:52:00:d1:7f ccode=0 serial=2448900276AU0123103800820H
PID hash table entries: 256 (order: 8, 4096 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 32MB = 32MB total
Memory: 30352KB available (1602K code, 332K data, 80K init)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
i2c_ns: I2C ns9750 driver $Revision: 1.5 $ initializing
NetWinder Floating Point Emulator V0.97 (double precision)
devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
JFFS2 version 2.2. (NAND) (SAFENAND) (SUMMARY) (C) 2001-2006 Red Hat, Inc.
NS9750 Watchdog initialized
Serial: NS9750 driver $Revision: 1.6 $
ttyS0 at MMIO 0xf9200000 (irq = 34) is a NS9xx0
ttyS1 at MMIO 0xf9200040 (irq = 36) is a NS9xx0
ttyS2 at MMIO 0xf9300000 (irq = 38) is a NS9xx0
ttyS3 at MMIO 0xf9300040 (irq = 40) is a NS9xx0
Serial: JTAG driver $Revision: 1.1 $
ttyJ0 at MMIO 0x0 (irq = 0) is a JTAGCOMM
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
loop: loaded (max 8 devices)
Ethernet: NS9xx0 driver $Revision: 1.13.cbr $
NAND Flash memory mapped to virtual c2880000
NAND device: Manufacturer ID: 0x98, Chip ID: 0x76 (Toshiba NAND 64MiB 3,3V 8-bit)
Scanning device for bad blocks
Using static partition definition
Creating 5 MTD partitions on "basic.2":
0x00000000-0x00038000 : "U-BOOT" 
0x00040000-0x01020000 : "System_1" 
0x01020000-0x02000000 : "System_2" 
0x02000000-0x04000000 : "Daten" 
0x00038000-0x00040000 : "Service" 
NS9360 udc driver
ns9360-udc ns9360-udc0: gadget driver initializing
i2c /dev entries driver
24c64: EEPROM driver $Revision: 1.1 $ initializing
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
NET: Registered protocol family 1
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Mounted root (jffs2 filesystem) readonly.
Mounted devfs on /dev
Freeing init memory: 80K

PTXdist-0.7.5 (2005-11-23T10:35:05+0100)

mounting /proc and /sys... done.
mounting filesystems... mount: WARNING: loop device is read-only
done.
preparing /data ...done.
basic system configuration... done.
starting the system logger... done.
starting network... [HWaddr: 00:09:52:00:d1:7f]
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/packet/af_packet.ko
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/ip_conntrack.ko
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/ip_tables.ko
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/iptable_filter.ko
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/iptable_nat.ko
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
killall: vd: no process killed
killall: vmd: no process killed
done.
starting USB network port ... 
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/usb/gadget/g_ether.ko
killall: udhcpd: no process killed
udhcpd (v0.9.9-pre) started
done.
starting ppp... Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/net/slhc.ko
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/net/ppp_generic.ko
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/net/ppp_synctty.ko
Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/char/n_hdlc.ko
done.
mounting nfs filesystems... done.
reading the hardware clock... 
Using /opt/auerswald/modules/auerrtc.ko
hwclock: Could not read time from RTC: Input/output error
date is invalid, setting default date
Tue May  1 00:00:00 CEST 2001
hwclock: Could not set the RTC time: Input/output error
starting network services... done.
Using /opt/auerswald/modules/auerlog.ko
Using /opt/auerswald/modules/hwtimer.ko
Using /opt/auerswald/modules/auertim.ko
Using /opt/auerswald/modules/auergb.ko
Using /opt/auerswald/modules/auermod.ko
Using /opt/auerswald/modules/isdnhdlc.ko
Using /opt/auerswald/modules/auerdsp.ko
Using /opt/auerswald/modules/auersicofi4.ko
Using /opt/auerswald/modules/auertdm.ko
Using /opt/auerswald/modules/auerab_all.ko
Using /opt/auerswald/modules/auers0basic.ko
Using /opt/auerswald/modules/auer4s0.ko
Using /opt/auerswald/modules/auer8up0.ko
Using /opt/auerswald/modules/auers2m.ko
Using /opt/auerswald/modules/auertsm_all.ko
Using /opt/auerswald/modules/auertoene.ko
Using /opt/auerswald/modules/auer_sscp.ko
Using /opt/auerswald/modules/auers0_hfc8s4s.ko
Using /opt/auerswald/modules/auer_voip.ko

Useful hints

Activationg telnet/nfs server, NFS client

There's a file /data/etc/network.conf

telnet-server: no
ftp-server: no
nfs-server: no
# nfs-mount: <host>:<path> <mountpoint>
dhcp-name: COMmander_Basic.2

If you change the settings, you can enable telnet/nfs servers on the PBX itself (ftp binary is missing), or you can instruct it to mount a network share from a NFS server. Those settings are processed by the init scripts.

The default NFS exports of the server in the PBX look like this:

/ 192.168.21.0/24(sync,no_root_squash,rw)
/data 192.168.21.0/24(sync,no_root_squash,rw)

Crosscompiler

It's possible to use crosstool-0.43 on an equally ancient debian sarge/i386 (I used debootstrap --arch=i386 sarge sarge for that) to build a (so far seemingly) compatible "gcc-4.4.2-glibc-2.3.3" toolchain. The command used is

eval `cat arm-softfloat.dat gcc-3.4.2-glibc-2.3.3.dat` sh all.sh --notest

I modified demo-arm.sh to use the above command to build the compatible toolchain.

You can find a precompiled one at https://people.osmocom.org/laforge/auerswald/arm-softfloat-linux-gnu-gcc-4.4.2-glibc-2.3.3.tar.bz2

Add picture from clipboard (Maximum size: 48.8 MB)