SROM Utilities Version 4.05 Release (2-Mar-1998) ----------------------------------------------------------- Version 4.05: ------------- SROMPROD: a. Added the flag "/token_format" to enable users with Token Ring format of addresses use this utility. In such a case this user needs to write the first token ring address to be programmed to the "addr.log" file, and the maximal token ring address to the "addr.max" file. In this case, using the "/token_format" flag in the command line will translate those addresses to an IEEE format addresses. The address shown in the "addr.log" and "addr.max" files will remain in the token ring format, while the address written to the SROM will be in IEEE format. b. Changed the "addr.log" file to contain the address to be programmed to the SROM, and not the last address that was programmed to an SROM. Thus, the user does not need to write into this file the first address to be used minus one, but the first address itself. c. Changed the function "IncrAddr" in the "dev.c" file to increment the address in the "addr.log" file by the ControllerCount (the number of controllers attached to the SROM) and not by one as it was the default until now. d. Changed internal variables of functions which are very big (arrays of 4K size) to be static ones and hence be kept on the heap. Otherwise they are kept on the stack, but the stack is not big enough for them (this was done in files common to SROMUTIL and SROMPROD). SROMUTIL: a. Added support for Block Type 6 (external phy power-down). b. Added support for Magic Password. c. Corrected a bug that caused SROMUTIL to incorrectly announce a corrupted magic CRC when reading a 4K template file. d. Corrected a bug that caused BlockType5 not to be counted in the BlockCount field in the SROM. (This bug is actually a result of the fact that before BlockType5 existed, the BlockCount was actually MediaCount, and since BlockType5 is not a media it was not counted.) e. Enabled SROMUTIL to accept also upper-case templates as well as lower-case ones. Version 4.04: ------------- SROMPROD: a. Fixed a bug in the "SanityCheck" function, that caused SROMPROD to crash sometimes on some machines, when programming an SROM. b. Added wake up of the chip before any read or write to the SROM. SROMUTIL: a. Changed the function "InitSROM" in the module srom.c to detect the SROM size, and called this function in "InitOurDevice" after getting CSR9. This causes the detecting of the SROM size to be performed only once for an SROM and not before each read or write to it. (This is also for SROMPROD.) b. Added functions that perform wake up to the chip (reset CFDD<30:31>). Even though the program worked fine, this was done to perform a "cleaner" and more correct execution. c. Changed bit #5 of Func0_HwOptions (OnNowD3AuxPwr) to be reserved, with no check box to change it. This is done due to changes in the specification. Version 4.03: ------------- Changed the function "MakeSureSROMIsIdle" to "SROMSettler", which uses longer delays. This fixes a bug that made the program gert stuck when reading or writing to a GreenNet device. This function works correctly for all devices. SROMPROD: a. Added support for the 21143 rev 4.1 (no functionality changes, just supporting another revision). b. Added the possibility to program a 4K SROM using a 1K template. c. Added a "sanity check" that makes sure that the device being programmed has the same ID and revision as in the top file of the desired template. Otherwise, SROMPROD would not pjrogram a device with a template of a different one. Note that this sanity check requires that the .top file will also be available when running the program, just as it is in SROMUTIL. SROMUTIL: a. Added support for the 21143 rev 4.1 (no functionality changes, just supporting another revision). b. Moved all the functions of the "TDataLine" class to the new file dataline.c. c. Restricted the possibility to add tuples only to devices that support CardBUS (21142, 21143 all revisions and 21540 all revisions). d. Restricted the possibility to add a magic block only to devices that support magic mode (21143 all revisions and 21540 all revisions). e. Eliminated the support for magic block when there is more than one device in the SROM. This is donesince it is not good for more than one device to have the same magic IEEE address. f. Eliminated the support for ID block when another different device is added ("different" is also when only the revisions are not identical). This is done because two different devices cannot share the same SubSystemID, CIS pointer and modem information. g. When a template can be compacted from 4K to 1K, it is done after verifying with the user. h. When a 1K template from the previous version has tuples in the SROM and needs to be enlarged to 4K, to fit the new version, it is done after verifying with the user. i. Fixed a bug in the function "NullIDBlock". The function checked the first 9 bytes instead of the first 9 words of the SROM. Version 4.02: ------------- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !! !! LIMITATIONS: !! !! ------------ !! !! !! !! 1. When releasing this version, there were still no GreenNet cards available for testing. !! !! Even though, the kit was released to enable users test the GreenNet functionality as soon as !! !! it gets to the market. All testing for the GreenNet were done on a 21143, since the GreenNet !! !! actually has the same processor as the 21143. If, when the GreenNet comes out, changes are !! !! needed, they will be made as soon as possible, to enable users work with it. !! !! !! !! 2. When creating a template for a GreenNet (21143 Rev 4.0 or 4.8) it is supposed that the !! !! SROM is of 4K. This is assumed since the SROM cannot be read when creating a template. !! !! There may even not be any SROM in the machine when creating a template. !! !! Thus, if you work with a 1K SROM, then, when the question "Would you like to have tuples?" !! !! is prompted, if you answer NO, there is no problem, but if you want tuples and you answer YES,!! !! then, when the question "Where will the tuples be located?" is prompted you must answer !! !! BROM and !!NOT!! SROM, since there is no space in a 1K SROM for tuples!! !! !! This problem does not exist when reading a template file or an SROM, because the reading !! !! detects the SROM size. !! !! !! !! 3. When creating a template for a GreenNet (21143 rev 4.0 or 4.8) with a Magic Block, Leave the !! !! "Magic Disable" bit of the Magic Command UNSET, to avoid problems in CarsBus!! !! !! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SROMPROD: a. Added support for the GreenNet (21143 Rev 4.0 and 21143 rev 4.8). This includes also: - Support for programming and reading a 4K SROM (8 bits address). - Support for Dual Function (Ethernet and Modem). - Programming Ethernet and modem tuples to the SROM. b. Added two modules to the prorgram: dualfunc.c and dualfunc.h to support the dual functionality. c. Added the flags "/ethernet_tuples=" and "/modem_tuples=" for programming these tuples to the SROM. d. Fixed a bug that appeared when the SROM was already programmed with a Magic Packet, SROMPROD did not confirm overriding this SROM. SROMUTIL: a. Added support for the GreenNet (21143 Rev 4.0 and 21143 rev 4.8). This includes also: - Support for reading a 4K SROM (8 bits address). - Support for Dual Function (Ethernet and Modem). - Support for the new calculation of the CIS Pointer for the offsets of tuples that will be programmed to the SROM. b. Added three modeules to the program: dualfunc.c and dualfunc.h to support the dual functionality. grnutil.c to support the GreenNet. Version 4.01: ------------- SROMPROD: a. Changed Wake-On-Lan to Magic Packet. Magic Packet is a trademark of Advanced Micro Devices, Inc. b. Changed the default functionality of /magic_format, /magic_ieee and /magic_cmd flags as follows: - not using /magic_ieee or /magic_cmd will use the ones that are in the specified template file. - using /magic_ieee=self will use the board's IEEE address to be also the Magic IEEE address. c. Fixed a bug that caused SROMPROD not to find a NIC that the user defined using the "CFID=" flag. Now it works correctly and the user can program or dump an SROM of a NIC that is not supported by SROMPROD. NOTE: It is the user responsibilty when he programs an SROM with an unsupported CFID, since it may cause incompatibilities. SROMUTIL: a. Changed Wake-On-Lan to Magic Packet. Magic Packet is a trademark of Advanced Micro Devices, Inc. b. Moved the handling of the 21140 from SROMUTIL.C to a new file named FNETUTIL.C. Version 4.00: ------------- SROMPROD: No Change. SROMUTIL: a. Added support for Magic Information Block. b. Added the ability to add CIS information, if not existant, also when reading a device or a template and not only when creating a new template. c. Moved the handling of the DS21140 to a new file - fnetutil.c. The handling of the new DS21144 has been added to the file phrutil.c. Version 3.03: ------------- SROMPROD: No Change. SROMUTIL: a. Added support for the 21143, including all special classes and windows. b. Devided the main file of the program to seperate files, according to the chips names: tlputil.c (for the DS21041), twinutil.c (for the DS21142) and tw2util.c (for the DS21143). Handling the DS21140 is still in sromutil.c. c. Added a 'Type' protected field for the Block Type in DS21140MediaBlock, DS21142MediaBlock and in DS21143MediaBlock, and matching public methods: SetBlockType and GetBlockType. d. Added support for Block Type 5 (Reset Sequence) for the 21140, 21142 and the 21143. e. Defined a new structure - WORDsArray - which is an array of 10 words for the Reset Sequence (10 is the maximum number of words in the Reset Sequence). f. Added the possibility to add MII phy media that are Nway advertised only, although they are not in the media capabilities. A warning message is issued when defining no media in the capabilities of the phy (in this situation all media defined are Nway advertised only). g. Hide all the information about Phy address and phy number from the user, to avoid confusion. h. Changed the default for the TTM Bit to be on (checked) for 10Mb Media and leave the default as off (unchecked) for 100Mb media. This was done to avoid the warning message about mismatch between medium and TTM Bit (because the user often forgot to update the TTM Bit). i. Corrected a problem which caused the program to hang when trying to delete an item from an empty media list. j. Corrected a problem which caused the byte map (in the SROM menu) to be updated only after saving the template to a file and loading it. Now the byte map is updated whenever a change is made to the template. k. Corrected a problem which forced the user to enter a GPR Sequence and a Reset Sequence for an MII Phy. Since it is a board specific information, from now on it is the user responsibility to enter a GPR Sequence and a Reset Sequence whenever necessary. Version 3.01.2: --------------- SROMUTIL - no change. SROMPROD: Support Magic SROM format, including calculating CRCs and keywords for controling the Magic data: /magic_format /magic_cmd /magic_ieee See readme.txt for usage details. Version 3.01.1: --------------- SROMUTIL - no change. SROMPROD: a. The README.TXT file was updated to include documentation of the command line qualifier "/ignoreCRC", which causes the program not to reject template files with illegal CRCs. The program calculates a CRC for the data and writes the SROM with a legal CRC. b. A new command line qualifier was added - "noCRC". This is a special engineering option (documented in the README.TXT). When used, the program will not reject files with illegal CRCs, and neither will it calculate a legal CRC to be written to the SROM. SROMs with illegal data (but of legal length) can be produced this way. c. When asked to overwrite an SROM which is already in the new format, the program will give the user an option to write the IEEE address that was on the SROM, to the rewritten SROM. This way the existing IEEE address can be preserved and no new address is used. d. The parsing of the command line is no longer case-sensitive. e. When the command line qualifier "/dump" is used, the program will now also save SROMs with illegal CRCs to the specified file. f. When executed in a directory containing no ADDR.LOG file, the program does not create such a file if the IEEE address that the user specified is illegal. Previous versions created this file in any case, which could be confusing in future runs: if an illegal IEEE address was entered the file was left in the directory as a zero-length file, causing the next run to issue confusing error messages. Revision History: ----------------- Version 3.00: ------------- 1. SROMPROD: The command line is now parsed before the boards on the machine are inspected. 2. SROMUTIL: a. Support of SROM Format Version 3.00: The new extended media block format is now supported, making it possible to create template files with these media blocks (for MII media or other), and to read and parse SROMs and template files with this format. The utility makes some effort to safeguard the user against creating template files which might not be desired - such as template files with an external phy whose address is not zero. b. Compliance with the new naming guidelines: Changed the names DC21140, DC21041 to DS21140 and DS21041, respectively; changed the occurrences of DECChip to Digital Semiconductor . c. Default media: Removed the default media for the adapters: the creator of a template must select all media manually. Saving a template file with a 'mediumless' adapter is not permitted. Version 3.00c: -------------- 1. SROMPROD: a. Running the utility for the first time should be done in a directory where there is no ADDR.LOG file. The utility will then prompt the user for the IEEE address to be written to the current chip, and thus create and initialize the ADDR.LOG file for subsequent use. b. The utility now supports DS21142: it is recognized and its SROM can be written to using the utility. A sample template file for DS21142 is provided. 2. SROMUTIL: a. The phy chip address and/or index number are now displayed in hex. b. A problem in version 3.00, that caused wrong values to be displayed some of the times after re-entering a DS21140 media info window, was solved. This happened when re-entering the window while creating a template file, and while entering it at any time when reading an SROM or while reading an existent template file. Data saved before this re-entrance was not problematic. c. A problem in version 3.00 that sometimes caused miswrites of DS21041 media data with the EXT bit set (which have CSR13-15 in the SROM) to the template file (and/or to the SROM), was solved. d. In version 3.00, when creating a template for DS21140 with different phy chips, a problem caused the program to terminate if some specific orderings of the media were used. The problem was solved. Version 3.00d: -------------- 1. SROMPROD: A new feature was added: an SROM's contents can now be read and dumped to a file. The file name and the index of the SROM (if there is more than one SROM in the machine) are specified by the user; if a file name is not specified, the user is prompted to enter it. 2. SROMUTIL: Some of the program's source modules were modified; none of the functionality was changed. 3. general: The sample template file for DS21142 (DS21142.TXT) was replaced, because of inconsistencies in the former one. Version 3.00e - INTERNAL: ------------------------- 1. SROMPROD: a. A new feature was added, enabling the program to read template files with comments in them. A comment is a string starting with a semicolon, ending with a carriage return (similar to comments in assembly language). Example: 00 1f ;GEP sequence 09 ;CRC for ROM 01 af b. Since template files for DS21142 can only be created manually as of now, the command-line flag "/ignoreCRC" should be used when writing such a file to the SROM. This was missed in the notes for previous releases. In general, manually created templates without valid SROM CRCs can be written to the SROM using SROMPROD and this flag. c. Documentation of the command-line option "cfid=New CFID" was added to the README.TXT file for this release. Previously it was documented only in the usage message in the program itself. 2. SROMUTIL: a. A new feature was added, enabling the program to read template files with comments in them. A comment is a string starting with a semicolon, ending with a carriage return (similar to comments in assembly language). See example above. b. Corrected problem in running with 21142-based networking cards: when run with unsupported cards, the program would detect no supported NICs and give notice about it; starting from version 3.00c, this would not work with 21142, and the system would hang. This has been corrected. Version 3.00f: -------------- 1. SROMUTIL: a. Corrected a problem in running on a machine with a 21142-based networking card: if the program was run on a machine in which there was more than one NIC, one of which was a 21142, the program would print an error message when asked to read the SROMs in the machine; only upon another request the program would recognize the other NICs. In this version, the program prints a warning about 21142 being detected though not supported, and lists the other SROMs (as required). b. Corrected a problem in editing the media supported by phy chips: when editing a template file (or an SROM's contents), deleting a medium from a phy which contained other media (which were not deleted), or changing the medium's TTM bit or Nway advertisement bit, did not make the required changes in the template (or the rewritten SROM). 2. SROMPROD: a. Corrected a problem which caused the program not to accept a command line with the flag "SROM=x" for x's greater than 1. b. Added the SROM number and the file name to the message printed after dump is completed. Version 3.01 - Beta (Internal Release): --------------------------------------- 1. SROMUTIL: a. Support of SROM format version 3.01 - supporting SROMs for 21142. b. The program now checks that the length field for extended media blocks is correct, and gives an error message if such a field is erroneous. The error message is printed upon selection of the file/SROM. The program does not exit after giving the error message. If the data is saved (or written to the SROM), the correct length will be calculated and used. c. MII Phy support: In previous versions supporting MII Phys, the program did not allow reading a template (or an SROM) for which the media capabilities were only a subset of the media advertised on Nway (upon such an encounter, the program produced an error message and exited). Templates of this type still cannot be manufactured by the utility, but if a template or an SROM like that is read by the program, a warning will be given but the program will not terminate. d. As in SROMPROD, corrected a problem in parsing template files with comments in them. For an example, see above. 2. SROMPROD: a. Corrected a problem which caused an unnecessary error message after program completion, when SROMs were written to in sequence. The problem fixed did not cause any functional problem. b. Corrected a problem in parsing template files with comments in them: in a pair of lines such as this 00 ;comment and carriage return ;another comment with no white space before it the second line would not have been parsed as a comment; therefore, if it contains hex digits, they would have been written to the SROM. This is now fixed. 3. General: a. Replaced the DS21140.TXT sample template file with one in which the Command field and the General Purpose Port Data are changed, due to new information. The DS21142.TXT sample template was also changed to one supporting three non-MII media and a National phy daughter card. Version 3.01.1 - Beta (Internal Release): ----------------------------------------- SROMUTIL: Support of the CIS Cardbus Pointer field. Version 3.01: ------------- SROMUTIL: a. Version numbers: If a template/SROM is entered with data on it that are supported only by higher formats than was in that template/SROM, the program will warn the user; and if the user does not want to upgrade the version number, the program will not allow changing the data or writing it to the SROM. The program will allow saving it to a file. If a legal template/SROM is edited and data is added that is supported only by higher formats than was in that template/SROM, the program will warn the user; if the user does not want to upgrade the version number, the program will not allow changing the data or writing it to the SROM. The program will allow saving it to a file. b. If a template/SROM is entered with a 21142 info leaf that contains a medium block that is not extended (does not have the extended bit on in its first byte), the program warns the user, and allows the user to change it (make it extended). If the user does not change it, the program skips that medium block (according to its length field), and the data in that block is not kept - and will not be saved to file or written to the SROM (although the data read is left unaltered). c. If a template/SROM is entered with a 21140/21142 info leaf that contains a medium block with an unrecognized type, the program warns the user and skips that medium block (according to its length field). The data in that block is not kept - and will not be saved to file or written to the SROM (although the data read is left unaltered).