|
INtime
Tech
¡¸INtime documentary¡¹~INtime ÃʽÉÀÚ
üÇè±â
 |
10¿ù 10ÀÏ···PCI º¸µå¸¦ °ËÃâÇÒ ¼ö ¾ø´Ù!? |
|
¾î¶»°Ô Çß´Ü ¸»Àΰ¡?!! PciFindDevice() ¾î°¼ °ËÃâÇÒ ¼ö ¾ø´Â °ÍÀÎÁö?
¿Ö?
º¸µå´Â Á¦´ë·Î
»ðÀÔÇϰí Àִµ¥···. Å×½ºÆ®¸¦ À§ÇØ INtime À§Àúµå·Î ÀÚµ¿ »ý¼ºµÇ´Â À¯Æ¿¸®Æ¼ ÄÝ GetPciInterruptLevel()·Î ½ÃÇèÇØ
º¸¾ÒÁö¸¸, °á°ú´Â ¸¶Âù°¡Áö¾ú´ø °ÍÀÔ´Ï´Ù..
ÀÌÇÏ´Â
GetPciInterruptLevel()ÀÔ´Ï´Ù£º
|
/*****************************************************************************
*
* FUNCTION: GetPciInterruptLevel
*
* PARAMETERS: 1. PCI Vendor ID
* 2. PCI Device ID
*
* RETURNS: encode µÈ ÀÎÅÍ·´Æ® ·¹º§, ¶Ç´Â ½ÇÆÐ½Ã 0xffff
*
\*****************************************************************************/
WORD ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡GetPciInterruptLevel(
WORD wPciVendorId,
WORD wPciDeviceId)
{
static const BYTE ¡¡¡¡¡¡irq2level[] = {
IRQ0_LEVEL, IRQ1_LEVEL,IRQ2_LEVEL, IRQ3_LEVEL,
IRQ4_LEVEL, IRQ5_LEVEL, IRQ6_LEVEL, IRQ7_LEVEL,
IRQ8_LEVEL, IRQ9_LEVEL, IRQ10_LEVEL, IRQ11_LEVEL,
IRQ12_LEVEL, IRQ13_LEVEL, IRQ14_LEVEL, IRQ15_LEVEL };
PCIDEV dev;
dev.wVendorId = wPciVendorId;
dev.wDeviceId = wPciDeviceId;
dev.wDeviceIndex= 0; ¡¡¡¡¡¡¡¡// óÀ½¿¡ °ËÃâµÈ µð¹ÙÀ̽º
if (!PciFindDevice(&dev))
return 0xFFFF; ¡¡¡¡¡¡// µð¹ÙÀ̽º´Â ¹ß°ßµÇÁö ¾Ê´Â´Ù
if (dev.byIntLine > 15)
return 0xFFFF; ¡¡¡¡¡¡// ÀÌ µð¹ÙÀ̽º¿¡´Â IRQ°¡ ¾ø´ÂÁö, ÀÎÁ¤¹ÞÁö ¸øÇÑ IRQÄ¡ÀÎ
return irq2level[dev.byIntLine];
}
|
| ÀÌ ÇÔ¼öÀÇ Á¦ÀÏ Àμö´Â º¥´õ ID, Á¦2 Àμö´Â µð¹ÙÀ̽º IDÀÔ´Ï´Ù.
³ª´Â ÀÌ ÇÔ¼ö¿¡ Á÷Á¢ º¥´õ ID,
µð¹ÙÀ̽º ID¸¦ ÁöÁ¤Çß´ø£º |
WORD intLevel;
IntLevel = GetPciInterruptLevel( 1221, 8153 );
| | |
 |
µµÁß °æ°ú |
|
°á°ú 0 xffff°¡ ¹ÝȯµÇ¾ú½À´Ï´Ù. ¾î°¼Àϱî¿ä?
(ȸ´ä) º¥´õ ID, µð¹ÙÀ̽º
ID´Â ¿Ã¹Ù¸¦±î¿ä? CONTEC PCI ¹ö½º ´ëÀÀºñÀý¿¬Çü ´Ùä³Î ¾Æ³¯·Î±× ÀÔ·Â º¸µå¡¡AD12-16(PCI)ÀÇ º¥´õ ID´Â 0 x1221,
µð¹ÙÀ̽º ID´Â 0 x8153¿¹¿ä.
±×·¯´Ï±î º¥´õ ID£º1221, µð¹ÙÀ̽º ID£º8153¿¡····(Àº)´Â!?!
¡ì¶Ç···¶Ç ÇØ ¹ö·È´Ù!!¡í
0x1221(16 Áø¼ö) = 4641(10 Áø¼ö) ¡¡³ªÀÇ ÁöÁ¤ÇÑ ¼öÄ¡£º1221(10 Áø¼ö)
0x8153(16 Áø¼ö) = 33017(10 Áø¼ö)¡¡³ªÀÇ ÁöÁ¤ÇÑ ¼öÄ¡£º8153(10
Áø¼ö)
¡¸ ¾ÆÁ÷ 10 Áø¼ö¿Í 16 Áø¼öÀÇ Â÷ÀÌ¿¡ ÀÚ¿¬¿¡ ´ëÀÀÇÒ ¼ö ¾ø´Â ³ªÀÇ ºÎÁÖÀÇ·Î ÀÇÇÑ ½Ç¼ö¿´½À´Ï´Ù···.¡¹
|
| INtime À§ÀúµåÀÇ ¼¼Ä¡±â ó¸®
´ÙÀ̾ó·Î±× |
|
|
¿©±â¼ ÀÔ·ÂÇÑ °ªÀ¸·Î 10 Áø¼ö, 16 Áø¼ö¸¦ ÀǽÄÇÏÁö ¾Ê°í, º¥´õ ID(Vendor ID)
1221, µð¹ÙÀ̽º ID(Device ID) 8153À¸·Î ÀÔ·ÂÇØ ¹ö¸®°í ÀÖ¾ú°ÚÁö¿ä. ÀÌ ÈÄ ¿Ã¹Ù¸£°Ô ÁöÁ¤Çϸé, ¿ÏÀüÈ÷ ¹®Á¦ ¾ø°Ô º¸µå¸¦
ÀνÄÇϰí ÀÖ´Â °ÍÀ» ¾Ë¾Ò½À´Ï´Ù.
ÀÚµ¿ »ý¼ºµÈ ¿ø½Ã ÄÚµå»ó¿¡¼´Â£º |
/*****************************************************************************
*
* FUNCTION: nt1Init
*
* PARAMETERS: ¾øÀ½
*
* RETURNS: BOOL ó¸®ÀÇ ¼º°øÀ» ÀǹÌÇÕ´Ï´Ù
*
* DESCRIPTION: ÀÎÅÍ·´Æ®¸¦ Ãë±ÞÇÒ ¼ö ÀÖ´Â »óÅ·Π¼³Á¤ÇÕ´Ï´Ù
* ÀÎÅÍ·´Æ® 󸮱â¿Í ³¢¾îµé¾î ½º·¹µå¸¦ »ç¿ëÇÕ´Ï´Ù
\*****************************************************************************/
BOOL Int1Init(void)
{
wLevel = GetPciInterruptLevel(0x1221,0x8153);
if(0xFFFF == wLevel) ¿©±â¼ ÁöÁ¤ÇØ ÀÖ´Â
return FALSE;
SetRtProcessMaxPriority(NULL_RTHANDLE, 0);
return (CreateRtThread(0, Int1Thread, 4096, 0)
!= BAD_RTHANDLE);
}
| | |
 |
°á°ú |
|
±×·¯¸é ¡¸ÀÎÅÍ·´Æ® ·¹º§¡¹·Î ÁöÁ¤ÇÏ´Â °Í "PCI based"¶õ?
(ȸ´ä) PCI
¹ö½º µð¹ÙÀ̽ºÀÇ °æ¿ì, ±× µ¿ÀÛ ¸ðµå¿¡ ÀÇÇØ OS°¡ PCI ¹ö½ºÀÇ IRQ°¡ µ¿ÀûÀ¸·Î ¼³Á¤ÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.
"PCI based"¿¡¼´Â PCIÀÇ
ÀÎÅÍ·´Æ® ·¹º§À» ÃëµæÇÏ´Â ÇÔ¼ö GetPciInterruptLevel()¸¦ »ç¿ëÇØ IRQ ·¹º§À» ÃëµæÇÒ Çʿ䰡
ÀÖ½À´Ï´Ù.
¡¸°ú¿¬···¡¹
|
HOME |
INtime |