找回密码
 注册
快捷导航
查看: 10092|回复: 51

【理论分析】关于笔记本电脑PII升级PIII所有问题的讨论(巨长,更新中)

[复制链接] |自动提醒
阅读字号:

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
发表于 2004-7-20 20:50:11| 字数 750| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层 |阅读模式
本人的升级经历:http://www.ibmnb.com/viewthread.php?tid=131849&fpage=1
首先说明一下升级后出现的问题。
Dell Latitude Cpi A366XT升级后出现的问题:
1.        Cpu 微代码升级错误。
2.        存在不正常的声响。
3.Linux下运行效率低下,这个应该与2有关。因为Windows2000/XP在加载的第二阶段不正常声音会消失,而Linux则一直存在。

参考IBM 600E升级后出现的问题:
1.        127报错。
2.        不能光驱启动。
3.        L2 cache 消失。

        如果升级为PIII speedstep,上述两种机型都会遇到降频的问题。

其次,需要的软件工具:
1)        IDA
2)        ULTRA EDIT
3)        W32DASM
  这几种工具最好配合使用,当然,还免不了要自己用C编写一些程序。
必须参考的文献:
1)IA-32 Intel Architecture Software Developer’s Manual
Volume 3: System Programming Guide
CHAPTER 9  PROCESSOR MANAGEMENT AND INITIALIZATION
9.3. CACHE ENABLING
9.4. MODEL-SPECIFIC REGISTERS (MSRS)
9.11. MICROCODE UPDATE FACILITIES
CHAPTER 10 MEMORY CACHE CONTROL

APPENDIX B MODEL-SPECIFIC REGISTERS (MSRS)
B.3. MSRS IN THE P6 FAMILY PROCESSORS
2)Intel Processor Identification and the CPUID Instruction

[ Last edited by liufes on 2004-7-21 at 10:17 ]

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-20 20:50:50| 字数 373| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
预备知识:汇编指令集。
        特别注意:CPUID,RDMSR,WRMSR。
        上述的三条指令是解决问题的关键。下面我简要介绍一下它们的功能:
1.        CPUID
汇编代码:0F A2
由于x86系列的CPU是通用的,向下兼容,那么如何来识别不同系列的CPU呢?
486之前采用的方法是在CPU复位后在其内部寄存器EDX中存放CPU的识别代码,显然,如果我们对EDX赋值后,其内的信息就丢掉了,只能在刚上电的时候使用一次。
为了在任何时间都能够识别CPU,从后期的486开始,提供了指令CPUID,利用它就可以随时获得CPU的型号,缓存容量,支持的指令集等信息。
2.        RDMSR
汇编代码:0F 32
读出MSR信息。MSR用来读出CPU的特征信息(如主频)或用来配置CPU特性(如缓存容量)。
3.        WRMSR
汇编代码:0F 30
写入MSR信息。

关于MSR的详细信息请查询文献1附录B。
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-20 20:52:23| 字数 934| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
(I)先分析一下微码报错的问题

        我们知道,CPU都属于超大规模集成电路,在设计上难免出现Bug,这些Bug要靠BIOS来修正,具体过程见文献1第九章。
        上述机型中PII升级为PIII,虽然可以正常使用,但或多或少总会出现一些报错信息,十分烦人。由于BIOS不是针对PIII推出的,不可能获得官方的升级支持。解决上述问题的唯一方法是研究BIOS的代码。而BIOS全部是汇编代码,512KB的代码打印出来接近3000页,所幸的是,由于问题仅仅是升级CPU引起的, 我们可以仅仅关心其CPU部分代码。这部分的代码就短多了,只有10多页,在我们的处理范围之内。

        因为笔记本都不提供备份BIOS的软件工具,我们必须用编程器读出代码。当然,我们也可以分析升级BIOS的可执行文件,但这个就显得太麻烦了。下面以我自己的本本为例,讲述一下分析的全过程。具体的读取BIOS文件的过程我就不介绍了,凡是用过编程器的人都懂得的操作,不会操作的人也没有必要买编程器。
        此BIOS容量为512KB。二进制地址为0 0000-7 FFFFH。其真正地址为(FFF)8 0000-F FFFFH,即存在(FFF)8 0000H的偏移量。我们忽略地址中的前三个F,即括号中的,这个对于分析问题没有关系。如果下面的代码中出现了小于8 0000H的地址,请自行加入8 0000H的偏移量。我们知道,CPU上电后,会从地址(FFF)F FFF0H处取指令执行,它一般是一条跳转指令,跳到真正的开始代码处。为了便于阅读,我对程序作了初步处理,加上了标号。最先开始执行的程序如下:
ORG 0FFFF0H
    JMP START
ORG 0FC000H
    DB "Dell System Latitude CPi A"
    DB 6 DUP(0)
    DB "A15"
    DB 88H
ORG 0FC030H
    CONFADD     EQU 0CF8h
    CONFDATA    EQU 0CFCh
START:          cli
                cld
                shl     edx, 10h
                mov     dx, CONFADD
                mov     eax, 80000078h  ;CFGE=1,BUS No.=0,DEVICE No.=0,FUNCTION No.=0,REGISTER No.=1Eh
                out     dx, eax
                mov     dx, 0CFEh
                in      al, dx
。。。 。。。
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-20 20:53:04| 字数 454| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
开头的代码是配置南北桥芯片内的各个寄存器,与我们的工作无关,继续向下搜索(使用CPUID 的二进制代码 0F A2),第一处停在了如下位置:
A004:           mov     eax, 1
                cpuid
                mov     si, 9000h
                mov     cx,cs:[si]        ;  cs:si=F9000H,cs:[si]=0001
                add     si, 2
A101:           cmp     ax, cs:[si]
                jz      A100                ;Is PII ,STEPPING 0AH.
                add     si, 4
                loop    A101               
                jmp     A102            
A100:           xor     eax, eax
                xor     ebx, ebx
                mov     ax, cs
                shl     eax, 4
                mov     bx, cs:[si+2]
                add     eax, ebx        ;[EAX]=000F9006H
                xor     edx, edx
                mov     ecx, 79h        ;IA32_BIOS_UPDT_TRIG
                wrmsr
A102:           jmp     sp     
       
这正是我们关心的信息。
        其中,前两条指令是获取CPU的信息。

        对于我升级之前的CPU,型号为PII 366,Type=0,Family=6,Model=6,Stepping=10。指令执行后EAX的返回值为0000 066AH。
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-20 20:53:44| 字数 1,145| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
接下来的指令就是设置CPU微代码的偏移地址(即起始位置),cs:si=F9000H,让我们来看一下这个位置有什么:
ORG 0F9000H
    DB 01,00                   ;SUPPORT CPU TYPES
    DB 6A,06        ;CPU:FAMILY 6,MODEL 6,STEPING A.
    DB 06,90        ;PROCESSOR MICROCODE UPDATA DATA START AT 0F9006H
    ;PROCESSOR MICROCODE UPDATA DATA (2000D BYTE)
    ;START AT 0F9006H,END AT 0F90805H
DB 8C,0B5,8C,0F9,9B,4C,0E3,0F8,5C,58
;。。。
        ;其余省略

        很明显,前两个字节(第一个字)代表能够支持CPU的种类数目,它的默认值是1,(注意:存储是按照小端存储的,即01,00实际代表的是0001)只能支持一种CPU,这里说的CPU是具体到制程的,比如说PII steping 5和10被认为是两种CPU,因为不同的制程有不同的Bug,需要不同的微代码,这个模糊不得。
        第二个字代表支持的CPU的代码,果然,他的值为066AH,跟原先的PII 的代码相同!当CPIUID读出的CPU代码等于066AH时,则执行下面的CPU微代码升级,否则,退出。
        第三个字代表此种CPU微代码的偏移地址。
        让我们继续分析指令:
          add     eax, ebx        ;[EAX]=000F9006H
          xor     edx, edx
               mov     ecx, 79h        ;IA32_BIOS_UPDT_TRIG
          wrmsr
        这几条指令的作用当然就是写入微代码了。微代码的起始位置在EAX中存放,即000F 9006H。EDX中的值要求为零。

        我们的目的是手动添加对PIII的支持,我手上的这块PIII的制程是3,即其CPUID代码为0683H。我们可以对F 9000-FBFFFH(共12K) 的CPU微代码数据区做如下修改:(此空间的大部分是空的,每个微代码块的大小为2K(可以舍弃其头部的48字节的描述信息),则至多可以支持6种不同种类和制程的CPU)
ORG F9000H
        DB 02,00
        DB 6A,06
        DB 30,90
        DB 83,06
        DB 30,98
ORG F9030H
;PII MICROPROCESSOR MICROCODE UPDATE CODE,2000Bytes
;FAMILY 6,MODEL 6,STEPPING A
ORG F9830H
; PIII MICROPROCESSOR MICROCODE UPDATE CODE,2000Bytes
;FAMILY 6,MODEL 8,STEPPING 3

按照上面的分析,编写一段程序将上述代码写入原来的BIOS文件中,最后用编程器将得到的文件写BOIS芯片中,运行成功!

[ Last edited by liufes on 2004-7-21 at 09:57 ]
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-20 20:54:20| 字数 2,667| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
不再出现报错界面,然而那烦人的声音仍然存在。让我们继续向下分析。
Dell Latitude 会报Processor Microcode Update Failure错误,它是怎么实现的呢?
原来,CPU还提供了检测微代码是否升级成功的功能,我们继续向下搜索,找到其位置如下,从7CCC9H开始是检测升级是否成功的功能。

0000:7CCAF                 mov     al, 0E9h
0000:7CCB1                 out     70h, al         ; CMOS Memory:
0000:7CCB3                 xor     al, al
0000:7CCB5                 out     71h, al    ; CMOS Memory: used by real-time clock
0000:7CCB7                 mov     al, 0F8h
0000:7CCB9                 out     70h, al         ; CMOS Memory:
0000:7CCBB                 in      al, 71h         ; CMOS Memory
0000:7CCBD                 and     al, 70h
0000:7CCBF                 mov     ah, al
0000:7CCC1                 mov     al, 0F8h
0000:7CCC3                 out     70h, al         ; CMOS Memory:
0000:7CCC5                 mov     al, ah
0000:7CCC7                 out     71h, al    ; CMOS Memory: used by real-time clock
0000:7CCC9                 xor     eax, eax
0000:7CCCC                 xor     edx, edx
0000:7CCCF                 mov     ecx, 8Bh         ;IA32_BIOS_SIGN_ID
0000:7CCD5                 wrmsr
0000:7CCD7                 mov     eax, 1
0000:7CCDD                 cpuid
0000:7CCDF                 mov     ecx, 8Bh
0000:7CCE5                 rdmsr
0000:7CCE7                 mov     ax, dx
0000:7CCE9                 or      ax, ax
0000:7CCEB                 jnz     loc_CCF7
0000:7CCED                 mov     al, 0E9h
0000:7CCEF                 out     70h, al         ; CMOS Memory:
0000:7CCF1                 in      al, 71h         ; CMOS Memory
0000:7CCF3                 or      al, 10h
0000:7CCF5                 out     71h, al    ; CMOS Memory: used by real-time clock
0000:7CCF7                 mov     al, 0
0000:7CCF9                 out     0Dh, al     ; DMA controller, 8237A-5. master clear.
0000:7CCF9                            ; Any OUT clears the ctrlr (must be re-initialized)
0000:7CCFB                 out     0DAh, al
0000:7CCFD                 out     8, al           ; DMA 8237A-5. cmd reg bits:
0000:7CCFD                                         ; 0: enable mem-to-mem DMA
0000:7CCFD                                         ; 1: enable Ch0 address hold
0000:7CCFD                                         ; 2: disable controller
0000:7CCFD                                         ; 3: compressed timing mode
0000:7CCFD                                         ; 4: enable rotating priority
0000:7CCFD                                     ; 5: extended write mode; 0=late write
0000:7CCFD                                         ; 6: DRQ sensing - active high
0000:7CCFD                                         ; 7: DACK sensing - active high
0000:7CCFF                 out     0D0h, al
0000:7CD01                 mov     al, 0Ch
0000:7CD03                 out     61h, al         ; PC/XT PPI port B bits:
0000:7CD03                             ; 0: Tmr 2 gate to spkr enable. OR 03H=spkr ON
0000:7CD03                                  ; 1: spkr enable.  AND 0fcH=spkr OFF
0000:7CD03                                  ; 3: 1=read high switches
0000:7CD03                                  ; 4: 0=enable RAM parity checking
0000:7CD03                                  ; 5: 0=enable I/O channel check
0000:7CD03                                  ; 6: 0=hold keyboard clock low
0000:7CD03                                  ; 7: 0=enable kbrd
0000:7CD05                 mov     al, 0
0000:7CD07                 out     8Fh, al      ; DMA page register 74LS612: refresh
0000:7CD09                 mov     al, 54h
0000:7CD0B                 out     43h, al      ; Timer 8253-5 (AT: 8254.2).
0000:7CD0D                 mov     al, 12h
0000:7CD0F                 out     41h, al      ; Timer 8253-5 (AT: 8254.2).
0000:7CD11                 lgdt    qword ptr cs:loc_CDF7+1
0000:7CD18                 lidt    qword ptr cs:loc_CDFD+1
0000:7CD1F                 mov     eax, cr0
0000:7CD22                 or      al, 1
0000:7CD24                 mov     cr0, eax
0000:7CD27                 jmp     far ptr 8:0CD2Ch

        我简要解释一下,详细过程可以参考上述文献1)的第9章和附录B。
               xor     eax, eax
               xor     edx, edx
                mov     ecx, 8Bh         ;IA32_BIOS_SIGN_ID
               wrmsr
               mov     eax, 1
               cpuid
               mov     ecx, 8Bh
                rdmsr
        如果升级成功,则EDX中的数值为非0,0表示升级失败。
               mov     ax, dx
                or      ax, ax
                jnz     loc_CCF7
如果升级成功,则直接跳到FCCF7H处。跳过的代码有:
                                  mov     al, 0E9h
                 out     70h, al         ; CMOS Memory:
                in      al, 71h         ; CMOS Memory
                or      al, 10h
            out     71h, al
据此,我们可以猜想IO地址70H和71H存放着与微码相关的信息。
然而,IBM PC AT/XT对地址70H和71H是这样定义的:
70H:CMOS RAM Address port and NMI Mask
        Bit 7: NMI Mask.1-disable
        Bit [0-6]: CMOS RAM Address.
71H: RTC CMOS RAM date port.

0000:7CD01                 mov     al, 0Ch
0000:7CD03                 out     61h, al         ; PC/XT PPI port B bits:
这两句是我们特别关心的,因为它与声音的设置有关。我们可以搜索out     61h, al的二进制代码E661来确定对声音的操作。对地址61H前两位(bit)的操作属于对声音的操作。
这里的设置是将声音关掉。出现了不正常声响,肯定有某处不小心打开了声音。我们继续搜索类似的语句。查询的结果共有22处,其中,处在0FC000H-0FFFFFH的共有两处。另外一处位于0FD5AEH。
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-20 20:54:59| 字数 1,247| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
最后,我的注意力集中在了从地址0FF260H开始到0FF8C2H的代码段中,它由12个CALL组成,其中第一个CALL是主程序,被其他段中的代码调用,其余的11个CALL直接或间接被第一个CALL调用。它们的作用就是配置CPU及其CACHE等。
        特别提示:Cache的配置必须在CPU微代码升级完成后才可以进行。

让我们先来看第一个CALL:
;CALL No.1
C000:           pushad
                xor     eax, eax
                cpuid
                cmp     ebx, 756E6547h      ;
                jnz     C001                    ;ERROR OCCUR(C=1)
                cmp     edx, 49656E69h      ;
                jnz     C001
                cmp     ecx, 6C65746Eh      ;"GenuineIntel"
                jnz     C001
                mov     eax, 1
cpuid                   ;[AX]=066AH,PII;[AX]=0683H,PIII
                and     ax,0FFF0H                ;[AX]=0660H,PII;[AX]=0680H,PIII        
                test    ax, 1000h
                jnz     C002                ;JMP IF PROCESSOR TYPE IS NOT 0(OEM)
                cmp     ax, 630h
                jl      C002                ;JMP IF PROCESSOR LOWER THAN PENTIUM II,model 3;ERROR(C=0)
                mov     bx, ax              ;[BX]=0660H(PII) OR 0680H(PIII)
                mov     ecx, 11Eh           ;BBL_CR_CTL3 *****
                rdmsr
                and     eax, 800000h
                jnz     C002
                cmp     bx, 680h
                jl      C003                ;JMP IF PROCESSOR IS PIII
                mov     eax, 2
                cpuid
                mov     ah, dl
                mov     al, 0E6h
                out     70h, al         ; CMOS Memory:
                mov     al, ah
                out     71h, al    ; CMOS Memory:used by real-time clock
                jmp     C002
C003:           cmp     bx, 630h
                jg      C004
。。。 。。。(略去的语句不会被执行)
C004:           mov     ecx, 2Ah
                rdmsr
                and     eax, 3C00000h
                cmp     eax, 0C00000h
                jz      C001
                cmp     eax, 3000000h
                jz      C001
                mov     ecx, 11Eh
                rdmsr
                and     eax, 0FF88061Eh
                or      eax, 40000h
                wrmsr
                mov     bl, al
                call    C044                ;CALL No.7
                jb      C001
                mov     ecx, 11Eh
                rdmsr
                mov     bh, al
                mov     al, bl
                wrmsr
。。。 。。。
C002:           clc                         ;ERROR (C=0)
                jmp     C013
C001:           stc                         ;ERROR OCCUR(C=1)
C013:           popad
                retn

中间略去了一部分,其中,下面的段是我们关心的:
                cmp     bx, 680h
                jl      C003                ;JMP IF PROCESSOR IS PII
                mov     eax, 2
                cpuid
                mov     ah, dl
                mov     al, 0E6h
                out     70h, al         ; CMOS Memory:
                mov     al, ah
                out     71h, al    ; CMOS Memory:used by real-time clock
                jmp     C002
C003:           cmp     bx, 630h
。。。 。。。
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-20 20:55:58| 字数 499| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
cmp     bx, 680h和jl      C003的运行结果就是,如果CPU是PII,则跳到标号为C003的语句执行,如果是PIII,则继续执行下一句。
        mov     eax, 2和cpuid返回CACHE的信息。其中,[DL]=40H,代表无二级缓存或在存在二级缓存的情况下,无三级缓存。然后向IO地址70H和71H分别写入E6h和40H,结合前面关于这两个地址的操作,我们可以确认这两个地址存放的是出错信息。
        如果是PIII,我们可以看到,它直接跳到了COO2处,然后调用就返回了,有大量的配置选项并没有进行。
        如果我们把上述第二句程序jl   C003修改为jle  C003,即二进制代码由7C15修改为7E15,则强制PIII执行与PII相同的操作。由于这一部分还牵涉到CACHE的配置,而PII和PIII的Cache并非完全相同:L2 CACHE 对PII来说是4路相联的,对PIII来说是8路相联的。其余的则完全相同。如下所示:
PII:

PIII:

        所以,我们还必须要对CACHE的配置进行微调。
        下面是没有调节后的运行结果,发生CACHE配置错误,只能关机。

[ Last edited by liufes on 2004-7-21 at 10:00 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-20 20:56:52| 字数 404| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
最后,让我们整理一下思路。
        第一步,我们通过CPU上电后默认执行的语句确定程序跳转的入口0FC030H。
        第二步,确定微代码的位置在0F9000H--0FBFFFH。
        第三步,通过分析源程序和使用Ultra Edit扫描,划分出0FC030H—0FFFEFH范围内的数据段,有0FCDC1H—0FD1E9H和0FEEC9H—0FF25FH。同时,程序段0FC030H—0FFFEFH被分成三个区域,分别称之为区域A、B、C。
区域A:0FC030H—0FCDC0H
        主要是配置IO等外围,同时作为主程序,调用区域B和C的代码。
        完成工作后,程序通过长跳转跳到其他位置运行。
区域B:0FC1E9H—0FEEC9H
        本区域代码最长,且非常混乱。与区域A存在交叉引用。
正在分析中。。。
区域C:0FF260H—0FF8C2H
        本区域由12个CALL组成,被区域A调用。作用是配置CPU及其片上设备。

第四步,剩下的工作就是分析源代码了。
回复 支持 反对

使用道具 举报

5473

回帖

38

积分

5893

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2003-3-30
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)银牌荣誉勋章(注册10年以上会员)金牌荣誉勋章(注册20年以上会员)
发表于 2004-7-20 21:03:59| 字数 9| - 中国–重庆–重庆–大渡口区 电信 | 显示全部楼层
有点天书的味道;)
星星是穷人的钻石!
T20 PIII700/384M/5K80 40G/DVD/14"/端口复制器I
回复 支持 反对

使用道具 举报

786

回帖

0

积分

4863

资产值

入门会员 Rank: 1

注册时间
2004-5-30
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2004-7-20 21:30:24| 字数 29| - 中国–吉林–四平 联通 | 显示全部楼层
我等白痴只能默默祝愿老大早日能把问题解决,好造福我等贫民。
最爱数码
回复 支持 反对

使用道具 举报

586

回帖

16

积分

2070

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-16
发表于 2004-7-20 23:12:50| 字数 10| - 中国–北京–北京–丰台区 联通/西城区联通 | 显示全部楼层
太牛了.楼主真是牛人
R400
回复 支持 反对

使用道具 举报

639

回帖

0

积分

1571

资产值

入门会员 Rank: 1

注册时间
2003-11-6
铜牌荣誉勋章(注册8年以上会员)
发表于 2004-7-20 23:20:48| 字数 39| - 中国–江苏–无锡–宜兴市 电信 | 显示全部楼层
偶承认偶没看完,偶只想要简单的结果就行,这些还是给N人XD来参考讨论吧,呵呵。
TP600E 366  288M 5K80 40G,MM的,呵呵。T20 84U 700 384M 80GN 30G,看上的联系我
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-21 10:15:47| 字数 180| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
QUOTE:
Originally posted by zhxp at 2004-7-20 23:20:
偶承认偶没看完,偶只想要简单的结果就行,这些还是给N人XD来参考讨论吧,呵呵。


我已经尽可能作了注释,算是抛砖引玉吧。
希望大家能看完,能提出问题。

自我准备从Bios代码解决问题至今也不过20天而已,相信只要有耐心。
理解上述的过程并不困难。

更复杂的代码我正在研究,稍后奉上。
回复 支持 反对

使用道具 举报

2778

回帖

1

积分

2819

资产值

初级会员 Rank: 1

注册时间
2003-11-1
铜牌荣誉勋章(注册8年以上会员)
发表于 2004-7-21 10:43:17| 字数 42| - 中国–北京–北京–东城区 联通 | 显示全部楼层
非常好!虽然我不是做软件的,无法理解编程语言。要想从根本上解决问题,软件还是最关键。
生活充满激情
欢迎访问我的博客
回复 支持 反对

使用道具 举报

1287

回帖

3

积分

3574

资产值

初级会员 Rank: 1

注册时间
2003-2-21
铜牌荣誉勋章(注册8年以上会员)
发表于 2004-7-21 10:59:01| 字数 30| - 中国–广东–广州–天河区 电信 | 显示全部楼层
支持一下
不知ibm、dell等厂商看了楼主的大作后有何感想了
thinkpad 3093w95 with 93r878
4323cto
26724b7全新 263953h全新全套 266295u'
transnote 267561u
回复 支持 反对

使用道具 举报

209

回帖

0

积分

155

资产值

入门会员 Rank: 1

注册时间
2004-3-4
发表于 2004-7-21 11:30:48| 字数 31| - 中国–湖北–黄冈 电信 | 显示全部楼层

事情做到这个层次上,没什么难题解决不了的!

辛苦你一人,幸福千万人啊!
楼主,我佩服你!

对汇编这么熟悉。。。
回复 支持 反对

使用道具 举报

209

回帖

0

积分

155

资产值

入门会员 Rank: 1

注册时间
2004-3-4
发表于 2004-7-21 11:32:38| 字数 7| - 中国–湖北–黄冈 电信 | 显示全部楼层

提醒斑竹一下:这样的文章是要加分的!

好像是原创啊!
回复 支持 反对

使用道具 举报

2193

回帖

12

积分

3356

资产值

高级会员 Rank: 2Rank: 2

注册时间
2003-9-28
铜牌荣誉勋章(注册8年以上会员)
发表于 2004-7-21 12:30:54| 字数 25| - 中国–江苏–南京 联通 | 显示全部楼层
期待楼主把600e的bios解析出来,支持!!!!
南京,人.车.科技.简单生活 LED背光 极速捕风博客   
回复 支持 反对

使用道具 举报

781

回帖

1

积分

1591

资产值

禁止访问

注册时间
2004-2-10
发表于 2004-7-21 14:51:20| 字数 46| - 中国–福建–厦门 移动随E行 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

2095

回帖

15

积分

3757

资产值

高级会员 Rank: 2Rank: 2

注册时间
2004-2-10
发表于 2004-7-21 15:22:22| 字数 66| - 中国–广东–深圳 中移铁通/富士康科技集团 | 显示全部楼层
600E的BIOS有點怪怪的, 下面的特征碼
  mov     ecx, 11Eh

竟然沒找到, 可能在另一個壓縮區域, 跟起?硖貏e煩

最近精力越增越不??

性价比高的东西都是破东西

回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-21 16:55:22| 字数 49| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
不知茄子兄弟用的什么方法跟踪?
BIOS中的代码只有最开始执行的一段没有加密,到后来就是一堆乱码了。
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-21 16:57:26| 字数 41| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
有人愿意贡献600E的bios源代码么?
用编程器读出来得
这样研究代码就会轻松的多。
回复 支持 反对

使用道具 举报

166

回帖

0

积分

272

资产值

入门会员 Rank: 1

注册时间
2004-6-25
 楼主| 发表于 2004-7-21 17:06:53| 字数 200| - 中国–北京–北京 中国科学院研究生院 | 显示全部楼层
突然有一个想法,既然区域C是集中处理与cpu相关的信息的,并且对外只有一个程序接口,那么,如果我们能够读出PIII speedstep级别本本的电脑,如Dell Latitude CPt S/CPx J的Bios,CPt C /CPi R的也可以。应该在相同的位置有类似的代码,直接提取过来,更换即可。由于区域C后面有一片空白,所以即使加入稍长一些的代码也没有关系。
这种方法有可能一举解决PIII只能降频使用的问题。
回复 支持 反对

使用道具 举报

2193

回帖

12

积分

3356

资产值

高级会员 Rank: 2Rank: 2

注册时间
2003-9-28
铜牌荣誉勋章(注册8年以上会员)
发表于 2004-7-21 20:16:25| 字数 103| - 中国–江苏–南京 联通 | 显示全部楼层
600系列的bios,包括600e和600x,其bios的bin文件都可以在ibm网站直接下载得到,这里我先上一个600e的,希望能有所帮助,这个文件就是制作bios升级floopy的时候其中包含的那个文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
南京,人.车.科技.简单生活 LED背光 极速捕风博客   
回复 支持 反对

使用道具 举报

2095

回帖

15

积分

3757

资产值

高级会员 Rank: 2Rank: 2

注册时间
2004-2-10
发表于 2004-7-21 20:46:34| 字数 173| - 中国–广东–深圳 中移铁通/富士康科技集团 | 显示全部楼层
QUOTE:
Originally posted by liufes at 2004-7-21 04:55 PM:
不知茄子兄弟用的什么方法跟踪?
BIOS中的代码只有最开始执行的一段没有加密,到后来就是一堆乱码了。


哈哈, 不是加密, 是壓縮, 不是開始執行的一段, 是一個BLOCK, 叫BOOT BLOCK

[ Last edited by 茄子 on 2004-7-21 at 22:51 ]

性价比高的东西都是破东西

回复 支持 反对

使用道具 举报

36

回帖

0

积分

63

资产值

禁止访问

注册时间
2003-5-12
铜牌荣誉勋章(注册8年以上会员)
发表于 2004-7-21 21:00:12| 字数 17| - 中国–山东–济南 广电网 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

1万

回帖

6

积分

2万

资产值

中级会员 Rank: 2Rank: 2

注册时间
2003-10-5
铜牌荣誉勋章(注册8年以上会员)
发表于 2004-7-21 21:20:40| 字数 6| - 中国–安徽–合肥 电信/中国科学技术大学 | 显示全部楼层
楼主继续努力
A31没有p,P4M-2.4G,2048M,SXGA+,5k80 (80G+60G),pcpopDVD+RW(MSI),¥1 combo,Razer2100+IE3+MX500+3S,2631+1020 =USTC-0108=
回复 支持 反对

使用道具 举报

1367

回帖

0

积分

2448

资产值

入门会员 Rank: 1

注册时间
2004-2-20
发表于 2004-7-21 22:24:15| 字数 13| - 中国–江西–萍乡 电信 | 显示全部楼层
最好能发现怎么改能超频呵呵
LTL THINKPAD600(2645-45U) P2-300 40G(5K80)  288M WIN XP+SP2
回复 支持 反对

使用道具 举报

5903

回帖

62

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-1-15
银牌荣誉勋章(注册10年以上会员)
发表于 2004-7-22 00:45:10| 字数 35| - 中国–湖北–潜江 电信 | 显示全部楼层
完全看不懂......以前学汇编完全是为了应付考试...
惭愧.....
T23....
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2024-12-1 11:54 , Processed in 0.241583 second(s), 69 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|联系我们|专门网

返回顶部