On 08/12/2005 10:47 PM, Ken Fuchs wrote:
Just to verify once again, there is no known linux bios programmer?
I don't know of any, but I haven't looked beyond the Enhanced Willem Universal Programmer and its MS Windows program.
OK. I'll put that on my todo list of things to look for.
The RD1 BIOS Savior is what you need to make this a safe operation. It adds a second flash (BIOS) device that works as a backup, once it is successfully programmed. It is installed in the BIOS socket and the original BIOS chip is installed into it. There is a pair of wire going from the RD1 BIOS Savior to a sliding switch that mounts into the provided slot cover. In the ORG position, the original BIOS is active and in the RD1 position, the RD1's BIOS device is active. I used one successfully on a Tyan S2885 system.
Yes, that's an essential tool.
First copy the original BIOS to a file.
I'm still having problems with this. I haven't been able to convince linux's mtd drivers to do this. I've tried many things so far to try to save the BIOS to a file from within linux. Maybe this is also not what people normally do.
I see the instructions in the wiki for pulling out the VIDEO BIOS. Please tell me this is a standard in the PC world and we can just use the video bios to init the video chip and wrap linuxbios around it. That would be fantastic! Programming the video chips is going to be extremely unlikely/impossible in most cases. (linux-2.6.12.2/Documentation/power/video.txt is interesting reading)
I dumped my vgabios without a hitch: root@jcarr:/home# dd if=/dev/mem of=vgabios.bin count=1 bs=64K skip=12 1+0 records in 1+0 records out 65536 bytes transferred in 0.012833 seconds (5106847 bytes/sec) root@jcarr:/home# strings vgabios.bin |grep "ATI Tech" (C) 1988-2003, ATI Technologies Inc. BK-ATI VER008.017M.097.000
I'm very surprised to have that work. Thats great though! I wonder how that works. Can't the iomem window be expanded to show the whole bios image then? Then it would be really really trivial to save your bios image as a file! All you'd have to use is dd!
Anyway, I don't understand enough to know how this is being done. I assume the BIOS is hooked up to the host bridge chip somehow. Or perhaps it goes through ACPI somehow? I don't know how to figure out how the kernel finds & maps the video bios. It seems to happen early on in the boot process arch/i368/setup.c just hard codes an entry for it:
static struct resource video_rom_resource = { .name = "Video ROM", .start = 0xc0000, .end = 0xc7fff, .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM };
Man, not a lot to go on there. I guess if it was possible to just memory map the whole BIOS someone would have done that by now.
Is there a standard place that the videobios is stored in the bios flash?
Sorry about the rambling, it's been a long day of experiements. I got annoyed about the changing location and size of the video bios so I made the attached perl script to pull it out. Jeff BTW: strings vgabios.bin on my machine showed "pbd47ev.sab" which seemed suspiciously like a DOS filename. google revealed SAB as a standard ASIC file format. Makes me wonder what kind of software ATI uses to do their ASIC designs.