Hello, On Mon, 29 Sep 2003 03:12:00 +0200, Florian Zumbiehl wrote: >> Of course this is possible. I also do have the documentation for the >> 3C509B, and actually this page switching already works for older 3C905B >> (which do have a bug which requires switching) and also for Intel cards >> with a 595 chipset (which can only access 8kB in one chunk). It is >> fairly easy to implement a flash routine into makerom which allows >> page-switching (the 3C509B allows using Flash EPROMs - for normal EPROMs >> there is currently no provision for supporting page > > Hu? Why does it matter what memory technology the chip uses?! Because the page switching algorithm is implemented within the flash EPROM programmer built into makerom. I would like to keep the base netboot bootrom code device-independent. The way this works is as follows: 1. makerom takes the base netboot bootrom code, and then adds the device- independent UNDI interface (either packet or NDIS) and finally adds the network driver. 2. makerom then compresses everything 3. makerom adds a combined loader and decompressor at the beginning of the compressed image. There are two possible loaders: a ROM loader which hooks up interrupts for starting the bootrom in the bootup phase, and a floppy loader which loads the bootrom off a floppy 4. Using makerom you can also select to generate a flashable bootrom. In this case, makerom generates a netbootable image from the ROM image created in step 3, just like an mknbi program. For this, makerom adds the boot image header, and a special Flash loader program, and finally the bootrom image itself. The Flash loader program is device-dependent, and currently supports 3C905B/C, RTL8129 and Intel 80595 chips. When you selected to create a flashable image using makerom, you can then copy the resulting file onto your TFTP server, and provide it to a client just like any other boot image file. Once the client loads the flash image, it starts the flash loader (like the loader in any other mknbi program). The flash loader then does the following: 1. Scan for any supported network card 2. For any supported network card, check if it contains a flash EPROM 3. If no network card found, scan the whole memory for a FlashCard (the Flash EPROM ISA card for which you can find a schematic in the netboot distribution) 4. Select the first network card and Flash chip which matches the bootrom image contained in the boot image file as "payload" 5. If the network card requires bank switching, put some space between the ROM loader and the compressed rest of the bootrom. The size of this space is computed so that the compressed part begins at the start of the second bank. 6. Add a network-card specific bank switching code at the end of the ROM loader code, and modify the ROM loader code so that the decompression routine reads its input using bank switching, once the ROM is really running. 7. Program the whole thing into the Flash EPROM, using routines which are specific for the network card and Flash EPROM type. Now we do have the new bootrom code in the Flash EPROM. When you now restart your client, the ROM loader calls the bank switching code to read the compressed bootrom code off the second and all following banks, and then finally calls the bootrom kernel. Of course this doesn't have anything to do with the type of memory. It's just that all the necessary code is already implemented within the Flash EPROM programmer. >> switching). All necessary functions are already there, so it's just a >> matter of calling a couple of subroutines. However, I don't have the >> necessary hardware to test it, so it never got into the distri- bution. >> I do have a 3C509B, but unfortunately it lacks a ROM socket. > > So, you've got some source code that could be used for implementing it, > which is not public (yet)? Yes and no. I don't have any code specific for the 3C509B. I downloaded the technical specs off the 3Com web site, and found that all models of the 3C509B which do have a ROM socket, allow for using a Flash EPROM. Then I turned to eBay and got a cheap card, but when it arrived it was a model without a ROM socket... I didn't care anymore because I still had a FlashCard available for the intended system. However, writing the necessary code for the 3C509B shouldn't be difficult. All it needs is to write some code which allows detection of the 3C509B (the Crynwr packet driver sources are a great help here) and some code which serves as the bank switching code (this usually requires to just set one or two registers - not more than a couple of lines). All the other necessary framework is already there, published in the latest netboot release. Take a look into the 82595 flash EPROM programmer: it's fairly easy to understand, and it took me only 3 or 4 days to write it. You can find it in the netboot/makerom/flash subdirectory. Or you provide me with a 3C509B, and I write the necessary Flash programmer including the bank switching code. Instead, changing makerom so that it can implement some bank switching code without the Flash programmer would be a whole lot of work. gero. -- Gero Kuhlmann Tollenbrink 18 Groote Gracht 33 gero@gkminix.han.de 30659 Hannover 26723 Emden gero.kuhlmann@arcor.de 04921/997561 =========================================================================== This Mail was sent to netboot mailing list by: "Gero Kuhlmann" <gero@gkminix.han.de> To get help about this list, send a mail with 'help' as the only string in it's body to majordomo@baghira.han.de. If you have problems with this list, send a mail to netboot-owner@baghira.han.de.
For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.