討論區快速選單
知識庫快速選單
傑米的攝影旅遊筆記 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
如何利用組合語言對PCI BUS做存取?
更改我的閱讀文章字型大小
作者 : ghostaries(過客)
[ 貼文 4 | 人氣 4856 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/5 上午 11:31:33
如題~~
因為據我所知組合語言只能寫到16bit的,
除非用.386的模式,
但是我要用EAX和DX暫存器去如何和0CF8及0CFC這兩個Address去溝通呢?
是不是還有什麼方式可以用呢?
作者 : jc_23(掌握文武半邊天)
[ 貼文 119 | 人氣 7450 | 評價 530 | 評價/貼文 4.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/10 上午 10:11:15

>如題~~
>因為據我所知組合語言只能寫到16bit的,
>除非用.386的模式,
>但是我要用EAX和DX暫存器去如何和0CF8及0CFC這兩個Address去溝通呢?
>是不是還有什麼方式可以用呢?

如果你想存取 PCI BUS 的資料, 除了 cf8 & cfc port 之外, 
也可以 call int1Ah, ah=B1h 的 PCI function call
作者 : seanlin(87god)
[ 貼文 5 | 人氣 11 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/21 下午 06:45:15
K一下 PCI的 spec. 吧 ..
記得直接access 0xcf8 時, 有一個BIT是ENABLE的CONTROL
因此 在access 0xcf8 時 必須設定該BIT =1 ;
如此PCI BUS才會有動作
至於要  write what value ( 給 command )...
則必須參考HardWare North-Chipset 的spec. 
正確的話 會return spec. 中的 default value .
有錯誤的話 歡迎指正 ........
作者 : seanlin(87god)
[ 貼文 5 | 人氣 11 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/21 下午 06:46:26
K一下 PCI的 spec. 吧 ..
記得直接access 0xcf8 時, 有一個BIT是ENABLE的CONTROL
因此 在access 0xcf8 時 必須設定該BIT =1 ;
如此PCI BUS才會有動作
至於要  write what value ( 給 command )...
則必須參考HardWare North-Chipset 的spec. 
正確的話 會return spec. 中的 default value .
有錯誤的話 歡迎指正 ........
作者 : seanchang(H) Assembly卓越專家貼文超過1000則
[ 貼文 1200 | 人氣 773 | 評價 3240 | 評價/貼文 2.7 | 送出評價 43 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/22 上午 09:31:22

>K一下 PCI的 spec. 吧 ..
PCI 的spec是要錢的.^_^
作者 : jc_23(掌握文武半邊天)
[ 貼文 119 | 人氣 7450 | 評價 530 | 評價/貼文 4.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/22 上午 10:25:03
我有 PCI spec. 2.3, 2.6M bytes
要的人回覆吧
作者 : hoho001122(飄泊)
[ 貼文 21 | 人氣 1895 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/23 上午 06:35:34
大大..可以寄給我嗎
hi_jkc@pchome.com.tw
謝謝你~~
作者 : qmo(小毛頭)
[ 貼文 70 | 人氣 2178 | 評價 30 | 評價/貼文 0.43 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/23 下午 12:27:29

>我有 PCI spec. 2.3, 2.6M bytes
>要的人回覆吧

please mail to me , too, thanks !!!!

qmohuang@yahoo.com.tw

作者 : s85505283(BruceWuu)
[ 貼文 2 | 人氣 10 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/23 下午 02:13:00

可否也mail 給我
s85505283@yahoo.com.tw
5996@chem.com.tw
thanks very much
作者 : leeangus(小魚)
[ 貼文 19 | 人氣 432 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/28 下午 04:20:26
我也要唷``
leeangus.tw@yahoo.com.tw
謝謝囉
作者 : kilo_amd(Kilo Sky) 貼文超過200則人氣指數超過10000點
[ 貼文 373 | 人氣 19825 | 評價 100 | 評價/貼文 0.27 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/28 下午 09:22:41
thx
kilo_amd@pchome.com.tw
作者 : giordano(GIORDANO)
[ 貼文 8 | 人氣 16 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/29 上午 11:47:13
FROGRONG@GIGA.NET.TW
TKS...
作者 : ndh20048(縱橫四)
[ 貼文 6 | 人氣 425 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/1/29 下午 06:24:54
我也要
thx
ndh20048@ms23.hinet.net
作者 : wizard(wizard)
[ 貼文 1 | 人氣 9 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/2/3 下午 02:34:52
I want it , thank you
wizard.man@msa.hinet.net
作者 : fly12316(fly)
[ 貼文 18 | 人氣 1108 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/2/13 下午 05:23:21
PCI spec 要錢嗎?? @@
是最近的事情嗎 ?
作者 : zha0(zha0)
[ 貼文 111 | 人氣 2594 | 評價 160 | 評價/貼文 1.44 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/2/14 上午 02:24:29
對啊, 要錢嗎 ? 之前去 google 抓了一堆也.
還是特殊的規格要錢啊.
http://www.pcisig.com/
作者 : jakocys(cys)
[ 貼文 56 | 人氣 2900 | 評價 50 | 評價/貼文 0.89 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/3 上午 02:32:24
me too.thank you.

nauomitofo@yahoo.com.tw
作者 : jackylan0212(jacky)
[ 貼文 94 | 人氣 7696 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/3 上午 10:18:34
me too

thanks

jacky@sotac.com.tw or jackylan0212@yahoo.com.tw
作者 : hotjoe888(y-joe)
[ 貼文 47 | 人氣 5 | 評價 20 | 評價/貼文 0.43 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/6 上午 10:57:10
大大,感謝您無私的付出.......
Please mail to me...TKS

E-mail:hotjoe888@yahoo.com
作者 : hanscheng(Hans)
[ 貼文 1 | 人氣 7 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/8 下午 07:11:40
可否Mail給我,謝謝您.
hung@psc.com.tw
作者 : louis660912(Louis)
[ 貼文 2 | 人氣 352 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/7/11 上午 02:21:47
請問 掌握文武半邊天 大哥
 PCI SPEC 能不能寄給我 謝謝你
我的MAIL 是k7533967@ms24.hinet.net
作者 : musterri(宇軒)
[ 貼文 18 | 人氣 4896 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/8/18 上午 09:15:54
掌握文武半邊天大哥~..
可否也可將PCI bus的spec 寄給我,
我找了很久了...
謝謝~.
作者 : musterri(宇軒)
[ 貼文 18 | 人氣 4896 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/8/18 上午 09:35:03
掌握文武半邊天大哥~..
可否也可將PCI bus的spec 寄給我,
我找了很久了...
謝謝~.
mail:musterri@pchome.com.tw
作者 : thintsung(thintsung)
[ 貼文 32 | 人氣 5181 | 評價 0 | 評價/貼文 0 | 送出評價 9 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/9/8 上午 10:04:37
可否也可將PCI bus的spec 寄給我,
找了很久了...
謝謝~.
mail:thintsung@yahoo.com.tw
作者 : thintsung(thintsung)
[ 貼文 32 | 人氣 5181 | 評價 0 | 評價/貼文 0 | 送出評價 9 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/9/8 上午 10:04:47
可否也可將PCI bus的spec 寄給我,
找了很久了...
謝謝~.
mail:thintsung@yahoo.com.tw
作者 : jc_23(掌握文武半邊天)
[ 貼文 119 | 人氣 7450 | 評價 530 | 評價/貼文 4.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/9/8 下午 05:43:05
請到下列網站下載吧

http://jordanchiang.tripod.com/download/pci.pdf
作者 : jc_23(掌握文武半邊天)
[ 貼文 119 | 人氣 7450 | 評價 530 | 評價/貼文 4.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/9/8 下午 05:44:49
sorry, post again

http://jordanchiang.tripod.com
作者 : yhh006(Vincent_hung)
[ 貼文 10 | 人氣 1175 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/2/12 下午 02:05:22
小弟有一張pci卡
卡上面有EEPROM
是否可以寫一段程式將該記憶體內容全部讀回系統呢 ?

作者 : yhh006(Vincent_hung)
[ 貼文 10 | 人氣 1175 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/2/12 下午 02:05:34
小弟有一張pci卡
卡上面有EEPROM
是否可以寫一段程式將該記憶體內容全部讀回系統呢 ?

作者 : alio(alio)
[ 貼文 11 | 人氣 443 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/2/18 下午 10:19:34
大大..可以寄給我嗎 ?
 gene.enhance@msa.hinet.net
 
作者 : alio(alio)
[ 貼文 11 | 人氣 443 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/2/18 下午 10:19:48
大大..可以寄給我嗎 ?
 gene.enhance@msa.hinet.net
 
作者 : arios_tsao(arios)
[ 貼文 173 | 人氣 4205 | 評價 670 | 評價/貼文 3.87 | 送出評價 9 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/2/27 下午 01:55:15
雖然我對PCI不是挺熟, 但是我確定讀出PCI上的EEPROM內容是沒問題的
PCI的EEPROM,除了直接去access他,用cf8,cfc,cfa等port來控制PCI,對I2C的SDA,SCL下動作
也可以透過memory來讀取, 記憶中有些PCI卡會將EEPROM的內容map到memory中

以上如果有錯的地方請見諒,我只是說出我的印象而已...
不過,要讀出EEPROM的內容,要先看PCI Spec, 以上你那張卡的spec(或是那張卡上最主要的晶片的Spec),然後需要的話,再看I2C或SPI的Spec,加油囉~


>小弟有一張pci卡
>卡上面有EEPROM
>是否可以寫一段程式將該記憶體內容全部讀回系統呢 ?
作者 : clcsen(clcsen)
[ 貼文 47 | 人氣 3535 | 評價 20 | 評價/貼文 0.43 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/3/2 下午 06:13:47
首先 .. 你需要知道 pci 的 io base address
然後去找出 eeprom 的偏移位址(卡的 spec 應該有寫)
io base address + eeprom offset address = real access address
然後對那張卡所定義的 spec 中去找出該暫存器所定義的內容
這樣就差不多完成了
作者 : channingyang(ChanningYang)
[ 貼文 1 | 人氣 5 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/3/23 下午 04:56:52
我也需要,可否Mail給我
Channing@Tekom.com.tw
謝謝!!!
作者 : yhh006(Vincent_hung)
[ 貼文 10 | 人氣 1175 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/25 下午 06:17:33
上面那個網址好像已經失效囉....
我有一個關於PCI Configuration Register 存取的問題
因為PCI bus藉由 0cf8H來作存取
必須用到EAX32位元模式來讀取
PCI Device's
Vendor ID
Device ID
Revision ID
Header Type ...etc.

請問各位高手
要如何透過Assembly programming
來讀取PCI Configuration Registers ????
謝謝你們...
感激不盡
作者 : mihopaul(paul999) 貼文超過200則人氣指數超過10000點
[ 貼文 265 | 人氣 17805 | 評價 370 | 評價/貼文 1.4 | 送出評價 10 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/25 下午 07:19:39
你寫inline 組語就可以了,而且還可以用C來包外圍,FYI

LONG Read_Config_Byte(int busnum,int dev,int fun,int regnum,int *byteval)
/*
Describe:

This function allows reading individual bytes from the configuration space of a specific
device.

Input: Bus number
     Device number
Function number
register number

Output: SUCCESSFUL
     BAD_REGISTER_NUMBER

*/
{
  LONG retcode;
  int data = 0;

  retcode = BAD_REGISTER_NUMBER;
  
 _asm
 {
   mov ah,PCI_FUNCTION_ID
   mov al,READ_CONFIG_BYTE
   mov bh,byte ptr busnum
   mov bl,byte ptr dev
   shl bl,3
   and byte ptr fun,0x7
   or bl,byte ptr fun
   mov di,word ptr regnum
   PCI_BIOS_INTERRUPT
   jc FailCall
   cmp ah,0
   jne FailCall
   mov byte ptr data ,cl
 }
  *byteval = data;

  printf(" Read byte data %d form register %d\n",*byteval,regnum);

  retcode = SUCCESSFUL;
   
FailCall:

    return retcode;
}
作者 : lord_joseph(Lord Joseph)
[ 貼文 79 | 人氣 5967 | 評價 300 | 評價/貼文 3.8 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/26 上午 10:01:35
>上面那個網址好像已經失效囉....
>我有一個關於PCI Configuration Register 存取的問題
>因為PCI bus藉由 0cf8H來作存取
>必須用到EAX32位元模式來讀取
>PCI Device''s
>Vendor ID
>Device ID
>Revision ID
>Header Type ...etc.
>
>請問各位高手
>要如何透過Assembly programming
>來讀取PCI Configuration Registers ????
>謝謝你們...
>感激不盡
你可以找一下 Intel Chipset Datasheet(任何晶片都可以)說明很詳細
基本流程是對0x0CF8丟出你要存取的 PCI Device Register後
就可以從0x0CFC存取了
作者 : twinheadcpma (cpma)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/11/23 下午 05:19:23
.model small
.stack
.386
.data
a_table db '0123456789ABCDEF'
char1 db ' '
char2 db ' '
char3 db ' '
char4 db ' '
vendorid db " Vendor Id = $"
deviceid db " Device Id = $"
var1 db 60 dup(0)
var2 db 60 dup(0)

.code

start:
     mov ax,@data ;base address of data segment
     mov ds,ax ;put it in ds

     mov ah, 0b1h
     mov al, 09h
     mov bx, 0000h ; bus_device_function_num , so if you want scan the all, just using add
     mov di, 00h ; header index
     int 1ah
     mov [var1], ch
     mov [var2], cl ; output
     call hexput
     mov ah, 4ch
     int 21h
    
hexput PROC
     pusha
     lea bx, a_table
     mov al, [var2]
     mov cl, 4
     shr al, cl
     and al, 0fh
     xlatb
     mov [char1], al
     mov dl,[char1]
     mov ah,02h
     int 21h
    
     mov al, [var2]
     and al, 0fh
     xlatb
     mov [char2], al
     mov dl, [char2]
     mov ah, 02h
     int 21h
    
     mov al, [var1]
     mov cl, 4
     shr al, cl
     and al, 0fh
     xlatb
     mov [char3], al
     mov dl,[char3]
     mov ah,02h
     int 21h
     mov al, [var1]
     and al, 0fh
     xlatb
     mov [char4], al
     mov dl, [char4]
     mov ah, 02h
     int 21h
     popa
     ret
hexput ENDP
    
end start

this is test sample...enjoy
作者 : bobdeng43(bobdeng43)
[ 貼文 5 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/11/28 下午 05:44:31
请问,是在时段之后,才可以应用int 15h来存取pci? 因为,int 15h,肯定是要被初始化的。
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/11/29 上午 10:20:36
基本上 int15 初始化的點是在 BIOS shadow 與 BIOS PCI_scan之間 ! 所以在 int15 initialized之前,只能使用 PCI_CONFIG_PORT & PCI_DATA_PORT 來 access PCI devices !

假如你只是要在 BIOS load完後來存取 PCI devices(Ex. in DOS or OS),則有現成的 function call 可以使用 ( Ex. int15 in DOS )
作者 : angola(安哥拉羊) 人氣指數超過10000點
[ 貼文 73 | 人氣 21509 | 評價 30 | 評價/貼文 0.41 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/12/13 上午 08:05:18

>首先 .. 你需要知道 pci 的 io base address
>然後去找出 eeprom 的偏移位址(卡的 spec 應該有寫)
>io base address + eeprom offset address = real access address
>然後對那張卡所定義的 spec 中去找出該暫存器所定義的內容
>這樣就差不多完成了

剛好看到這篇,提出一些疑問請知道的前輩指導一下
EEPROM 和 OP-ROM 的差別在哪啊?
還有就是他們在 system bios 中是在哪個階段才會被 load 到記憶體中?
記得應該是一進os的時候??

還有就是是否 EEPROM or OP-ROM 的內容
"全部"都會 "一對一" 的 map 到某一塊的記憶體中呢?

謝謝
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/12/13 下午 12:05:06

>
>>首先 .. 你需要知道 pci 的 io base address
>>然後去找出 eeprom 的偏移位址(卡的 spec 應該有寫)
>>io base address + eeprom offset address = real access address
>>然後對那張卡所定義的 spec 中去找出該暫存器所定義的內容
>>這樣就差不多完成了
>
>剛好看到這篇,提出一些疑問請知道的前輩指導一下
>EEPROM 和 OP-ROM 的差別在哪啊?
>還有就是他們在 system bios 中是在哪個階段才會被 load 到記憶體中?
>記得應該是一進os的時候??
>
>還有就是是否 EEPROM or OP-ROM 的內容
>'全部'都會 '一對一' 的 map 到某一塊的記憶體中呢?
>
>謝謝

EEPROM是指 "Electrically-Erasable Programmable Read-Only Memory"(詳見 wikipedia info) ; 而 OP-ROM指的是: "附加" 在 PCI device 上的 ROM !

也就是說,firmware code是儲存在EEPROM上 ; 若是將燒錄有firmware code的EEPROM "mount" 在 PCI device上,此ROM就叫 Option ROM !

一般的 PCI VGA/LAN ... card 上面都有.

一般除了 VGA BIOS(也算是 Option ROM的一種)是在 PCI_SCAN之後就被 load(已便點亮螢幕);其他的 Option ROM 是在 BIOS POST的 "後段"才被 load to memory,並執行 ! (這是我所碰的BIOS's behavior)

Option ROM要先被 loaded to memory,然後再跳進去 entry point執行 code.所以,就剛 copy 進去後來比,當然是 memory中的 內容 = PCI device's ROM上的內容 !

但是,從此以後,是 memory 中的 option ROM被執行...可能,執行到最後, option ROM code會自行將一些空間釋放出來,所以會改變 "自身 size" ! 此時,memory 中的 內容 != PCI device's ROM內容了...

除此之外,在ROM copied to memory期間,也會有檢查機制,(Ex. checksum...etc ),所以應該正常都能完整的 copied to memory.
作者 : p72910(狂戰士被罰站)
[ 貼文 30 | 人氣 6404 | 評價 10 | 評價/貼文 0.33 | 送出評價 10 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/12/31 下午 03:15:35
這題跟我的第一個 Training project 一樣耶
我用C寫 console mode 程式
滿容易的
因為是32bit console mode
所以32bit register 也可以用
用C寫很快就完成了
一些暫存器的存取, I/O operation, 用組合語言來寫最快最方便
像降 ;
_asm {
mov dx, word ptr [port]
lea ebx, dwRet
push eax
in eax, dx
mov [ebx], eax
pop eax
}

其他螢幕輸出 迴圈 拉哩阿紮的用C寫最方便了
作者 : charlie0109(Charlie)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/1/22 上午 07:53:06
我也想要PCI spec.
ddtxxxd4@yahoo.com.tw
作者 : charlie0109(Charlie)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/8 上午 12:22:16
I need it......thx~^_^
charlie0109.hsu@gmail.com
作者 : charlie0109(Charlie)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/8 上午 12:22:33
I need it......thx~^_^
charlie0109.hsu@gmail.com
作者 : yuyinyuyin664(smallfish)
[ 貼文 19 | 人氣 880 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/12/6 下午 11:36:27
Please send to me ,too
yuyinyuyin664@163.com
thanks so much!!
作者 : tsaijp(eating)
[ 貼文 9 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/12/14 上午 11:54:49
請問一下有人有做出來了嗎?

我最近也試著想用 masm 來控制 pci card
可是卻沒有反應

不知道有人可以提供給我 sample code 讓我參考一下
整個流程大概是如何嗎

我現在使用的是 adlink 的 pci-7200
用 adlink 提供的 c++ library 很容易就可以 read 和 write data
可是我用 masm 就是沒有反應
不知道是哪裡出了錯了..
作者 : noname12(noname12)
[ 貼文 111 | 人氣 6301 | 評價 50 | 評價/貼文 0.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/12/15 下午 07:46:39

>請問一下有人有做出來了嗎?
>
>我最近也試著想用 masm 來控制 pci card
>可是卻沒有反應
>
>不知道有人可以提供給我 sample code 讓我參考一下
>整個流程大概是如何嗎
>
>我現在使用的是 adlink 的 pci-7200
>用 adlink 提供的 c++ library 很容易就可以 read 和 write data
>可是我用 masm 就是沒有反應
>不知道是哪裡出了錯了..
PCI card再經過PCI SCAN後應該會有自己的address,就是由BDF(BUS,Device,Function)
所組成的,就是對這個address使用CF8 & CFC去R/W.
所以你先確認這個部分是否有誤,如果沒有錯誤應該可以去R/W這個PCI device.
上述部份讓你參考!!
作者 : tsaijp(eating)
[ 貼文 9 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/12/17 上午 09:23:30
我有參考了這個網頁
http://www.waste.org/~winkles/hardware/pci.htm

其中
bit 31=1 (bit is always set for a PCI access)
bits30:24=0 (reserved)

bit 23:16=bus number (0-255)
bits15:11=device # (0-31)
bits10:8=function # (0-7)

這邊我是直接開 my computer 的 device manager 來看 (不好意思我不是裝中文版的作業系統xD 不太確定翻譯的對不對)
然後在 general 的場所那裡寫著
PCI Slot 1 (PCI bus 1, device 9, function 0)
所以我上面就照著設定了

不過
bits7:0=register number (0-255)
我不清楚是什麼意思
我就設了0

以下是我測試的 code
main PROC
mov ax,@data ;base address of data segment
mov ds,ax ;put it in ds

mov eax, 10000000000000010100100000000000 ; EAX=80014800
mov dx, 0cf8h

out dx, eax

mov dx, 0cfch
in eax, dx

     mov ah, 4ch ;結束程式
     int 21h
main ENDP

出來的結果 EAX=8001FFFF

不管 register number 設什麼
出來 AX 都是 FFFF

請問一下有人知道哪裡出了錯呢 orz

剛剛開始學習組合語言
身邊也沒有對MASM比較熟的人

麻煩大家了

我用的參考書是 KIP R. IRVINE 的組合語言第五版
作業系統是 XP
使用的軟體是 microsoft visual studio 2005
作者 : noname12(noname12)
[ 貼文 111 | 人氣 6301 | 評價 50 | 評價/貼文 0.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/12/17 下午 01:11:41

>我有參考了這個網頁
>http://www.waste.org/~winkles/hardware/pci.htm
>
>其中
>bit 31=1 (bit is always set for a PCI access)
>bits30:24=0 (reserved)
>
>bit 23:16=bus number (0-255)
>bits15:11=device # (0-31)
>bits10:8=function # (0-7)
>
>這邊我是直接開 my computer 的 device manager 來看 (不好意思我不是裝中文版的作業系統xD 不太確定翻譯的對不對)
>然後在 general 的場所那裡寫著
>PCI Slot 1 (PCI bus 1, device 9, function 0)
>所以我上面就照著設定了
>
>不過
>bits7:0=register number (0-255)
>我不清楚是什麼意思
>我就設了0
>
>以下是我測試的 code
>main PROC
> mov ax,@data ;base address of data segment
> mov ds,ax ;put it in ds
>
> mov eax, 10000000000000010100100000000000 ; EAX=80014800
> mov dx, 0cf8h
>
> out dx, eax
>
> mov dx, 0cfch
> in eax, dx
>
> mov ah, 4ch ;結束程式
> int 21h
>main ENDP
>
>出來的結果 EAX=8001FFFF
>
>不管 register number 設什麼
>出來 AX 都是 FFFF
>
>請問一下有人知道哪裡出了錯呢 orz
>
>剛剛開始學習組合語言
>身邊也沒有對MASM比較熟的人
>
>麻煩大家了
>
>我用的參考書是 KIP R. IRVINE 的組合語言第五版
>作業系統是 XP
>使用的軟體是 microsoft visual studio 2005

請問一下你是在OS底下實驗嗎??如果是在OS底下可能會有問題,所以建議
你用USB Storge 用DOS開機去驗證!!
然後讀取出來的數值應該是沒有抓到device,基本上應該不用in eax,dx
用ax應該會比較方便.
上述部分僅做參考
作者 : tsaijp(eating)
[ 貼文 9 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/12/17 下午 02:30:06
你的意思是說
我在XP底下
無法用組合語言存取 PCI 卡嗎?!!!
作者 : noname12(noname12)
[ 貼文 111 | 人氣 6301 | 評價 50 | 評價/貼文 0.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/12/17 下午 07:35:07

>你的意思是說
>我在XP底下
>無法用組合語言存取 PCI 卡嗎?!!!
並不是說不行,而是要在OS底下完成需要多很多步驟,
簡單來說DOS是real mode但是OS是protect mode,
DOS可以直接IO read/write但是OS卻要很多複雜的步驟,
光是這種差異就有得處理!!
上述部分僅供參考

作者 : tsaijp(eating)
[ 貼文 9 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/12/18 上午 08:28:10
所以哪些很複雜的步驟是指什麼呢 orz
很想知道

不好意思問題很多

然後非常感謝noname12不厭其煩的回答我的問題!!

thx a lot
作者 : noname12(noname12)
[ 貼文 111 | 人氣 6301 | 評價 50 | 評價/貼文 0.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/12/19 下午 05:18:34

>所以哪些很複雜的步驟是指什麼呢 orz
>很想知道
>
>不好意思問題很多
>
>然後非常感謝noname12不厭其煩的回答我的問題!!
>
>thx a lot
這個部分就沒有研究過了所以幫不到你,只能給大約
方向!!你必須依照OS的方式去控制IO,印象中好像是
用winio(不知道有沒有記錯)去處理.
不過會先建議先在DOS底下完成再改成OS,這樣應該
會比較容易清楚PCI.
上述部分僅供參考
作者 : tsaijp(eating)
[ 貼文 9 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/12/21 上午 09:03:02
是指這個嗎
WinIo - This library allows direct I/O port and physical memory access under Windows 9x/NT/2000 and XP.
http://www.internals.com/

不過這也是 c 跟 vb @@:

組合語言該如何使用呢
 板主 : 徵求中
 > 組合語言 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 組合語言 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
組合語言
1 H 2220 
2 liaoo 990 
3 青衫 970 
4 牧童哥 940 
5 史努比 920 
6 qq 480 
7 GHOST-JACKY 330 
8 ]CALL-151 310 
9 harrison 300 
10 掌握文武半邊天 280 
組合語言
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.375