INtime Tech

INtime Top


 PCI configuration ·¹Áö½ºÅÍ


PCI µð¹ÙÀ̽ºÀÇ ±¸Á¶¿Í Á¦¾î

PCI configuration ·¹Áö½ºÅÍ¿¡ ´ëÇØ

INtime¿¡ ´ëÇØ PCI µð¹ÙÀ̽º¸¦ Á¦¾îÇÏ´Â °æ¿ì, PCI ¹ö½ºÀÇ configuration ·¹Áö½ºÅÍÀÇ Á¶ÀÛÀ» ÇàÇÕ´Ï´Ù. 1°³ÀÇ PCI µð¹ÙÀ̽º¿¡ ´ë¾îÁö´Â configuration °ø°£ »çÀÌÁî´Â 256¹ÙÀÌÆ®·Î, À̰ÍÀº Å« Àǹ̷ΠµÎ °³ÀÇ ¿µ¿ªÀ¸·Î ³ª´­ ¼ö ÀÖ½À´Ï´Ù. configuration °ø°£ Çì´õ ºÎºÐ(ÃÖÃÊÀÇ 64¹ÙÀÌÆ®:¹Ø±×¸² ȸ»ö ºÎºÐ)°ú Çϳª ´õ°¡ µð¹ÙÀ̽º °íÀ¯ÀÇ ¿µ¿ª( ÈÄÀÇ 192¹ÙÀÌÆ®: À¯»ö ºÎºÐ)ÀÔ´Ï´Ù. configuration ·¹Áö½ºÅÍ °ø°£ Çì´õ¿Í´Â PCIÀÇ ½Ã¹æ¼­³ª °ü·Ã ÀÚ·á·Î ÀÌ¹Ì Á¤Àǵǰí ÀÖ´Â ¿µ¿ª¿¡¼­ ÀÌ ¿µ¿ªÀÇ ·¹Áö½ºÅͰ¡ ±ÔÁ¤µÇ°í ÀÖ´Â ¸ñÀû ÀÌ¿ÜÀÇ ¸ñÀûÀ¸·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù(ÁÖ¼Ò£º00h?3Fh).°Ý³³µÇ°í ÀÖ´Â µ¥ÀÌÅÍ´Â ¸ðµÎ µð¹ÙÀ̽º °íÀ¯ÀÇ ½Äº°À̳ª ±× µð¹ÙÀ̽º°¡ ¼ÓÇϴ Ŭ·¡½ºµîÀÇ ¼Ó¼º Á¤º¸ÀÔ´Ï´Ù. µð¹ÙÀ̽º °íÀ¯ÀÇ ¿µ¿ª¿¡ ´ëÇØ¼­´Â PCIÀÇ »ç¾çÀ¸·Î Á¤ÀǵǾî ÀÖÁö ¾ÊÀº ¿µ¿ªÀ̸ç, °¢ µð¹ÙÀ̽º ¸¶´Ù Ä¿½ºÅ͸¶ÀÌÁî µÇ´Â ¿µ¿ªÀÔ´Ï´Ù.

31 (¶Ç´Â 64)-16

15-0

0

µð¹ÙÀ̽º ID

º¥´õ ID

½ºÅ×ÀÌÅͽº

Ä¿¸àµå

Ŭ·¡½º·ÄÚµå

¸®ºñÁ¯ ID

BIST

Çì´õ·Å¸ÀÔ

Áö¿¬½Ã°£·Å¸À̸Ó

ij½¬·¶óÀη»çÀÌÁî

º£À̽º·ÁÖ¼Ò··¹Áö½ºÅÍ

¿¹¾à

¿¹¾à

È®Àå ROM º£À̽º·ÁÖ¼Ò

¿¹¾à

¿¹¾à

ÃÖ´ë Áö¿¬½Ã°£

ÃÖ¼Ò ±×·£Æ®

ÀÎÅÍ·´Æ®·ÇÉ

ÀÎÅÍ·´Æ®·¶óÀÎ

00h

04h

08h

0Ch

10h

14h

18h

1Ch

20h

24h

28h

2Ch

30h

34h

38h

3Ch

PCI configuration ·¹Áö½ºÅÍ

µð¹ÙÀ̽º ½Äº° ·¹Áö½ºÅÍ

PCI µð¹ÙÀ̽ºÀÇ configuration ·¹Áö½ºÅÍ Á¤º¸¸¦ ÃëµæÇϱâ À§Çؼ­ ÇÊ¿ä·Î ÇÏ´Â ·¹Áö½ºÅÍÀÔ´Ï´Ù. ÀÌ °ªÀ» ¼öÁ¤Çϰųª ÇÒ ¼ö ¾ø½À´Ï´Ù. INtimeÀÇ PCI ¶óÀ̺귯¸® ÄÝ¿¡¼­´Â µð¹ÙÀ̽º ½Äº° ·¹Áö½ºÅÍÀÇ Á¤º¸ Àμö·Î¼­ ÁÖ´Â °ÍÀ¸·Î, µð¹ÙÀ̽º°¡ ȯ°æ³»¿¡ Á¸ÀçÇÒ±îÀÇ È®ÀÎÀ̳ª, Á¸Àç½Ã¿¡ ÇÁ·Î±×·¡¸ÓºíÀÎ ¿µ¿ªÀÇ ¼±µÎ ÁÖ¼Ò¸¦ ÃëµæÇÏ´Â °ÍÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù.

  • 1. º¥´õ ID¡¡[Vendor ID; 00h WORD£º¸®µå Àü¿ë]
    ¸ÞÀÌÄ¿ ¸¶´Ù ÇÒ´çÇÒ ¼ö ÀÖ°í ÀÖ½À´Ï´Ù.FFFFh´Â º¥´õ ID·Î¼­ À¯È¿ÇÑ °ªÀÌ ¾Æ´Õ´Ï´Ù. ÄÁÇDZ׷¹ÀÌ¼Ç ÇÁ·Î±×·¥Àº º¥´õ ID·Î¼­ FFFFh°¡ ÀÐÇûÀ» ¶§, Ÿ°ÙÀ¸·Î¼­ ÁöÁ¤ÇÑ µð¹ÙÀ̽º³ª ±â´ÉÀÌ Á¸ÀçÇϰí ÀÖÁö ¾Ê´Ù°í ÆÇ´ÜÇÕ´Ï´Ù.<<PCIµð¹ÙÀ̽º °ËÃâÀºFFFFhÀ» °ËÃâÇÒ ¶§±îÁö ¹Ýº¹ÇØ ½Ç½ÃÇØ, º¸µå¸¦ °ËÃâÇßÀ» °æ¿ì´Â ±× 󸮸¦ Á¾·áÇÕ´Ï´Ù.

  • 2. µð¹ÙÀ̽ºID[Device ID: 02h WORD£º¸®µå Àü¿ë]
    º¥´õID·Î ÁöÁ¤µÇ´Â ¸ÞÀÌÄ¿°¡ Á¦Á¶ÇÑ µð¹ÙÀ̽º³¢¸®¸¦ ½Äº°Çϱâ À§Çؼ­ »ç¿ëµÇ´Â16ºñÆ®ÀÇ °ÍIDÀÔ´Ï´Ù. °ªÀÇ ÇÒ´ç ¹æ¹ýÀº °¢ ¸ÞÀÌÄ¿¸¶´Ù ´Ù¸£´Ù.

  • 3. ¸®ºñÁ¯ID[Revision ID: 08h BYTE£º¸®µå Àü¿ë]
    º¥´õ ID¿Í µð¹ÙÀ̽º ID·Î ÁöÁ¤µÇ´Â ƯÁ¤ÀÇ µð¹ÙÀ̽º¿¡ ´ëÇØ¼­ ±× ¸®ºñÁ¯À» ³ªÅ¸³»±â À§Çؼ­ »ç¿ëµÇ´Â 8ºñÆ®ÀÇ ID.°ªÀÇ Á¤ÀÇ´Â °¢ ¸ÞÀÌÄ¿¿¡ µû¶ó¼­ ´Ù¸¨´Ï´Ù.

  • 4. Çì´õ ŸÀÔ[Header Type: 0Eh ¹ÙÀÌÆ®£º¸®µå Àü¿ë]
    ÇÏÀ§ 7ºñÆ®(ºñÆ®6-0)´Â ±× µð¹ÙÀ̽º°¡ ä¿ëÇϰí ÀÖ´Â ÄÁÇDZַ¹ÀÌ¼Ç °ø°£ Çì´õ·Å¸ÀÔÀ» ³ªÅ¸³À´Ï´Ù. ÇöÀç´Â 00h(ÀÏ¹Ý µð¹ÙÀ̽º)·Î 01h(PCI-PCI ºê¸´Áö·µð¹ÙÀ̽º)ÀÇ 2Á¾·ù°¡ Á¤Àǵǰí ÀÖ½À´Ï´Ù. ºñÆ® 7Àº ´Ù±â´É µð¹ÙÀ̽º·ºñÆ®ÀÔ´Ï´Ù. ºñÆ®ÀÇ °ªÀÌ 0À̶ó¸é, ÀÌ µð¹ÙÀ̽º´Â ´ÜÀÏ ±â´É µð¹ÙÀ̽ºÀÎ °ÍÀ» ³ªÅ¸³», °ªÀÌ 1À̶ó¸é ´Ù±â´É µð¹ÙÀ̽ºÀÎ °ÍÀ» ³ªÅ¸³À´Ï´Ù.

  • 5. Ŭ·¡½º ÄÚµå[Class Code: 09h 3¹ÙÀÌÆ®£º¸®µå Àü¿ë]
    ±× µð¹ÙÀ̽ºÀÇ Á¾·ù·±â´ÉÀ» ³ªÅ¸³»´Â Á¤º¸·Î, °ªÀÇ Á¤ÀÇ´Â PCI SIG¿¡ ÀÇÇØ¼­ ÇàÇØÁý´Ï´Ù. Ŭ·¡½º ÄÚµå´Â 3°³·Î ³ª´­ ¼ö ÀÖ½À´Ï´Ù(±âº» Ŭ·¡½º[base class:0Bh], ¼­ºê Ŭ·¡½º[sub class:0Ah], ÇÁ·Î±×·¡¹Ö·ÀÎÅÍÆäÀ̽º Ŭ·¡½º[programing interface class:09h]).

 

º£À̽º ¾îµå·¹½º ·¹Áö½ºÅÍ

PCI µð¹ÙÀ̽º°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸® °ø°£°ú I/O°ø°£ÀÇ ÁÖ¼Ò´Â ±âº»ÀûÀ¸·Î ÇÁ·Î±×·¡¸ÓºíÀÔ´Ï´Ù. ½ÇÁ¦·Î µð¹ÙÀ̽º°¡ »ç¿ëÇÏ´Â address °ø°£Àº ½Ã½ºÅÛÀÇ ÃʱâÈ­ ÇÁ·Î±×·¥ÀÌ º£À̽º·ÁÖ¼Ò··¹Áö½ºÅÍ¿¡ °ªÀ» ¼³Á¤ÇÏ´Â °Í¿¡ ÀÇÇØ¼­ Á¤ÇØÁý´Ï´Ù. À̰ÍÀº, µð¹ÙÀ̽º³¢¸®ÀÇ ÁÖ¼ÒÀÇ Áߺ¹À» ÇÇÇØ À¯Àú¿¡ ÀÇÇÑ ½Ã½ºÅÛÀÇ ¼Â¾÷À» ¿ëÀÌÇÏ°Ô Çϱ⠶§¹®ÀÔ´Ï´Ù. º£À̽º ¾îµå·¹½º ·¹Áö½ºÅÍÀÇ »çÀÌÁî´Â Åë»ó 32ºñÆ®(4¹ÙÀÌÆ®)ÀÔ´Ï´Ù. ´Ù¸¸ 64ºñÆ®(8¹ÙÀÌÆ®) ¾Öµå·¹½ÌÀ» ÀÌ¿ëÇØ 4 G¹ÙÀÌÆ®ºÎÅÍ À§ÀÇ ¸Þ¸ð¸® °ø°£¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸®·ºí·ÏÀ» À§ÇÑ º£À̽º ¾îµå·¹½º ·¹Áö½ºÅÍ »çÀÌÁî´Â 64ºñÆ®ÀÔ´Ï´Ù.
INtime¿¡ ´ëÇØ ÀÌ ¿µ¿ª ÀÌÇÏÀÇ ¸ÞÀÌÄ¿ °íÀ¯ÀÇ ¿µ¿ªÀÇ µ¥ÀÌÅ͸¦ Á¶ÀÛÇÏ´Â °ÍÀ¸·Î½á, PCI µð¹ÙÀ̽ºÀÇ Á¦¾î¸¦ ÇàÇÕ´Ï´Ù. ÀÌ ¿µ¿ªÀº °¢ ¸ÞÀÌÄ¿, µð¹ÙÀ̽º¿¡ ÀÇÇØ ´Ù¸£±â ¶§¹®¿¡, ÀÚ¼¼ÇÑ °ÍÀº °¢ ¸ÞÀÌÄ¿ÀÇ Á¦°øÇÏ´Â ÀڷḦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. ÇÁ·Î±×·¡¸Óºí ¿µ¿ª(º£À̽º ·¹Áö½ºÅÍ)Àº ¸Þ¸ð¸® °ø°£À¸·Î¼­ »ç¿ëµÈ °ÍÀϱî, I/O°ø°£À¸·Î¼­ »ç¿ëµÈ °ÍÀϱîÀÇ 2 Á¾·ù Á¸ÀçÇØ, º£À̽º ÁÖ¼ÒÀÇ ¸»¹Ì ºñÆ® Á¤º¸·ÎºÎÅÍ ÆÇ´ÜÇÕ´Ï´Ù. º£À̽º ÁÖ¼ÒÀÇ ¸»¹Ì ºñÆ®´Â ÀεðÄÉÀÌÅÍ(indicator)·Î¼­ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù.

  • ¸Þ¸ð¸® °ø°£À» ³ªÅ¸³»´Â º£À̽º ¾îµå·¹½º ·¹Áö½ºÅÍÀÇ °æ¿ì

    mem_region.png


    ºñÆ®3-0´Â ¸®µå Àü¿ëÀ¸·Î Ưº°ÇÑ Àǹ̰¡ ÀÖ½À´Ï´Ù.

    • ºñÆ® 0£º¸Þ¸ð¸® °ø°£ ÀεðÄÉÀÌÅÍ(indicator)(Memory Space Indicator)
      Ä¡´Â Ç×»ó 0À¸·Î, ÀÌ º£À̽º ¾îµå·¹½º ·¹Áö½ºÅͰ¡ ¸Þ¸ð¸® °ø°£¿ëÀÇ °ÍÀÓÀ» ³ªÅ¸³» Çϰí ÀÖ´Ù.

    • ºñÆ®2-1£ºÅ¸ÀÔ(Type)
      ºñÆ®ÀÇ Æí¼º¿¡ ÀÇÇØ¼­ ÀÌ ¸Þ¸ð¸®ºê·ÏÅ©¸¦ ¹èÄ¡ °¡´ÉÇÑ ÁÖ¼Ò ¹üÀ§¸¦ Ç¥½ÃÇÕ´Ï´Ù.

      ºñÆ®2

      ºñÆ®1

      Á¤ÀÇ

      0

      0

      32ºñÆ®·address °ø°£ÀÇ ÀÓÀÇ À§Ä¡

      1

      0

      1 M¹ÙÀÌÆ® ÀÌÇÏÀÇ ¸Þ¸ð¸® °ø°£

      0

      1

      64ºñÆ®·address °ø°£ÀÇ ÀÓÀÇÀÇ À§Ä¡

      1

      0

      (¿¹¾à¡¡)


    • ºñÆ® 3£ºÇÁ¸®ÆêÄ¡ °¡´É( Prefetchable )
      ¸Þ¸ð¸®·¸®µå·»çÀÌŬ¿¡ ´ëÇϰí ÇÁ¸®ÆêÄ¡¸¦ ÇàÇÏ¸é µ¥ÀÌÅÍ Àü¼ÛÀÇ È¿À²ÀÌ ÁÁ¾ÆÁý´Ï´Ù. ±×·¯³ª ¿¹Á¤¿ÜÀÇ ¸®µå ¾×¼¼½º¿¡ ÀÇÇØ¼­ ¿Àµ¿ÀÛµîÀÇ ºÎÀÛ¿ëÀÌ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ´Â ¸Þ¸ð¸®·Å¸°ÙÀÇ °æ¿ì¿¡´Â, ÀÌ ºñÆ®ÀÇ °ªÀ» 0À¸·Î Çϰí, ¸®µå ¾×¼¼½º¿¡ À־ÀÇ ÇÁ¸®ÆêÄ¡¸¦ ±ÝÁöÇÕ´Ï´Ù. ±× ÀÌ¿ÜÀÇ °æ¿ì¿¡´Â °ªÀ» 1·Î ¼³Á¤ÇÕ´Ï´Ù.

    • ºñÆ® 4ÀÌ»ó
      °íÀ§ÀÇ ºñÆ®´Â º£À̽º address field¡æÇÊ¿ä·Î ÇÏ´Â ÁÖ¼Ò·ºí·ÏÀÇ Å©±â¿¡ ¸ÂÃß°í, ÀÌ ºñÆ® ÇʵåÀÇ ÇÏÀ§ÀÇ ¸î ºñÆ®Àΰ¡´Â °ª 0ÀÇ ¸®µå Àü¿ë ºñÆ®·Î¼­ ½ÇÀåÇÕ´Ï´Ù.

  • I/O°ø°£À» ³ªÅ¸³»´Â º£À̽º ¾îµå·¹½º ·¹Áö½ºÅÍÀÇ °æ¿ì

    io_region.png


    • ºñÆ® 0£ºI/OÀεðÄÉÀÌÅÍ(indicator)
      Ä¡ 1ÀÇ ¸®µå Àü¿ë ºñÆ®·Î ÀÌ º£À̽º ÁÖ¼Ò··¹Áö½ºÅͰ¡ I/Oaddress °ø°£¿ëÀÇ °ÍÀÓÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù.

    • ºñÆ®2-31£ºº£À̽º address field
      ¿ä±¸ I/O°ø°£ »çÀÌÁî¿¡ ¸ÂÃß¾î ÇÏÀ§ÀÇ ¸î ºñÆ®ÀÎÁö¸¦ °ª 0ÀÇ ¸®µå Àü¿ë ºñÆ®·Î ÇÏ´Â °ÍÀº ¸Þ¸ð¸®¿ë º£À̽º ¾îµå·¹½º ·¹Áö½ºÅÍÀÇ °æ¿ìµµ °°½À´Ï´Ù.¿ä±¸ I/O°ø°£ »çÀÌÁîÀÇ ÃÖ¼Ò´ÜÀ§´Â 4 BYTEÀÔ´Ï´Ù.

 

PCIDEV ±¸Á¶Ã¼

ÀÌÇÏ¿¡ INtime·Î »ç¿ëÇÏ´Â PCIDEV ±¸Á¶Ã¼¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ·¯ÇÑ ÇʵåÄ¡´Â ƯÁ¤ÀÇ PCI µð¹ÙÀ̽º ÄÁÇDZ׷¹ÀÌ¼Ç Çì´õ·ÎºÎÅÍ PciReadHeader ¿Í PciFindDevice¿¡ ÀÇÇØ¼­ ÃëµæÇÑ PCI 2.1 ·¹Áö½ºÅÍÀÇ Ä«ÇÇÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº, ¡¸ PCI ·ÎÄà ¹ö½º »ç¾ç 2.1¡¹À» ºÁ ÁÖ¼¼¿ä.ÀÌÂÊÀÇ ±¸Á¶Ã¼´Â pcibus.h¿¡ Á¤Àǵǰí ÀÖ½À´Ï´Ù.

 

PCI configuration ·¹Áö½ºÅÍ¿Í PCIDEV ±¸Á¶Ã¼

INtime¿¡¼­´Â ÀÌÇÏÀÇ ±¸Á¶Ã¼¿¡, º¥´õ ID, µð¹ÙÀ̽º IDµîÀÇ µð¹ÙÀ̽º ½Äº° ·¹Áö½ºÅÍÀÇ °ªÀ» Ű·Î¼­ ÀÔ·ÂÇØ PCI ¶óÀ̺귯¸® ÄÝÀ» ½Ç½ÃÇØ, PCI µð¹ÙÀ̽ºÀÇ ÀνÄÀ» Çϱâ À§Çؼ­ ÄÁÇDZַ¹ÀÌ¼Ç °ø°£ Çì´õ ºÎºÐÀ» ÂüÁ¶ÇÏ´Â °ÍÀ¸·Î½á µð¹ÙÀ̽º °íÀ¯ÀÇ ¿µ¿ª Á¤º¸¸¦ Ãëµæ, Á¶ÀÛÀ» ÇàÇÕ´Ï´Ù. Ưº°È÷ ÇÊ¿äÇÏ°Ô µÇ´Â ·¹Áö½ºÅÍ(¸â¹ö)¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

typedef struct {
   WORD   wBusNum;           &color(green){//¹ö½º ¹øÈ£ ÀÔ·Â Çʵå};
   WORD   wDeviceNum;        //µð¹ÙÀ̽º ¹øÈ£ ÀÔ·Â Çʵå
   WORD   wFunction;         //Æã¼Ç ¹øÈ£ ÀÔ·Â Çʵå
   WORD   wVendorId;         //º¥´õ ID ÀÔ·Â Çʵå
   WORD   wDeviceId;         //µð¹ÙÀ̽º ID ÀÔ·Â Çʵå
   WORD   wDeviceIndex;      //µð¹ÙÀ̽º °Ë»ö ¹øÈ£ ÀÔ·Â Çʵå
   WORD   wCommand;          //Ä¿¸àµå
   WORD   wClassId;          //Ŭ·¡½º·ÄÚµå
   BYTE   byInterfaceId;     //Ŭ·¡½º·ÄÚµå
   BYTE   byRevId;           //¸®ºñÁ¯ ID
   BYTE   byCLS;             //ij½¬ ¶óÀÎ »çÀÌÁî
   BYTE   byLatency;         //Áö¿¬½Ã°£·Å¸À̸Ó
   DWORD  dwBaseAddr[6];     //º£À̽º ¾îµå·¹½º ·¹Áö½ºÅÍ
   DWORD  dwCIS;
   WORD   wSubSystemVendorId;
   WORD   wSubSystemId;
   DWORD  dwRomBaseAddr;     //È®Àå ROM º£À̽º ÁÖ¼Ò
   BYTE   byIntLine;         //ÀÎÅÍ·´Æ®·¶óÀÎ
   BYTE   byIntPin;          //ÀÎÅÍ·´Æ®·ÇÉ 
   BYTE   byMaxLatency;      //ÃÖ´ë Áö¿¬½Ã°£
   BYTE   byMinGrant;        //ÃÖ¼Ò ±×·£Æ®
  } PCIDEV, *LPPCIDEV;

 


HOME | INtime