内置插卡式ISA编程卡——c't-Flasher 2000年 第50期   当你升级BIOS时,“铛”,你可能会“幸运地”遇上断电,这时BIOS文件还没有完全写完,此后再开机,屏幕上将没有任何反应,预示你此次升级完全失败。另外升级文件与主板不匹配、升级文件被修改过,也会导致BIOS升级失败。更何况,还有恼人的CIH病毒,也会时时成为BIOS的杀手。   BIOS损坏,对于手中有编程器的用户这也不成为什么问题,因为BIOS升级失败,并非BIOS芯片物理损坏,用编程器把BIOS的Firmware重新写入,就可以很容易地修复已损坏的BIOS。编程器是利用EPROM/EEPROM芯片本身在一定电压条件下,可反复写入Firmware的物理特性,将BIOS代码文件重新固化到BIOS芯片中的。市场上可以找到的编程器种类较多,不过,兼价的编程器一般都只能对某一类型或容量的ROM芯片进行读写,如有些只能对27系列的EPROM芯片读写,也有些编程器只能对28、29系列的EEPROM进行读写操作;还有些编程器只能对1MB以下的ROM芯片进行读写,而另一些能对2MB以上的进行读写。专用的编程器可以操作的芯片种类较多,并且通过软件升级,可以很容易地支持厂家新出品的芯片类型。这些编程器一般是用电缆数据线把编程器和PC机的并口或串口相联,在PC机上,用专用的软件控制ROM芯片的编程和读写操作。另外这类编程器一般都有单独的电源供给,安装、使用稍麻烦,价格一般也较高,作为不常写芯片的DIYer来说,拥有没有必要。   C′t-Flasher是市场上最近新出的一种内置插卡式的编程器。该编程器其实只是一种8bit的标准的ISA卡,它可以插入电脑的任何一个ISA插槽中,在该卡上,有一个DIP32形式的FLASH ROM插座,可以对1M~4M的FLASH ROM芯片编程,适用于AMD、INTEL、SST或Winbond出品的芯片。和其它扩展卡一样,该控制卡需要独占一个I/O地址,以避免和系统内的其它设备发生冲突,为此,该卡上提供了一组DIP开关A2~A8,用以设定该卡的I/O地址,可设定的I/O地址见^50030201a^表1。由于是标准的ISA接口,该卡要占用2K的上位内存,为了避免与其它的扩展卡冲突,该卡提供了6个可选的上位内存地址,用J1~J3设定,相对应的地址范围见^50030201b^表2,默认的上位内存范围为C8000-C87FF,因此,启动机器时,要启动内存管理程序HIMEM.SYS和EMM386.EXE。由于该内置编程卡只是一个简单的8bit ISA插卡,没有后挡板。为了防止该卡插错方向导致烧毁主板或自身,在卡上标注有正确的安装方向,按箭头指示将卡正确插入主板上任一ISA插槽,设定好I/O地址口和占据的上位地址范围,即完成了硬件安装。   由于现在主板上的EPROM芯片用得已经比较少了,因此,该编程器不支持EPROM,只支持EEPROM芯片。目前主板上常用的EEPROM芯片主要有三类,一类是以Intel的28系列部分芯片和Winbond的29E系列芯片为代表的分块式的EEPROM,其BOOT BLOCK必须VPP=12V、PR#=12V才能编程,从而有效保护BIOS启动区(如果这块信息没丢失,则有的机子升级失败后用ISA显卡仍能显示);第二类是工业上常用的以Intel为代表的另一类28F系列的芯片,该系列芯片的第1脚要加VPP(+12V)编程电压才能写片。由此可见,以上两类EEPROM芯片是双电压设计的,它可以在+5V的电压下正常读取,但写入时必须提供+12V的电压;第三类是单电压的EEPROM芯片,即我们所称的FLASH ROM芯片,这类芯片为单电压设计芯片,读写都是在单电压下进行的。因此,为了兼容不同类型的芯片,该卡上还有一个跳线,用以设定芯片的编程电压(如28F020需12V的编程电压,29C020则不需要)。   对芯片进行编程时,需要把计算机关闭,把需要编程的芯片插入编程卡上的DIP插座内。插入时要注意ROM芯片的一端有一个半圆形的凹口,在插入ROM芯片时,必须保证这个凹口方向和编程卡上标注的凹口方向一致,否则会导致芯片损坏。另外,还要根据芯片的类型设置好编程电压,才能通电。   编程卡是在程序的控制下对芯片进行操作的,为此,随卡提供了一个ctflash编程操作软件,现在用的是1.6版本,该软件是用在DOS状态下运行的,其格式为:   CTFLASH I/O R/W Filename   其中参数的含义如下:I/O为卡上设定的I/O地址,用16进制表示,默认的地址口为340h,R/W参数用来设定是读入数据(R)还是写入数据(W),Filename参数是要写入或保存的文件名,要注意的是,CTFLASH只能识别二进制格式的文件,文件的扩展名为Bin,对于Intel的Hex格式或Motorola的Hex-S格式的文件,需要用相应的转换软件转换才能被程序识别。最后一个参数是用来设定软件运行方式的,E参数是用命令行方式,N参数是采用菜单方式。   如:我们敲入命令:CTFLASH 340 R C:\BIOS.BIN/E,意思是把编程卡上的ROM中的数据读出来,读出的数据保存在C:盘下的BIOS.BIN文件中,设定的I/O口为340h。   CTFLASH软件是自动识别芯片类型的,^50030201c^表3是1.6版本的CTFLASH支持的芯片的种类。如果软件不能正常运行,说明该芯片的类型程序不能被自动识别出来,这时需要加上/M参数,就可以从程序列出的名单中,选择相兼容的芯片,以确保读写操作正常进行。如在菜单中找不到同公司、同型号选项,也可用其它公司同型号的产品代替,但型号必须完全相同,否则也可能性烧毁芯片。选定ROM型号后,在屏幕上会出现该ROM的一些基本数据。如果刚才选择ROM芯片的类型正确,编程器此时就会把该ROM的数据读入电脑的内存中。   当芯片中的数据受损后,我们可以敲入命令:CTFLASH 340 W C:\BIOS.BIN,把保存在C:盘下的BIOS.BIN写入芯片中,从而方便地修复芯片。当然我们也可以直接把从网上下载的升级文件直接写入到芯片中,因为下载的扩展名为Bin升级文件,其格式就是二进制格式的。   C′t-Flasher编程卡对系统的要求相当低,我曾把它用在一台286机器上,也可以很好地运行,只是速度稍慢。当然,该编程卡只是一块初级的编程卡,由于价格方面的原因,它有许多缺陷,如:必须在纯DOS界面下操作,操作界面不直观;尽管支持的芯片类型囊括了常见的ROM芯片类型,但仍可能不支持新出的ROM型号(升级操作软件可以解决这个问题);芯片的插拔不方便,要拔下芯片时,需要用专用工具,换用无插拔力的ZIP插座比较好。尽管有以上种种使用不便,但一块只有百元左右的编程卡,我们还能对它要求什么呢?对于经常升级BIOS的用户而言,它还有具有一定的吸收力的。   对于PLCC封装的四方ROM芯片,无法直接在该卡上使用,但我们可以利用一个PLCC-DIP转换插座,通过该转换插座对PLCC封装的芯片操作。关于C′t-Flasher卡的更详细的信息,我把它放在“BIOS专页”上,感兴趣的朋友可以访问bios.533.net。