|

|
|
|
INtime
Tech
INtime Top
INtime2.23
ÀÌÀüÀÇ ¹öÁ¯°úÀÇ »óÀ§(ßÓêÞ)·ÁÖÀÇÁ¡
óÀ½¿¡
INtime ¹öÁ¯ 2.23ÀÌÈÄ¿¡¼´Â APIC¸¦ ¼Æ÷Æ®ÇÕ´Ï´Ù. ÀÌ APIC¸¦ »ç¿ëÇÏ´Â °ÍÀ¸·Î½á Á¾·¡ 16¿¡ °íÁ¤µÇ°í ÀÖ´ø ÀÎÅÍ·´Æ® Á¡¼ö¸¦ È®ÀåÇÒ
¼ö ÀÖÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¼Æ÷Æ®¿¡ ¼ö¹ÝÇØ INtimeÀÇ ÇÁ·Î±×·¥À¸·ÎºÎÅÍ APIC ´ëÀÀ Ç÷§Æû»óÀÇ Çϵå¿þ¾î¿¡ ¾×¼¼½º ÇÒ ¶§, ÀϺΠ¾îÇø®ÄÉÀÌ¼Ç ÄÚµåÀÇ º¯°æÀ» ¼ö¹ÝÇÏ´Â Â÷ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù. INtimeÀÌ APIC¸¦ »ç¿ëÇØ
µ¿ÀÛÇÏ´ÂÁö, ¾Æ´Ñ°¡´Â ÀνºÅç µÇ°í ÀÖ´Â WindowsÀÇ HALÀÇ Á¾·ù·ÎºÎÅÍ ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. Advanced
Programable Interrupt ControllerÀÇ ÆäÀÌÁö¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
1. ÀÎÅÍ·´Æ® ·¹º§ »êÃâ ó¸®ÀÇ º¯°æ
INtime2.23 ¹öÁ¯ ÀÌÈÄ¿¡¼´Â »õ·Î¿î PC°¡ °¡Áö´Â APIC ±â±¸¿¡ ´ëÀÀÇ߱⠶§¹®¿¡, PCI µð¹ÙÀ̽º°¡ ÀÌ¿ë °¡´ÉÇÑ IRQ ¹øÈ£´Â
Á¾·¡ÀÇ 0~15·ÎºÎÅÍ Å«ÆøÀ¸·Î Áõ°¡Çϰí, 16~254ÀÇ °ªÀ» °¡Áú °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
Á¾·¡ÀÇ ¾îÇø®ÄÉÀÌ¼Ç Äڵ忡 ´ëÇØ¼´Â, ¹è¿À» »ç¿ëÇØ IRQ ¹øÈ£¸¦ ÀÎÅÍ·´Æ®
·¹º§Ä¡ IRQ0_ LEVEL~ IRQ15_ LEVEL·Î º¯È¯Çϰí ÀÖÀ¸¹Ç·Î, ÀÌ °³¼Ò¿¡´Â ÀÌÇÏ¿Í °°Àº º¯°æÀ»
¼ö¹ÝÇÕ´Ï´Ù.
ÀÌÇÏÀÇ º¯°æÀº, Á¾·¡ÀÇ PCȯ°æ(IRQ0~IRQ15 ¹üÀ§)¿¡ À־ ÀÌ¿ëÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
/*****************************************************************************
* FUNCTION: GetPciInteruptLevel
* PARAMETERS: 1. PCI Vendor ID
* 2. PCI Device ID
* RETURNS: encode µÈ ÀÎÅÍ·´Æ® ·¹º§, ¶Ç´Â ½ÇÆÐ½Ã 0xffff
\*****************************************************************************/
WORD GetPciInterruptLevel( WORD wPciVendorId, WORD wPciDeviceId )
{
PCIDEV dev;
WORD level;
BYTE irq;
dev.wVendorId = wPciVendorId;
dev.wDeviceId = wPciDeviceId;
dev.wDeviceIndex= 0; // óÀ½¿¡ °ËÃâµÈ µð¹ÙÀ̽º
if (!PciFindDevice(&dev))
return 0xFFFF; // µð¹ÙÀ̽º´Â ¹ß°ßµÇÁö ¾Ê´Â´Ù
if (dev.byIntLine == 0 || dev.byIntLine == 255)
return 0xFFFF; // ÀÌ µð¹ÙÀ̽º¿¡´Â IRQ°¡ ¾ø´ÂÁö, ÀÎÁ¤¹ÞÁö ¸øÇÑ IRQÄ¡ÀÌ´Ù
// ÀÎÅÍ·´Æ® ·¹º§ÀÇ ²¨³»
irq = dev.byIntLine;
level = (irq < 8) ? (irq*16 + 8) : ((1 + irq/8) * 16 + (irq % 8));
return level;
}
INtime 3.0 ¿¡¼´Â PCI ¶óÀ̺귯¸® ÄÝ¿¡ API°¡ Ãß°¡µÇ¾ú½À´Ï´Ù. INtime 3.0 °³¹ß ȯ°æ»ó¿¡¼ Àü¼úÀÇ ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ
Ãâ·ÂµË´Ï´Ù£º
/*****************************************************************************
* FUNCTION: GetPciInteruptLevel
* PARAMETERS: 1. PCI Vendor ID
* 2. PCI Device ID
* RETURNS: encode µÈ ÀÎÅÍ·´Æ® ·¹º§, ¶Ç´Â ½ÇÆÐ½Ã 0xffff
\*****************************************************************************/
WORD GetPciInterruptLevel( WORD wPciVendorId, WORD wPciDeviceId )
{
PCIDEV dev;
WORD level;
BYTE irq;
dev.wVendorId = wPciVendorId;
dev.wDeviceId = wPciDeviceId;
dev.wDeviceIndex= 0; // óÀ½¿¡ °ËÃâµÈ µð¹ÙÀ̽º
if (!PciFindDevice(&dev))
return 0xFFFF; // µð¹ÙÀ̽º´Â ¹ß°ßµÇÁö ¾Ê´Â´Ù
// PCI µð¹ÙÀ̽ºÀÇ À¯È¿È
PciEnableDevice(&dev);
return PciGetInterruptLevel(&dev);
}
2. ProcessMaxPriority ÄÝÀÇ º¯°æ
- ÀÎÅÍ·´Æ®
󸮸¦ °¡Áö´Â ¾îÇø®ÄÉÀÌ¼Ç Äڵ尡 ÀÎÅÍ·´Æ® ½º·¹µå¸¦ »ý¼ºÇϱâ À§Çؼ, ¹Ì¸® RTÇÁ·Î¼¼½º¿¡ ¿ë¼µÇ´Â »óÇÑ priorityÀÇ º¯°æÀ»
½Ç½ÃÇϰí ÀÖÀ» °ÍÀÔ´Ï´Ù.INtime2.23 ¹öÁ¯ ÀÌÈÄ¿¡¼´Â ÀÌ priority »óÇÑ¿¡ ÀÇÇØ ³ôÀº ¼³Á¤À» ½Ç½ÃÇÏ´Â °ÍÀÌ
ÇÊ¿äÇß½À´Ï´Ù.
ProcessMaxPriority( NULL_RTHANDLE ,0 ); // Priority »óÇÑÀ» öÆó
3. RSI µå¶óÀ̹öÀÇ ¾÷µ¥ÀÌÆ®
Æó»ç RSI µå¶óÀ̹ö Á¦Ç°À» 2.23 ¹öÁ¯ ÀÌÀü¿¡ ÀÌ¿ëÇϽðí ÀÖ¾úÀ» °æ¿ì, ÀÌ»ó°ú °°Àº ¼öÁ¤ÀÌ º£Ç®¾îÁø µå¶óÀ̹ö ¹öÁ¯¿¡ ¾÷µ¥ÀÌÆ®¸¦ ÇÊ¿ä·Î
ÇÏ´Â °æ¿ì°¡ Àֱ⠶§¹®¿¡, »ó´ãÇØ ÁֽʽÿÀ.
|
HOME
| INtime
|