Difference between revisions of "ARC"

From LinuxMIPS
Jump to: navigation, search
(Milo/Pandora)
(ARC Path, Wikipedia links)
Line 1: Line 1:
 
== The ARC Standard ==
 
== The ARC Standard ==
 
was born in the early 90s as part of the Advanced Computing Environment (ACE) initiative.  It standardized certain hardware features and the ARC firmware environment.  What all ARC implementations have in common is their strict non-compliance to the ARC standard, so the [ftp://ftp.linux-mips.org/pub/linux/mips/doc/ARC/riscspec.pdf ARC Standard document] should be taken with a shovel of salt.
 
was born in the early 90s as part of the Advanced Computing Environment (ACE) initiative.  It standardized certain hardware features and the ARC firmware environment.  What all ARC implementations have in common is their strict non-compliance to the ARC standard, so the [ftp://ftp.linux-mips.org/pub/linux/mips/doc/ARC/riscspec.pdf ARC Standard document] should be taken with a shovel of salt.
 +
 +
== Endianess ==
 +
For the ease of [[Wikipedia:Microsoft|Microsoft]]'s [[Wikipedia:Microsoft_Windows_NT|Windows NT]] effort the '''ARC''' standard defines the byte order to be [[Endianess|little endian]] only.  SGI systems where ARC is called '''ARCS''' violate that by being big endian.
 +
 +
== ARC Path Naming Convention ==
 +
Most of the [[Endianess|little endian]] ARC BIOSes can access files on the MS-DOS partitioned and FAT-12/16 formatted disks and ISO-9660 CDFS CD-ROMs.
 +
 +
ARC Path Naming Convention is defined in the MS Knowledge Base article [http://support.microsoft.com/default.aspx?scid=kb;en-us;q102873 Q102873].
 +
 +
The <code>scsi(0)disk(0)rdisk(0)partition(0)</code> is used to access a whole raw disk (like /dev/sda) .
 +
 +
SGI's [[Endianess|big endian]] ARCS can read SGI-disklabelled disks only.
 +
 +
[http://www.total-knowledge.com/progs/mips/SGI-BootCD-HOWTO.shtml SGI O2 BootCD HOW-TO]
  
 
== API ==
 
== API ==
Line 46: Line 60:
  
 
Note, there is no Unlink or Erase call.
 
Note, there is no Unlink or Erase call.
 
== Endianess ==
 
For the ease of [http://en.wikipedia.org/wiki/Microsoft Microsoft]'s [http://en.wikipedia.org/wiki/Microsoft_Windows_NT Windows NT] effort the ARC standard defines the byte order to be [[Endianess|little endian]] only.  SGI systems where ARC is called ARCS violate that by being big endian.
 
  
 
== 32-bit vs. 64-bit ==
 
== 32-bit vs. 64-bit ==
 
The ARC standard understands itself as an environment for a 32-bit operating system.
 
The ARC standard understands itself as an environment for a 32-bit operating system.
With the [[R4000]] and [http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha] already being around back then a short sighted decission but good enough for another few years on small to medium sized systems.
+
With the [[R4000]] and [[Wikipedia:DEC_Alpha|DEC Alpha]] already being around back then a short sighted decission but good enough for another few years on small to medium sized systems.
  
 
As the result most MIPS ARC firmware implementations are 32-bit but a few more recent ones are 64-bit only; the exact way this was done was never published anywhere.  The ARC firmware on [[IP22|Power Indigo 2]], [[IP22|Indigo 2 R10000]], [[IP27|Origin]], [[IP27|Onyx 2]], [[IP30|Octane]] systems is known to be 64-bit.
 
As the result most MIPS ARC firmware implementations are 32-bit but a few more recent ones are 64-bit only; the exact way this was done was never published anywhere.  The ARC firmware on [[IP22|Power Indigo 2]], [[IP22|Indigo 2 R10000]], [[IP27|Origin]], [[IP27|Onyx 2]], [[IP30|Octane]] systems is known to be 64-bit.
Line 80: Line 91:
 
* [ftp://ftp.sra.co.jp/pub/os/NetBSD/misc/arc/arcdiag-0.2.src.tar.gz arcdiag] sourcecode.
 
* [ftp://ftp.sra.co.jp/pub/os/NetBSD/misc/arc/arcdiag-0.2.src.tar.gz arcdiag] sourcecode.
 
* [ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag arcdiag] binary for the [[Endianess|little endian]] ARC systems.
 
* [ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag arcdiag] binary for the [[Endianess|little endian]] ARC systems.
* [ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22 arcdiag.ip22] binary for the [[Endianess|big endian]] 320bit SGI ARCS systems.
+
* [ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22 arcdiag.ip22] binary for the [[Endianess|big endian]] 32-bit SGI ARCS systems.
  
 
== Network Booting ==
 
== Network Booting ==
Line 97: Line 108:
 
=== The kernel download from the TFTP server stops and times out ===
 
=== The kernel download from the TFTP server stops and times out ===
  
This may happen if the TFTP server is using a local port number of 32768 or higher which usually happens if the TFTP server is running Linux 2.3 or higher.  This problem may be circumvented by doing a "echo 4096 32767 > /proc/sys/net/ipv4/ip_local_port_range" on the server.  This problem has been observed on [[IP22|SGI IP22]] and [[RM_200|Siemens-Nixdorf RM200]] systems.
+
This may happen if the TFTP server is using a local port number of 32768 or higher which usually happens if the TFTP server is running Linux 2.3 or higher.  This problem may be circumvented by doing a
 +
 
 +
echo 4096 32767 > /proc/sys/net/ipv4/ip_local_port_range
 +
 
 +
on the server.  This problem has been observed on [[IP22|SGI IP22]] and [[RM_200|Siemens-Nixdorf RM200]] systems.
  
 
=== Bug in DHCP version 2 ===
 
=== Bug in DHCP version 2 ===
  
 
When using DHCP version 2 you might see the following problem: Your machines receives it's BOOTP reply 3 times but refuses to start TFTP. You can fix this by doing a "unsetenv netaddr" in the PROM command monitor before you boot your system. DHCP version 3 fixes this problem.
 
When using DHCP version 2 you might see the following problem: Your machines receives it's BOOTP reply 3 times but refuses to start TFTP. You can fix this by doing a "unsetenv netaddr" in the PROM command monitor before you boot your system. DHCP version 3 fixes this problem.

Revision as of 09:20, 3 February 2005

The ARC Standard

was born in the early 90s as part of the Advanced Computing Environment (ACE) initiative. It standardized certain hardware features and the ARC firmware environment. What all ARC implementations have in common is their strict non-compliance to the ARC standard, so the ARC Standard document should be taken with a shovel of salt.

Endianess

For the ease of Microsoft's Windows NT effort the ARC standard defines the byte order to be little endian only. SGI systems where ARC is called ARCS violate that by being big endian.

ARC Path Naming Convention

Most of the little endian ARC BIOSes can access files on the MS-DOS partitioned and FAT-12/16 formatted disks and ISO-9660 CDFS CD-ROMs.

ARC Path Naming Convention is defined in the MS Knowledge Base article Q102873.

The scsi(0)disk(0)rdisk(0)partition(0) is used to access a whole raw disk (like /dev/sda) .

SGI's big endian ARCS can read SGI-disklabelled disks only.

SGI O2 BootCD HOW-TO

API

ARC BIOS provides a call vector table for the ARC BIOS services.

 N  Offset  Name
00   0x00   Load
01   0x04   Invoke
02   0x08   Execute
03   0x0c   Halt
04   0x10   PowerDown
05   0x14   Restart
06   0x18   Reboot
07   0x1c   EnterInteractiveMode
08   0x20   ReturnFromMain
09   0x24   GetPeer
10   0x28   GetChild
11   0x2c   GetParent
12   0x30   GetConfigurationData
13   0x34   AddChild
14   0x38   DeleteComponent
15   0x3c   GetComponent
16   0x40   SaveConfiguration
17   0x44   GetSystemId
18   0x48   GetMemoryDescriptor
19   0x4c   Signal
20   0x50   GetTime
21   0x54   GetRelativeTime
22   0x58   GetDirectoryEntry
23   0x5c   Open
24   0x60   Close
25   0x64   Read
26   0x68   GetReadStatus
27   0x6c   Write
28   0x70   Seek
29   0x74   Mount
30   0x78   GetEnvironmentVariable
31   0x7c   SetEnvironmentVariable
32   0x80   GetFileInformation
33   0x84   SetFileInformation
34   0x88   FlushAllCaches
35   0x8c   TestUnicodeCharacter
36   0x90   GetDisplayStatus

Note, there is no Unlink or Erase call.

32-bit vs. 64-bit

The ARC standard understands itself as an environment for a 32-bit operating system. With the R4000 and DEC Alpha already being around back then a short sighted decission but good enough for another few years on small to medium sized systems.

As the result most MIPS ARC firmware implementations are 32-bit but a few more recent ones are 64-bit only; the exact way this was done was never published anywhere. The ARC firmware on Power Indigo 2, Indigo 2 R10000, Origin, Onyx 2, Octane systems is known to be 64-bit.

ECOFF and ELF support

The ARC standard mandates ECOFF support only. While appropriate for the UNIX flavours of the time which often still based on ECOFF and convenient for Windows NT which is using PECOFF, an variant of ECOFF with an MSDOS .exe header added it wasn't appropriate for any modern flavor of UNIX which usually are based on the ELF binary format. Depending on the age and operating systems offered by a particular vendor many ARC firmware variants only support ECOFF.

Booting the kernel fails with PROM error messages

  >> boot bootp()/vmlinux
  73264+592+11520+331680+27848d+3628+5792 entry: 0x8df9a960
  Setting $netaddres to 192.168.1.5 (from server deadmoon)
  Obtaining /vmlinux from server deadmoon
                                                                               
  Cannot load bootp()/vmlinux
  Illegal f_magic number 0x7f45, expected MIPSELMAGIC or MIPSEBMAGIC.

This problem has been observed with Indys and with RM_200. The elf2ecoff utility which is part of the kernel source allows conversion of an ELF kernel binary into a bootable ECOFF binary as the bootfile. There is also the arcboot utility which is shipping with recent Indy distributions and which as first stage bootloader is able to boot an ELF kernel of an ext2 or ext3 filesystem. Usually arcboot is the preferable solution.

Milo/Pandora

In the early days of Linux/MIPS Milo was the bootloader for little endian ARC systems. It's considered obsolete and there are no systems that rely on it.

Pandora is a simple monitor and debugger including with Milo.

Arcdiag

The arcdiag diagnostic utility is an example of the ARC MIPS standalone application.

Network Booting

The ARC Standard mandates network booting of an operating system via BOOTP/TFTP or alternatively DCL/RIPL. Most implementations comply to that with a varying degree of buggyness; the exception is the Olivetti M700-10 where network booting is not supported at all.

Machine doesn't download the kernel when I try to netboot

This problem has been observed with the ARC firmware of SNI RM_200 and SGI IP22.

The boot client is replying to the BOOTP packets (may be verified using a packet sniffer like tcpdump or ethereal), but doesn't download the kernel from your BOOTP server. This happens if your boot server is running a kernel of the 2.3 series or higher. The problem may be circumvented by doing an

  echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc

as root on the boot server. Alternatively you can also add this setting to /etc/sysctl.conf.

The kernel download from the TFTP server stops and times out

This may happen if the TFTP server is using a local port number of 32768 or higher which usually happens if the TFTP server is running Linux 2.3 or higher. This problem may be circumvented by doing a

echo 4096 32767 > /proc/sys/net/ipv4/ip_local_port_range

on the server. This problem has been observed on SGI IP22 and Siemens-Nixdorf RM200 systems.

Bug in DHCP version 2

When using DHCP version 2 you might see the following problem: Your machines receives it's BOOTP reply 3 times but refuses to start TFTP. You can fix this by doing a "unsetenv netaddr" in the PROM command monitor before you boot your system. DHCP version 3 fixes this problem.