Difference between revisions of "PCI card firmware"
From MCEWiki
(added checksum) |
(→Firmware version notes) |
||
Line 28: | Line 28: | ||
== Firmware version notes == | == Firmware version notes == | ||
+ | |||
+ | === U0107 (pending): alpha === | ||
+ | |||
+ | * This firmware can operate in either of two modes: | ||
+ | ** '''U0106 compatibility mode''': the firmware will work with classic MAS driver, just like U0106 (plus some bugfixes). | ||
+ | ** '''New Master-only mode''': when activated, uses new set of protocols for communication with the MAS driver. These have proven to be much more stable on some systems. Also, bigphysarea is no longer needed. | ||
+ | * This firmware/driver are in limited release; do not attempt to use them without consulting with UBC. Also, see [[Master-only PCI card firmware]]. | ||
=== U0106 (2011-11-21): Recommended version === | === U0106 (2011-11-21): Recommended version === |
Revision as of 08:58, 18 April 2014
Template:Hierarchy header UBC-produced firmware for the ARC-64 PCI card. MAS provides a linux kernel driver for this firmware.
Contents
Download
These S-record files should work with any reasonable EEPROM programmer:
- U0106 (recommended) - http://e-mode.phas.ubc.ca/mce/firmware/sdsu/SDSU_RevU0106.s
- 8-bit checksum 6FCDCE
- Scrubber file - try writing all ones to your this to your chip first if your programmer won't let you "erase" it:
- http://e-mode.phas.ubc.ca/mce/firmware/sdsu/scrubber_RevU0106.s
- U0105 (deprecated) - http://e-mode.phas.ubc.ca/mce/firmware/sdsu/SDSU_RevU0105.s
- U0104 (deprecated) - http://e-mode.phas.ubc.ca/mce/firmware/sdsu/SDSU_RevU0104.s
The full source code is available in these archives (it will not compile unless you get the correct assembler and stuff):
- U0106 - http://e-mode.phas.ubc.ca/mce/arc_pci/source_code/arc_pci-U0106.tar.gz
- U0105 - http://e-mode.phas.ubc.ca/mce/arc_pci/source_code/arc_pci-U0105.tar.gz
- U0104 - http://e-mode.phas.ubc.ca/mce/arc_pci/source_code/arc_pci-U0104.tar.gz
The subversion tree can be obtained like this (you may not have access to this repository; contact UBC);
svn checkout svn://e-mode.phas.ubc.ca/arc_pci
It is laid out roughly as follows:
/trunk main line of development /releases tagged versions of code /tools debugging tools /clash stuff for making CLAS work with wine and linux /docs useful (though maybe not to you) notes
Firmware version notes
U0107 (pending): alpha
- This firmware can operate in either of two modes:
- U0106 compatibility mode: the firmware will work with classic MAS driver, just like U0106 (plus some bugfixes).
- New Master-only mode: when activated, uses new set of protocols for communication with the MAS driver. These have proven to be much more stable on some systems. Also, bigphysarea is no longer needed.
- This firmware/driver are in limited release; do not attempt to use them without consulting with UBC. Also, see Master-only PCI card firmware.
U0106 (2011-11-21): Recommended version
- Backward compatible with U0104 and U0105.
- Fixes bug introduced in U0105 that prevented handling of some PCI bus errors.
- Introduction of command to update PCI burst size.
- Bugs:
- Versions U0104-6 all suffer from the following issues:
- Host interrupts use bit-test instructions, which are not interrupt safe; consequence is a race condition that can upset ongoing tasks such as FO downloads and PCI bursts. Patch for this issue, applicable to firmware versions U0104-6:
- Multiple simultaneous PCI bus errors are not handled properly, leading to stale bits in the error register. This is an unlikely error vector, but should be fixed.
- Versions U0104-6 all suffer from the following issues:
U0105 (2009-06-08)
- Backward compatible with U0104.
- Support for MCE STOP commands and commands-on-the-fly.
- Accelerated MCE command code (along with Quiet-RP this increases commanding rate to ~6 kHz).
- Quiet-RP simplifies the protocol for MCE reply handling.
- Low-level improvements:
- CON is done as PCI burst
- Fibre-optic FIFO is emptied with timed read instead of polling.
- Hand-shaking for interrupts instead of host command to clear INTA and HC3.
- Non-interrupt context code disables interrupts when performing PCI transactions.
- Host vector interrupts are otherwise enabled, so PC doesn't have to force with HNMI bit.
- Bugs and fixes:
- Some PCI bus arbitration conditions are mis-handled. This is fixed in U0106; alternately the commands below can be issued to patch active U0105 firmware. (The patch will not survive a power cycle.):
- Also this (see description in U0106):
U0104: First version with non-realtime linux support
- Implements quiet transfer mode! Remains backwards compatible with A1.4.
- Fixes the 64k boundary crossing issue
- Moves parameters that enter via interrupt out of registers and into variables
- Version reporting tag-along to RDM command (sending 'VER' to RDM's vector address returns the code version).
- Maximum burst length is reduced to 64 bytes, and is configurable.
- Reset (RST) clears the fibre fifo
- Bugs:
- This (see description in U0106):
U0103: Oldest UBC release
- Minor modifications of SCUBA2's A1.4 firmware, to improve PCI stability.
- Not compatible with non-realtime systems.
Programming the ARC64 Flash memory
To program or upgrade the PCI card's firmware, it is necessary to remove the flash memory chip from the card and program it using a standard EEPROM programmer.
- Obviously you should turn off your computer and stuff first.
- The chip is a large DIP located at U5 on the PCI board. To remove the chip you may use one of the following (in increasing order of risk, and decreasing order of barbarism):
- telekinesis
- a chip removal tool
- needle-nose pliers
- a screw-driver
- thumb and finger
- fingers only
- The chip is a standard 256 Kbit electrically erasable Flash ROM. If you can't find the particular part in your EEPROM programmer software, try using one of these compatible parts:
- Fujitsu MBM28C256
- CSI (Catalyst) CAT28C256 L
- Anything else that has 28C256 in its name as long as it is a 28-pin DIP package and you are using the right socket for your programmer.
- Some programmers won't recognize this chip as erasable. You can just try programming the chip with the new firmware, or pseudo-erasing it first using a "scrubber" file (available for U0106 in the links above).
- The firmware we provide is compiled into a [ http://en.wikipedia.org/wiki/SREC_%28file_format%29 Motorola S-record format ] hex file. This is a standard format that your programmer software should be able to cope with.
- When placing the chip back in the board, the notch on the chip should be at the same end as the notch on the socket.