Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 1 | Linux on the CRIS architecture |
| 2 | ============================== |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 3 | |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 4 | This is a port of Linux to Axis Communications ETRAX 100LX, |
| 5 | ETRAX FS and ARTPEC-3 embedded network CPUs. |
| 6 | |
| 7 | For more information about CRIS and ETRAX please see further below. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 8 | |
| 9 | In order to compile this you need a version of gcc with support for the |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 10 | ETRAX chip family. Please see this link for more information on how to |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 11 | download the compiler and other tools useful when building and booting |
| 12 | software for the ETRAX platform: |
| 13 | |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 14 | http://developer.axis.com/wiki/doku.php?id=axis:install-howto-2_20 |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 15 | |
| 16 | What is CRIS ? |
| 17 | -------------- |
| 18 | |
| 19 | CRIS is an acronym for 'Code Reduced Instruction Set'. It is the CPU |
| 20 | architecture in Axis Communication AB's range of embedded network CPU's, |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 21 | called ETRAX. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 22 | |
| 23 | The ETRAX 100LX chip |
| 24 | -------------------- |
| 25 | |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 26 | For reference, please see the following link: |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 27 | |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 28 | http://www.axis.com/products/dev_etrax_100lx/index.htm |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 29 | |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 30 | The ETRAX 100LX is a 100 MIPS processor with 8kB cache, MMU, and a very broad |
| 31 | range of built-in interfaces, all with modern scatter/gather DMA. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 32 | |
| 33 | Memory interfaces: |
| 34 | |
| 35 | * SRAM |
| 36 | * NOR-flash/ROM |
| 37 | * EDO or page-mode DRAM |
| 38 | * SDRAM |
| 39 | |
| 40 | I/O interfaces: |
| 41 | |
| 42 | * one 10/100 Mbit/s ethernet controller |
| 43 | * four serial-ports (up to 6 Mbit/s) |
| 44 | * two synchronous serial-ports for multimedia codec's etc. |
| 45 | * USB host controller and USB slave |
| 46 | * ATA |
| 47 | * SCSI |
| 48 | * two parallel-ports |
| 49 | * two generic 8-bit ports |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 50 | |
| 51 | (not all interfaces are available at the same time due to chip pin |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 52 | multiplexing) |
| 53 | |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 54 | ETRAX 100LX is CRISv10 architecture. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 55 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 56 | |
Jesper Nilsson | 14c70c3 | 2011-04-12 12:05:19 +0200 | [diff] [blame] | 57 | The ETRAX FS and ARTPEC-3 chips |
| 58 | ------------------------------- |
| 59 | |
| 60 | The ETRAX FS is a 200MHz 32-bit RISC processor with on-chip 16kB |
| 61 | I-cache and 16kB D-cache and with a wide range of device interfaces |
| 62 | including multiple high speed serial ports and an integrated USB 1.1 PHY. |
| 63 | |
| 64 | The ARTPEC-3 is a variant of the ETRAX FS with additional IO-units |
| 65 | used by the Axis Communications network cameras. |
| 66 | |
| 67 | See below link for more information: |
| 68 | |
| 69 | http://www.axis.com/products/dev_etrax_fs/index.htm |
| 70 | |
| 71 | ETRAX FS and ARTPEC-3 are both CRISv32 architectures. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 72 | |
| 73 | Bootlog |
| 74 | ------- |
| 75 | |
| 76 | Just as an example, this is the debug-output from a boot of Linux 2.4 on |
| 77 | a board with ETRAX 100LX. The displayed BogoMIPS value is 5 times too small :) |
| 78 | At the end you see some user-mode programs booting like telnet and ftp daemons. |
| 79 | |
| 80 | Linux version 2.4.1 (bjornw@godzilla.axis.se) (gcc version 2.96 20000427 (experimental)) #207 Wed Feb 21 15:48:15 CET 2001 |
| 81 | ROM fs in RAM, size 1376256 bytes |
| 82 | Setting up paging and the MMU. |
| 83 | On node 0 totalpages: 2048 |
| 84 | zone(0): 2048 pages. |
| 85 | zone(1): 0 pages. |
| 86 | zone(2): 0 pages. |
| 87 | Linux/CRIS port on ETRAX 100LX (c) 2001 Axis Communications AB |
| 88 | Kernel command line: |
| 89 | Calibrating delay loop... 19.91 BogoMIPS |
| 90 | Memory: 13872k/16384k available (587k kernel code, 2512k reserved, 44k data, 24k init) |
| 91 | kmem_create: Forcing size word alignment - vm_area_struct |
| 92 | kmem_create: Forcing size word alignment - filp |
| 93 | Dentry-cache hash table entries: 2048 (order: 1, 16384 bytes) |
| 94 | Buffer-cache hash table entries: 2048 (order: 0, 8192 bytes) |
| 95 | Page-cache hash table entries: 2048 (order: 0, 8192 bytes) |
| 96 | kmem_create: Forcing size word alignment - kiobuf |
| 97 | kmem_create: Forcing size word alignment - bdev_cache |
| 98 | Inode-cache hash table entries: 1024 (order: 0, 8192 bytes) |
| 99 | kmem_create: Forcing size word alignment - inode_cache |
| 100 | POSIX conformance testing by UNIFIX |
| 101 | Linux NET4.0 for Linux 2.4 |
| 102 | Based upon Swansea University Computer Society NET3.039 |
| 103 | Starting kswapd v1.8 |
| 104 | kmem_create: Forcing size word alignment - file lock cache |
| 105 | kmem_create: Forcing size word alignment - blkdev_requests |
| 106 | block: queued sectors max/low 9109kB/3036kB, 64 slots per queue |
| 107 | ETRAX 100LX 10/100MBit ethernet v2.0 (c) 2000 Axis Communications AB |
| 108 | eth0 initialized |
| 109 | eth0: changed MAC to 00:40:8C:CD:00:00 |
| 110 | ETRAX 100LX serial-driver $Revision: 1.7 $, (c) 2000 Axis Communications AB |
| 111 | ttyS0 at 0xb0000060 is a builtin UART with DMA |
| 112 | ttyS1 at 0xb0000068 is a builtin UART with DMA |
| 113 | ttyS2 at 0xb0000070 is a builtin UART with DMA |
| 114 | ttyS3 at 0xb0000078 is a builtin UART with DMA |
| 115 | Axis flash mapping: 200000 at 50000000 |
| 116 | Axis flash: Found 1 x16 CFI device at 0x0 in 16 bit mode |
| 117 | Amd/Fujitsu Extended Query Table v1.0 at 0x0040 |
| 118 | Axis flash: JEDEC Device ID is 0xC4. Assuming broken CFI table. |
| 119 | Axis flash: Swapping erase regions for broken CFI table. |
| 120 | number of CFI chips: 1 |
| 121 | Using default partition table |
| 122 | I2C driver v2.2, (c) 1999-2001 Axis Communications AB |
| 123 | ETRAX 100LX GPIO driver v2.1, (c) 2001 Axis Communications AB |
| 124 | NET4: Linux TCP/IP 1.0 for NET4.0 |
| 125 | IP Protocols: ICMP, UDP, TCP |
| 126 | kmem_create: Forcing size word alignment - ip_dst_cache |
| 127 | IP: routing cache hash table of 1024 buckets, 8Kbytes |
| 128 | TCP: Hash tables configured (established 2048 bind 2048) |
| 129 | NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. |
| 130 | VFS: Mounted root (cramfs filesystem) readonly. |
| 131 | Init starts up... |
| 132 | Mounted none on /proc ok. |
| 133 | Setting up eth0 with ip 10.13.9.116 and mac 00:40:8c:18:04:60 |
| 134 | eth0: changed MAC to 00:40:8C:18:04:60 |
| 135 | Setting up lo with ip 127.0.0.1 |
| 136 | Default gateway is 10.13.9.1 |
| 137 | Hostname is bbox1 |
| 138 | Telnetd starting, using port 23. |
| 139 | using /bin/sash as shell. |
| 140 | sftpd[15]: sftpd $Revision: 1.7 $ starting up |
| 141 | |
| 142 | |
| 143 | |
| 144 | And here is how some /proc entries look: |
| 145 | |
| 146 | 17# cd /proc |
| 147 | 17# cat cpuinfo |
| 148 | cpu : CRIS |
| 149 | cpu revision : 10 |
| 150 | cpu model : ETRAX 100LX |
| 151 | cache size : 8 kB |
| 152 | fpu : no |
| 153 | mmu : yes |
| 154 | ethernet : 10/100 Mbps |
| 155 | token ring : no |
| 156 | scsi : yes |
| 157 | ata : yes |
| 158 | usb : yes |
| 159 | bogomips : 99.84 |
| 160 | |
| 161 | 17# cat meminfo |
| 162 | total: used: free: shared: buffers: cached: |
| 163 | Mem: 7028736 925696 6103040 114688 0 229376 |
| 164 | Swap: 0 0 0 |
| 165 | MemTotal: 6864 kB |
| 166 | MemFree: 5960 kB |
| 167 | MemShared: 112 kB |
| 168 | Buffers: 0 kB |
| 169 | Cached: 224 kB |
| 170 | Active: 224 kB |
| 171 | Inact_dirty: 0 kB |
| 172 | Inact_clean: 0 kB |
| 173 | Inact_target: 0 kB |
| 174 | HighTotal: 0 kB |
| 175 | HighFree: 0 kB |
| 176 | LowTotal: 6864 kB |
| 177 | LowFree: 5960 kB |
| 178 | SwapTotal: 0 kB |
| 179 | SwapFree: 0 kB |
| 180 | 17# ls -l /bin |
| 181 | -rwxr-xr-x 1 342 100 10356 Jan 01 00:00 ifconfig |
| 182 | -rwxr-xr-x 1 342 100 17548 Jan 01 00:00 init |
| 183 | -rwxr-xr-x 1 342 100 9488 Jan 01 00:00 route |
| 184 | -rwxr-xr-x 1 342 100 46036 Jan 01 00:00 sftpd |
| 185 | -rwxr-xr-x 1 342 100 48104 Jan 01 00:00 sh |
| 186 | -rwxr-xr-x 1 342 100 16252 Jan 01 00:00 telnetd |
| 187 | |
| 188 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 189 | |
| 190 | |
| 191 | |
| 192 | |
| 193 | |
| 194 | |
| 195 | |