Linux 2.4 on the CRIS architecture ================================== $Id: README,v 1.5 2001/01/10 17:20:55 bjornw Exp $ This is a port of Linux 2.4 to Axis Communications ETRAX 100LX embedded network CPU. For more information about CRIS and ETRAX please see further below. <... to come: instructions on how to grab the right gcc, compiling and booting ...> What is CRIS ? -------------- CRIS is an acronym for 'Code Reduced Instruction Set'. It is the CPU architecture in Axis Communication AB's range of embedded network CPU's, called ETRAX. The latest CPU is called ETRAX 100LX, where LX stands for 'Linux' because the chip was designed to be a good host for the Linux operating system. The ETRAX 100LX chip -------------------- For reference, plase see the press-release: http://www.axis.com/news/us/001101_etrax.htm The ETRAX 100LX is a 100 MIPS processor with 8kB cache, MMU, and a very broad range of built-in interfaces, all with modern scatter/gather DMA. Memory interfaces: * SRAM * NOR-flash/ROM * EDO or page-mode DRAM * SDRAM I/O interfaces: * one 10/100 Mbit/s ethernet controller * four serial-ports (up to 6 Mbit/s) * two synchronous serial-ports for multimedia codec's etc. * USB host controller and USB slave * ATA * SCSI * two parallel-ports * two generic 8-bit ports (not all interfaces are available at the same time due to chip pin multiplexing) The previous version of the ETRAX, the ETRAX 100, sits in almost all of Axis shipping thin-servers like the Axis 2100 web camera or the developer-board. It lacks an MMU so the Linux we run on that is a version of uClinux (Linux 2.0 without MM-support) ported to the CRIS architecture. The new Linux 2.4 port has full MM and needs a CPU with an MMU, so it will not run on the ETRAX 100. A version of the Axis developer-board with ETRAX 100LX will be available as soon as the chip is ramped up (please see http://developer.axis.com for further information on that). Bootlog ------- Just as an example, this is the debug-output from a boot of Linux 2.4 on an Axis developer-board with ETRAX 100LX. The displayed BogoMIPS value is 5 times too small :) At the end you see some user-mode programs booting like telnet and ftp daemons. Linux version 2.4.0-test11 (bjornw@godzilla.axis.se) (gcc version 2.96 20000427 (experimental)) #358 Wed Nov 22 19:29:15 CET 2000 ROM fs in RAM, size 368640 bytes Setting up paging and the MMU. On node 0 totalpages: 1024 zone(0): 1024 pages. zone(1): 0 pages. zone(2): 0 pages. Linux/CRIS port (c) 2000 Axis Communications AB Kernel command line: Calibrating delay loop... 19.92 BogoMIPS Memory: 6864k/8192k available (531k kernel code, 1328k reserved, 85k data, 24k init) kmem_create: Forcing size word alignment - vm_area_struct kmem_create: Forcing size word alignment - filp Dentry-cache hash table entries: 1024 (order: 0, 8192 bytes) Buffer-cache hash table entries: 2048 (order: 0, 8192 bytes) Page-cache hash table entries: 2048 (order: 0, 8192 bytes) kmem_create: Forcing size word alignment - kiobuf kmem_create: Forcing size word alignment - bdev_cache Inode-cache hash table entries: 1024 (order: 0, 8192 bytes) kmem_create: Forcing size word alignment - inode_cache POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 kmem_create: Forcing size word alignment - skbuff_head_cache Starting kswapd v1.8 kmem_create: Forcing size word alignment - file lock cache kmem_create: Forcing size word alignment - blkdev_requests ETRAX 100LX 10/100MBit ethernet v2.0 (c) 2000 Axis Communications AB eth0 initialized eth0: changed MAC to 00:40:8C:CD:00:00 ETRAX 100LX serial-driver $Revision: 1.5 $, (c) 2000 Axis Communications AB ttyS0 at 0xb0000060 is a builtin UART with DMA ttyS1 at 0xb0000068 is a builtin UART with DMA ttyS2 at 0xb0000070 is a builtin UART with DMA ttyS3 at 0xb0000078 is a builtin UART with DMA NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP kmem_create: Forcing size word alignment - ip_dst_cache IP: routing cache hash table of 1024 buckets, 8Kbytes TCP: Hash tables configured (established 1024 bind 1024) NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. VFS: Mounted root (cramfs filesystem) readonly. Init starts up... Setting up eth0 with ip 10.13.9.116 and mac 00:40:8c:18:04:60 eth0: changed MAC to 00:40:8C:18:04:60 Setting up lo with ip 127.0.0.1 Default gateway is 10.13.9.1 Hostname is bbox1 Telnetd starting, using port 23. using /bin/sh as shell. sftpd[14]: sftpd $Revision: 1.5 $ starting up And here is how some /proc entries look: 17# cd /proc 17# cat cpuinfo cpu : ETRAX cpu revision : 10 cpu model : ETRAX 100LX cache size : 8 kB fpu : no mmu : yes ethernet : 10/100 Mbps token ring : no scsi : yes ata : yes usb : yes bogomips : 99.84 17# cat meminfo total: used: free: shared: buffers: cached: Mem: 7028736 925696 6103040 114688 0 229376 Swap: 0 0 0 MemTotal: 6864 kB MemFree: 5960 kB MemShared: 112 kB Buffers: 0 kB Cached: 224 kB Active: 224 kB Inact_dirty: 0 kB Inact_clean: 0 kB Inact_target: 0 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 6864 kB LowFree: 5960 kB SwapTotal: 0 kB SwapFree: 0 kB 17# ls -l /bin -rwxr-xr-x 1 342 100 10356 Jan 01 00:00 ifconfig -rwxr-xr-x 1 342 100 17548 Jan 01 00:00 init -rwxr-xr-x 1 342 100 9488 Jan 01 00:00 route -rwxr-xr-x 1 342 100 46036 Jan 01 00:00 sftpd -rwxr-xr-x 1 342 100 48104 Jan 01 00:00 sh -rwxr-xr-x 1 342 100 16252 Jan 01 00:00 telnetd (All programs are statically linked to the libc at this point - we have not ported the shared libraries yet)