網頁

星期三, 1月 21, 2009

老程式也有它的好處

大家都知道debug.com的用法,不過他還有一個應用的方式是我經常使用的!
剛好前陣子公司同事也有分享這個用法,所以就順便把他在做個簡單的介紹。

老程式Debug.com 有支援輸入/輸出導向,也就是以前DOS下的 ">" 跟"<" 符號所做的事情, 而他的用法很簡單,你只要在一個文字檔中先寫好你要做的事情,然後導入到Debug.com中 就可以了,而Debug.com就會依照你的文字檔的動作去做事情! 例如原本你使用debug.com時你做了下面的動作 -d
-q

那麼你就可以寫成一個Test.txt,然後裡面的內容是:
d
q

接著進入DOS Cmd prompt ,導入這個文字檔給debug.com 例如:
C:\> debug < test.txt

這樣子debug就會自動幫你執行d指令,還有q 離開debug.com.

而下面是一個Dump PIRQ的批次檔,我會自己去F Segment內找到'$PIR' 的位址,然後透過D指令去Dump 這個記憶體,接著把Dump的內容寫到一個檔案中:

@ECHO OFF
REM ============= Find PIRQ ===================
ECHO. s f000:0 ffff '$PIR' > FindPIRQ.txt
ECHO. q >> FindPIRQ.txt
debug <> PIRQAddr.txt

REM ============= Set variable ===================
FOR /F %%A in ('FINDSTR /C:"F000" PIRQAddr.txt') do SET FSEG=%%A

REM ============= Dump PIRQ ===================
ECHO. d %FSEG% > DumpPIRQ.txt
ECHO. d >> DumpPIRQ.txt
ECHO. d >> DumpPIRQ.txt
ECHO. d >> DumpPIRQ.txt
ECHO. d >> DumpPIRQ.txt
ECHO. q >> DumpPIRQ.txt

debug <> Pirq.txt

ECHO.
ECHO. Output: PIRQ.txt
ECHO.

DEL FindPIRQ.txt
DEL PIRQAddr.txt
DEL DumpPIRQ.txt
pause


底下是我產生的文字檔內的內容:
- d F000:DE80

F000:DE80 24 50 49 52 00 01 60 01-FF FF 00 00 86 80 2E 12 $PIR..`.........
F000:DE90 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
F000:DEA0 00 00 00 F8 DE 00 F8 DE-00 F8 DE 00 F8 DE 00 00 ................
F000:DEB0 00 38 60 E0 1C 00 F8 DE-00 F8 DE 00 F8 DE 00 00 .8`.............
F000:DEC0 00 08 60 E0 1C 00 F8 DE-00 F8 DE 00 F8 DE 00 00 ..`.............

8 則留言:

  1. 你好,
    謝謝你的分享
    想請問一個問題
    我試過後面要用debug輸出檔案都會出現error
    可否幫忙解惑一下
    thank!

    ex:
    debug < 1.txt

    1.txt:
    d >> 2.txt
    q

    回覆刪除
  2. 這個方式其實就是模擬你在debug.com按了哪些按鍵,所以我的範例內只有在debug.com內按了一下d 然後按enter ,接著按q按enter,所以你在1.txt中只要輸入d按enter ,然後q按enter.

    所以1.txt內容應該如下:
    d
    q

    然後你在導入到debug.com就可以了
    而如果你在debug.com內輸入 d >> 2.txt 一定是不合法的,因為這不是debug.com的指令.

    ex1合法:
    -d
    -q

    ex2不合法:
    -d >> 2.txt
    -q

    這樣子應該可以比較清楚用法:)

    回覆刪除
  3. 您好,小华。
    本人是一名初学者。有些问题需要请教您。
    EC上有四根引脚功能不清楚,能否指点?
    查看该EC电路图,有四根外部引脚(分别为FAB_REV_ID0,FAB_REV_ID1,FAB_REV_ID2,FAB_REV_ID3)连接到EC芯片的4根GPIO上。本人对这些引脚的功能不清楚,有劳高手给与指点。

    回覆刪除
  4. hello, XiaoHua,
    I am also a bios engineer,I didn't find your msn,Could you add my : xianiannian@hotmail.com

    回覆刪除
  5. 你好:
    我是一名BIOS爱好者,我有一个问题
    请教一下。
    在检查DIMM上的内存条时,是否可通过
    SMBus总线,读取SPD信息来判断有无。另外SMBus中command code为什么没有给出,
    真是困惑。

    回覆刪除
  6. 你好看到你提到操作SPI FLASH后,想问个问题呢,我现在是设置ICH10 的OPMENU里设置咯访问FLASH的操作码,当然OPTYPE也对应设置,在OPERA中放入咯使能写操作码,然后就是设置SSFC—Software Sequencing Flash Control Register来控制指令发

    当我在使用块擦除FLASH时只能擦BLOCK 0 其他BLOCK都檫不成功,但用FLASH的全擦指令是能把整个FLASH檫掉咯

    还有写指令只能写BLOCK的前面一部分,后面部分写不成功



    是我考虑的ICH里的寄存器里少设置咯吗,还是什么原因出现这种情况的如果你感觉不方便在这里回答,麻烦给我发个EMAIL:
    binghuo70@126.com麻烦大侠咯

    回覆刪除
  7. 华哥:我这边有个问题,公司主板采用AT电源,现在要求ACPI模式下关机时能像APM模式下关机那样提示“您可以安全地关机了”!可否帮忙解惑一下!

    回覆刪除
  8. 可憐的華哥,一下子被問這麼多問題,估計頭都大了...

    回覆刪除