INtime Tech

INtime Top


H6-2.  ÀÎÅÍ·´Æ® 󸮱â¿Í ÀÎÅÍ·´Æ® ½º·¹µå


 

ÀÎÅÍ·´Æ® Çڵ鷯¿¡ ´ëÇØ

INtimeÀÇ ÀÎÅÍ·´Æ® 󸮴Â, ¿ÜºÎ·Î ºÎÅÍÀÇ ³¢¾îµå´Â ½ÅÈ£ ÀԷ¿¡ ´ëÀÀÇØ, Áï¼®¿¡¼­ 󸮸¦ ½Ç½ÃÇÏ´Â ¡¸ÀÎÅÍ·´Æ® 󸮱⡹¶ó°í, Çڵ鷯·ÎºÎÅÍ ½ÅÈ£¸¦ º¸³»Áö´Â °ÍÀ¸·Î ±âµ¿ÇØ INtime APIµîÀÌ »ç¿ë °¡´ÉÇÏ´Ù ¡¸ÀÎÅÍ·´Æ® ½º·¹µå¡¹ÀÇ 2°³¿¡ ÀÇÇØ¼­ ±¸¼ºµË´Ï´Ù. ÀÎÅÍ·´Æ® ½º·¹µå´Â ±âµ¿ Á÷ÈÄ, ½º·¹µå·Î ´ë±âÇÏ´Â ÀÎÅÍ·´Æ® ·¹º§µî°ú ÇÔ²², ±âµ¿ ¹æ¾Æ¼è°¡ µÇ´Â ÀÎÅÍ·´Æ® 󸮱⸦ µî·ÏÇÕ´Ï´Ù(SetRtInterruptHandler). ÀÎÅÍ·´Æ® ½º·¹µå´Â ½º·¹µå¸£ÇÁ ó¸® Áß¿¡¼­, Çڵ鷯·Î ºÎÅÍÀÇ ½Ã±×³Î ´ë±â ó¸®(WaitForRtInterrupt)¸¦ ½Ç½ÃÇÕ´Ï´Ù.

  • 1. CreateRtThread ±×¸®°í ½º·¹µå¸¦ ±âµ¿(ÈÄ¿¡ ÀÎÅÍ·´Æ® ½º·¹µå°¡ µÈ´Ù)

  • 2. »ý¼ºÇÑ ½º·¹µå¿¡ ´ëÇØSetRtInterruptHandler¿¡ ÀÇÇØ ÀÎÅÍ·´Æ® 󸮱⠵î·Ï

  • 3. µ¿½Ã¿¡ ±× ½º·¹µå´Â ÀÎÅÍ·´Æ® ½º·¹µå°¡ µÈ´Ù

  • 4. ÀÎÅÍ·´Æ® ½º·¹µå´ÂWaitForRtInterruptÀ» ÄÝ ÇØ ÀÎÅÍ·´Æ® ¹ß»ýÀ» ±â´Ù¸°´Ù

  • 5. ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â ´ë·Î ÀÎÅÍ·´Æ® 󸮱Ⱑ ÄÝ µÇ´Â

  • 6. ÀÎÅÍ·´Æ® Á¾·á ó¸®

    • ±× 1£ºÇڵ鷯·ÎSignalEndOfRtInterruptÄÝ=ÀÎÅÍ·´Æ® 󸮱â ó¸® Á¾·á

    • ±× 2£ºÇڵ鷯·ÎSignalRtInterruptThread=ÀÎÅÍ·´Æ® 󸮱â ó¸® Á¾·á£«ÀÎÅÍ·´Æ® ½º·¹µå´ÂWaitForRtInterruptÀ¸·ÎºÎÅÍ º¹±Í

 

ÀÎÅÍ·´Æ® 󸮱â

¾Æ·¡¿¡ ÀÎÅÍ·´Æ® 󸮱⠿¹¸¦ ³ªÅ¸³À´Ï´Ù. ÀÎÅÍ·´Æ® 󸮱âÁß¿¡ ±â¼úÇÒ ¼ö ÀÖ´Â °ÍÀº ÇÑÁ¤µÇ¾î ÀÖ½À´Ï´Ù. INtime API´Â ÀÎÅÍ·´Æ® 󸮱⳻¿¡¼­ ÄÝ ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÎÅÍ·´Æ® 󸮱⳻¿¡¼­ ÄÝ °¡´ÉÇÑ °ÍÀº ÀÌÇÏ¿Í °°Àº °ÍÀ¸·Î ÇÑÁ¤µË´Ï´Ù£º

  • EnterRtInterrupt...ÄÝ¿øÇÁ·Î¼¼½ºÀÇ µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®¸¦ ·ÎµåÇØ, ÇÁ·Î¼¼½º°¡ °¡Áö´Â Á¤Àû µ¥ÀÌÅÍ¿¡ÀÇ ¾×¼¼½º¸¦ °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.

  • SignalRtInterruptThread...ÀÎÅÍ·´Æ® Á¾·á(EOI) ½Ã±×³ÎÀ» Çϵå¿þ¾î¿¡ ¼Û½ÅÇØ, ÁöÁ¤ÇÑ ·¹º§¿¡ °ü·ÃÇÏ´Â ÀÎÅÍ·´Æ® ½º·¹µå¸¦ ±âµ¿ÇÕ´Ï´Ù.

  • GetRtInterruptLevel...ÀÎÅÍ·´Æ®ÀÇ ¹ß»ýÇϰí ÀÖ´Â encode ·¹º§Ä¡ÀÇ Ãëµæ

  • SignalEndOfRtInterrupt...EOI ½Ã±×³ÎÀ» Çϵå¿þ¾î¿¡ ¼Û½ÅÇÕ´Ï´Ù.

__INTERRUPT void Int1Handler(void)
 {
   __INTERRUPT_PROLOG();
     EnterRtInterrupt(LEVEL);
     // ½ÅÈ£ 1 Ãâ·Â
     outbyte( LPTPORT ,0x01 );
     SignalRtInterruptThread(LEVEL);
   __INTERRUPT_RETURN();
 }

 

ÀÎÅÍ·´Æ® ½º·¹µå

¾Æ·¡¿¡ ÀÎÅÍ·´Æ® ½º·¹µå¿¹¸¦ ³ªÅ¸³À´Ï´Ù. ÀÎÅÍ·´Æ® ½º·¹µå´Â ½º½º·ÎÀÇ ±âµ¿ ¹æ¾Æ¼è°¡ µÇ´Â ÀÎÅÍ·´Æ® 󸮱⸦ µî·ÏÇØ, ó¸®Áß Çڵ鷯·ÎºÎÅÍÀÇ ½Ã±×³ÎÀ» ´ë±âÇÕ´Ï´Ù. ÀÎÅÍ·´Æ® ½º·¹µå¿¡ ´ëÇØ¼­´Â, INtime API¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.   Çڵ鷯·ÎºÎÅÍ ±âµ¿ ½Ã±×³ÎÀ» ¹ÞÀº ÀÎÅÍ·´Æ® ½º·¹µå³»¿¡¼­ API¸¦ »ç¿ëÇÑ Ã³¸®¸¦ ½Ç½ÃÇϵµ·Ï ÇØ ÁÖ¼¼¿ä.

void Int1Thread(void)
 {
    if (!SetRtInterruptHandler(LEVEL, 1, Int1Handler))
        Fail("Cannot set interrupt task for IRQ7");
    
    while (1)
    {
        if (!WaitForRtInterrupt(LEVEL, WAIT_FOREVER))
            Fail("Cannot wait for interrupt signal for IRQ7");
            
        // ½ÅÈ£ 2 Ãâ·Â
        outbyte( LPTPORT ,0x02 );
    }
 }

ÀÎÅÍ·´Æ® ½º·¹µåÇÁ¶óÀÌ¿À¸®Æ¼¿¡ ´ëÇØ

ÀÎÅÍ·´Æ® ½º·¹µåÀÇ priorityÄ¡´Â »ç¿ëÇÏ´Â ÀÎÅÍ·´Æ® ÄÜÆ®·Ñ·¯¿¡ ÀÇÇØ ´Ù¸¨´Ï´Ù. PIC ¸ðµå(Á¾·¡0-15±îÁöÀÇ IRQ ±¸¼º)ÀÇ °æ¿ì °íÁ¤ÀÌ µÇ¾î, APIC ¸ðµå(APIC¸¦ »ç¿ëÇÑ ¸ðµå)ÀÇ °æ¿ì, °¡º¯ÀÌ µË´Ï´Ù.

 

  • PIC ¸ðµå

    SetRtInterruptHandler() ÄÝ¿¡ ÀÇÇØ ÀÎÅÍ·´Æ® ½º·¹µå·Î¼­ »ý¼ºµÇ´Â °æ¿ì, INtime Ä¿³ÎÀº ÀÎÅÍ·´Æ® ·¹º§¿¡ µû¶ó priority¸¦ ¼³Á¤ÇÕ´Ï´Ù. ÀÌÇÏÀÇ Ç¥´Â PIC ¸ðµå½ÃÀÇ encode ·¹º§(SetRtInterruptHandler() ÄÝÀÇ ÆÄ¶ó¹ÌÅÍ wLevel), ¸¶½ºÅÍ·½½·¹À̺ê ÀÎÅÍ·´Æ® ·¹º§, IDT ½½·Ô°ú °ü·ÃÇÏ´Â ÀÎÅÍ·´Æ® ½º·¹µåÀÇ priorityÀÇ °ü°è¸¦ ³ªÅ¸³½ °ÍÀÔ´Ï´Ù£º

IRQ

PIC Level
Master/Slave

INtime
Encoding

IDT
Slot

Interrupt
Thread Priority

0

M0

08H

48

18

1

M1

18H

49

34

3

M3

38H

51

66

4

M4

48H

52

82

5

M5

58H

53

98

6

M6

68H

54

114

7

M7

78H

55

130

8

S0

20H

56

36

9

S1

21H

57

38

10

S2

22H

58

40

11

S3

23H

59

42

12

S4

24H

60

44

13

S5

25H

61

46

14

S6

26H

62

48

15

S7

27H

63

50

  • APIC ¸ðµå

    APIC ¸ðµåÀÇ °æ¿ì, º¤ÅÍÄ¡°¡ ºñ½Ò Á¤µµ ³ôÀº priority·Î ¼³Á¤µË´Ï´Ù. ¹«¾ùº¸´Ù ³ôÀº priority·Î ¼³Á¤µÇ¾î ÀÖ´Â °ÍÀÌ RTŬ¶ôÀÔ´Ï´Ù. ÀÌ ±¸Á¶´Â PIC ¸ðµå¿Í´Â ¿ÏÀüÈ÷ °Å²Ù·Î µË´Ï´Ù. INtime¿¡ ÀÇÇÑ ÀÎÅÍ·´Æ® ÃʱâÈ­½Ã¿¡´Â APICÀÇ IRQ´Â °íÁ¤ÀÇ º¤Å͸¦ °¡ÁöÁö ¾Ê½À´Ï´Ù. APIC ÀÎÅÍ·´Æ®ÀÇ ÃʱâÈ­½Ã¿¡´Â ´ÙÀ½ÀÇ ºóº¤Å͸¦ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù. PCI ÀÎÅÍ·´Æ®´Â ³ôÀº priority·ÎºÎÅÍ ÇÒ´çÀ» °³½ÃÇØ, ±× °ªÀ» ³»·Á¼­ °©´Ï´Ù. ISA ÀÎÅÍ·´Æ®´Â ³·Àº priority·ÎºÎÅÍ ÇÒ´çÀ» °³½ÃÇØ, ±× °ªÀ» ¿Ã·Á¼­ °©´Ï´Ù.
    INtime Ä¿³ÎÀÇ ±âµ¿½Ã¿¡ À־ÀÇ APICÀÇ ÀÎÅÍ·´Æ® Å×À̺íÀº ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù£º

IRQ

Vector

Thread
Priority

Free

0xf0

130

Free

0xf1

114

Free

0xf2

98

Free

0xf3

83

Free

0xf4

67

Free

0xf5

51

Free

0xf6

50

Free

0xf7

48

Free

0xf8

46

Free

0xf9

44

Free

0xfa

42

Free

0xfb

40

Free

0xfc

38

Free

0xfd

36

Free

0xfe

34

IRQ0

0xff

18

 

ÀÎÅÍ·´Æ® ÀÀ´ä·ÀÎÅÍ·´Æ® 󸮱ⷽº·¹µå Àüȯ ½Ã°£ ÃøÁ¤ÀÎÅÍ·´Æ® ½Ã±×³Î ¹ß»ý ÈÄ, Çڵ鷯°¡ ±âµ¿ÇØ, Çڵ鷯·ÎºÎÅÍ ½º·¹µå°¡ ±âµ¿µË´Ï´Ù. ¿©±â¿¡¼­´Â °¢°¢ °É¸®´Â ó¸® ½Ã°£À» ÃøÁ¤ÇÑ °á°ú¸¦ °ÔÀçÇÕ´Ï´Ù.

ÃøÁ¤ ȯ°æ

OS

INtime2.10J + Windows 2000

CPU

Pentium 800MHz

MEMORY

128MB

IRQ

7(ISA:ÆÐ·¯·²)

°èÃø µ¿ÀÛ

  • ÆÐ·¯·² Æ÷Æ®¿¡´Â ¿ÜºÎ·ÎºÎÅÍÀÇ ÀÎÅÍ·´Æ® ½ÅÈ£¸¦ Á¤±âÀûÀ¸·Î ÀÔ·ÂÇÕ´Ï´Ù.

  • ÆÐ·¯·² Æ÷Æ® ÁÖ¼Ò¿¡ À־ÀÇ Á¦1ºñÆ®¸¦ Çڵ鷯 ºñÆ®, Á¦2ºñÆ®¸¦ ½º·¹µåºøÆ®·Î ÇØ, °¢°¢ Çڵ鷯³», ½º·¹µå³»¿¡¼­ °¢ ºñÆ®¸¦ ON·Î ÇÕ´Ï´Ù.

  • °¢ ºñÆ®´Â logic analyzer¿¡ Á¢¼ÓµÇ¾î Àü±â½ÅÈ£ ÃøÁ¤À» ½Ç½ÃÇØ, ¸ñ½Ã, snapshot¿¡¼­ ±× °èÃøÄ¡¸¦ ¼öÁýÇß½À´Ï´Ù.

  • ÆÐ·¯·² I/OÁö¿¬À» 2.4 us¿Í »óÁ¤ÇØ °èÃøÄ¡¸¦ °¡°øÀÌ ³¡³­ »óÅÂ.¾à 50ȸÀÇ ¸ñ½Ã °èÃø¿¡ ÀÇÇÑ´Ù.

  • À§, ¡¸ÀÎÅÍ·´Æ® 󸮱⡹ ¡¸ÀÎÅÍ·´Æ® ½º·¹µå¡¹·Î °¢°¢ ¼Ò°³Çϰí ÀÖ´Â ¿ø½Ã ÄÚµå´Â ÀÌ °èÃø¿¡ »ç¿ëµÈ °ÍÀÔ´Ï´Ù.

    ÃøÁ¤ °á°ú

 


HOME | INtime