XGATE semaphore question

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

XGATE semaphore question

跳至解决方案
584 次查看
roberthiebert
Senior Contributor I

MC9S12XEP100, CW Special Edition, USBDM, XGATE in RAM, coding in relocatable assembler.

I have a project that was written in absolute assembler which uses a lot of interrupts. It runs just fine now, but I want to incorporate XGATE to handle most, if not all of the interrupts. Why? Probably just to see if I can. To that end, I have been able to convert the project to relocatable assembler, (which wasn't easy for me) but it seems to work.

Anyway, I spend a lot of time studying the reference manuals and AN2685, but I 'm still not quite clear on the basics of XGATE semaphores. 

When I change an interrupt service routine to be serviced by XGATE instead of the CPU, I have read that semaphores need to be involved, but I m not clear under just what circumstances.

Do they need to be used just when a variable is modified within an ISR serviced by XGATE, and, modified by an ISR service by the CPU?

Or.

Also, when a variable is modified within an ISR serviced by XGATE, but it is only used by the CPU, but not modified?

Regards,

Robert 

0 项奖励
回复
1 解答
555 次查看
lama
NXP TechSupport
NXP TechSupport

Hi,

Semaphores are needed only when both cores (S12X and XGATE) access the same shared resource, typically a variable in RAM. The are needed to avoid simultaneous R/W from both cores. For example, CPU writes some data in one or two steps and XGATE reads them at the same moment. Data consistency is not guaranteed.

 

Use semaphores when:

  1. A variable is modified by both XGATE and S12X ISRs.

Example: A status flag or counter updated by both cores. Or writing to a port.

  1. A variable is modified by one core and read by the other, and the read must be consistent.

Example: A buffer index updated by XGATE and read by S12X in a loop.

You do not need semaphores when:

  • A variable is only modified by XGATE, and only read by S12X, and consistency is not critical (e.g., occasional stale reads are acceptable).
  • A variable is only accessed by one core (either read or write).

 

Note, I found in my old code following. It is probably not important for some mask sets but better to implement to be sure it works everywhere.

....  *.cxgate module

interrupt void PIT0isr(void)

{

      //--- Protected software region starts     // AN2685.pdf

     //-----------------------------------------

      // use this

      asm LOOP1:

      asm SSEM #0 // try to lock semaphore 0

      asm SSEM #0 // try to lock semaphore 0     // once more due to internal silicon bug

      asm BCC LOOP1 // retry if locked

      //-----------------------------------------

      //or this

      //asm SSEM #0 // try to lock semaphore 0

      //asm SSEM #0 // try to lock semaphore 0     // once more due to internal silicon bug

      //asm BCC PIT0isr_RTI // return without flag clearing to enable service of an interrupt with higher priority

      //-----------------------------------------

 

    ....

    .....

    ....

      //-----------------------------------------
      asm CSEM #0 // release semaphore
      //-----------------------------------------

asm PIT0isr_RTI:

      //-----------------------------------------
      PITTF = 0x01; // clear interrupt flag of PIT0isr

}

Best regards,

Ladislav

在原帖中查看解决方案

0 项奖励
回复
2 回复数
556 次查看
lama
NXP TechSupport
NXP TechSupport

Hi,

Semaphores are needed only when both cores (S12X and XGATE) access the same shared resource, typically a variable in RAM. The are needed to avoid simultaneous R/W from both cores. For example, CPU writes some data in one or two steps and XGATE reads them at the same moment. Data consistency is not guaranteed.

 

Use semaphores when:

  1. A variable is modified by both XGATE and S12X ISRs.

Example: A status flag or counter updated by both cores. Or writing to a port.

  1. A variable is modified by one core and read by the other, and the read must be consistent.

Example: A buffer index updated by XGATE and read by S12X in a loop.

You do not need semaphores when:

  • A variable is only modified by XGATE, and only read by S12X, and consistency is not critical (e.g., occasional stale reads are acceptable).
  • A variable is only accessed by one core (either read or write).

 

Note, I found in my old code following. It is probably not important for some mask sets but better to implement to be sure it works everywhere.

....  *.cxgate module

interrupt void PIT0isr(void)

{

      //--- Protected software region starts     // AN2685.pdf

     //-----------------------------------------

      // use this

      asm LOOP1:

      asm SSEM #0 // try to lock semaphore 0

      asm SSEM #0 // try to lock semaphore 0     // once more due to internal silicon bug

      asm BCC LOOP1 // retry if locked

      //-----------------------------------------

      //or this

      //asm SSEM #0 // try to lock semaphore 0

      //asm SSEM #0 // try to lock semaphore 0     // once more due to internal silicon bug

      //asm BCC PIT0isr_RTI // return without flag clearing to enable service of an interrupt with higher priority

      //-----------------------------------------

 

    ....

    .....

    ....

      //-----------------------------------------
      asm CSEM #0 // release semaphore
      //-----------------------------------------

asm PIT0isr_RTI:

      //-----------------------------------------
      PITTF = 0x01; // clear interrupt flag of PIT0isr

}

Best regards,

Ladislav

0 项奖励
回复
538 次查看
roberthiebert
Senior Contributor I

Hi Ladislav,

Thanks for the clarification. That's how I thought it should work, but I wasn't sure.

Regards,

Robert

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2195354%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EXGATE%20%E4%BF%A1%E5%8F%B7%E9%97%AE%E9%A2%98%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2195354%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EMC9S12XEP100%E3%80%81CW%20%E7%89%B9%E5%88%AB%E7%89%88%E3%80%81USBDM%E3%80%81RAM%20%E4%B8%AD%E7%9A%84%20XGATE%E3%80%81%E5%8F%AF%E9%87%8D%E5%AE%9A%E4%BD%8D%E6%B1%87%E7%BC%96%E5%99%A8%E7%BC%96%E7%A0%81%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E6%9C%89%E4%B8%80%E4%B8%AA%E7%94%A8%E7%BB%9D%E5%AF%B9%E6%B1%87%E7%BC%96%E7%A8%8B%E5%BA%8F%E7%BC%96%E5%86%99%E7%9A%84%E9%A1%B9%E7%9B%AE%EF%BC%8C%E5%85%B6%E4%B8%AD%E4%BD%BF%E7%94%A8%E4%BA%86%E5%A4%A7%E9%87%8F%E4%B8%AD%E6%96%AD%E3%80%82%E7%8E%B0%E5%9C%A8%E8%BF%90%E8%A1%8C%E5%BE%97%E5%BE%88%E5%A5%BD%EF%BC%8C%E4%BD%86%E6%88%91%E6%83%B3%E7%BB%93%E5%90%88%20XGATE%20%E6%9D%A5%E5%A4%84%E7%90%86%E5%A4%A7%E9%83%A8%E5%88%86%EF%BC%88%E5%A6%82%E6%9E%9C%E4%B8%8D%E6%98%AF%E5%85%A8%E9%83%A8%EF%BC%89%E4%B8%AD%E6%96%AD%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F%E4%B9%9F%E8%AE%B8%E5%8F%AA%E6%98%AF%E6%83%B3%E7%9C%8B%E7%9C%8B%E6%88%91%E8%83%BD%E4%B8%8D%E8%83%BD%E5%81%9A%E5%88%B0%E3%80%82%E4%B8%BA%E6%AD%A4%EF%BC%8C%E6%88%91%E5%B7%B2%E7%BB%8F%E8%83%BD%E5%A4%9F%E5%B0%86%E9%A1%B9%E7%9B%AE%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8F%AF%E9%87%8D%E7%BD%AE%E6%B1%87%E7%BC%96%E7%A8%8B%E5%BA%8F%EF%BC%88%E8%BF%99%E5%AF%B9%E6%88%91%E6%9D%A5%E8%AF%B4%E5%B9%B6%E4%B8%8D%E5%AE%B9%E6%98%93%EF%BC%89%EF%BC%8C%E4%BD%86%E5%AE%83%E4%BC%BC%E4%B9%8E%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C%E3%80%82%3C%2FP%3E%3CP%3E%E6%97%A0%E8%AE%BA%E5%A6%82%E4%BD%95%EF%BC%8C%E6%88%91%E8%8A%B1%E4%BA%86%E5%BE%88%E5%A4%9A%E6%97%B6%E9%97%B4%E7%A0%94%E7%A9%B6%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%E5%92%8C%20AN2685%EF%BC%8C%E4%BD%86%E6%88%91%E4%BB%8D%E7%84%B6%E4%B8%8D%E5%A4%AA%E6%B8%85%E6%A5%9A%20XGATE%20%E4%BF%A1%E5%8F%B7%E9%87%8F%E7%9A%84%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E3%80%82%3C%2FP%3E%3CP%3E%E5%BD%93%E6%88%91%E6%9B%B4%E6%94%B9%E4%B8%AD%E6%96%AD%E6%9C%8D%E5%8A%A1%E4%BE%8B%E7%A8%8B%EF%BC%8C%E4%BD%BF%E5%85%B6%E7%94%B1%20XGATE%20%E8%80%8C%E4%B8%8D%E6%98%AF%20CPU%20%E6%8F%90%E4%BE%9B%E6%9C%8D%E5%8A%A1%E6%97%B6%EF%BC%8C%E6%88%91%E8%AF%BB%E5%88%B0%20semaphores%20%E9%9C%80%E8%A6%81%E5%8F%82%E4%B8%8E%E5%85%B6%E4%B8%AD%EF%BC%8C%E4%BD%86%E6%88%91%E4%B8%8D%E6%B8%85%E6%A5%9A%E5%9C%A8%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%E4%B8%8B%E3%80%82%3C%2FP%3E%3CP%3E%E6%98%AF%E5%90%A6%E5%8F%AA%E6%9C%89%E5%9C%A8%20XGATE%20%E6%9C%8D%E5%8A%A1%E7%9A%84%20ISR%20%E4%B8%AD%E4%BF%AE%E6%94%B9%E5%8F%98%E9%87%8F%E5%92%8C%20CPU%20%E6%9C%8D%E5%8A%A1%E7%9A%84%20ISR%20%E4%B8%AD%E4%BF%AE%E6%94%B9%E5%8F%98%E9%87%8F%E6%97%B6%E6%89%8D%E9%9C%80%E8%A6%81%E4%BD%BF%E7%94%A8%E5%AE%83%E4%BB%AC%EF%BC%9F%3C%2FP%3E%3CP%3EOr%E3%80%82%3C%2FP%3E%3CP%3E%E5%8F%A6%E5%A4%96%EF%BC%8C%E5%BD%93%E4%B8%80%E4%B8%AA%E5%8F%98%E9%87%8F%E5%9C%A8%20XGATE%20%E6%9C%8D%E5%8A%A1%E7%9A%84%20ISR%20%E4%B8%AD%E8%A2%AB%E4%BF%AE%E6%94%B9%EF%BC%8C%E4%BD%86%E5%AE%83%E5%8F%AA%E8%A2%AB%20CPU%20%E4%BD%BF%E7%94%A8%E8%80%8C%E6%9C%AA%E8%A2%AB%E4%BF%AE%E6%94%B9%E6%97%B6%EF%BC%9F%3C%2FP%3E%3CP%3E%E6%AD%A4%E8%87%B4%EF%BC%8C%3C%2FP%3E%3CP%3E%E7%BD%97%E4%BC%AF%E7%89%B9%20%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2195950%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20XGATE%20semaphore%20question%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2195950%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%E6%8B%89%E8%BF%AA%E6%96%AF%E6%8B%89%E5%A4%AB%3C%2FP%3E%3CP%3E%E8%B0%A2%E8%B0%A2%E4%BD%A0%E7%9A%84%E6%BE%84%E6%B8%85%E3%80%82%E6%88%91%E6%83%B3%E5%BA%94%E8%AF%A5%E6%98%AF%E8%BF%99%E6%A0%B7%E7%9A%84%EF%BC%8C%E4%BD%86%E6%88%91%E4%B8%8D%E7%A1%AE%E5%AE%9A%E3%80%82%3C%2FP%3E%3CP%3E%E6%AD%A4%E8%87%B4%EF%BC%8C%3C%2FP%3E%3CP%3E%E7%BD%97%E4%BC%AF%E7%89%B9%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2195763%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20XGATE%20semaphore%20question%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2195763%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%82%A8%E5%A5%BD%EF%BC%8C%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3E%E5%8F%AA%E6%9C%89%E5%BD%93%E4%B8%A4%E4%B8%AA%E5%86%85%E6%A0%B8%EF%BC%88S12X%20%E5%92%8C%20XGATE%EF%BC%89%E8%AE%BF%E9%97%AE%E7%9B%B8%E5%90%8C%E7%9A%84%E5%85%B1%E4%BA%AB%E8%B5%84%E6%BA%90%3C%2FSTRONG%3E%EF%BC%88%E9%80%9A%E5%B8%B8%E6%98%AF%20RAM%20%E4%B8%AD%E7%9A%84%E5%8F%98%E9%87%8F%EF%BC%89%E6%97%B6%EF%BC%8C%E6%89%8D%E9%9C%80%E8%A6%81%20Semaphores%E3%80%82%E9%9C%80%E8%A6%81%E5%AE%83%E4%BB%AC%E6%9D%A5%E9%81%BF%E5%85%8D%E4%B8%A4%E4%B8%AA%E5%86%85%E6%A0%B8%E5%90%8C%E6%97%B6%E8%BF%9B%E8%A1%8C%20R%2FW%20%E6%93%8D%E4%BD%9C%E3%80%82%E4%BE%8B%E5%A6%82%EF%BC%8CCPU%20%E5%88%86%E4%B8%80%E5%88%B0%E4%B8%A4%E6%AD%A5%E5%86%99%E5%85%A5%E6%9F%90%E4%BA%9B%E6%95%B0%E6%8D%AE%EF%BC%8CXGATE%20%E5%9C%A8%E5%90%8C%E4%B8%80%E6%97%B6%E5%88%BB%E8%AF%BB%E5%8F%96%E8%BF%99%E4%BA%9B%E6%95%B0%E6%8D%AE%E3%80%82%E6%95%B0%E6%8D%AE%E4%B8%80%E8%87%B4%E6%80%A7%E5%BE%97%E4%B8%8D%E5%88%B0%E4%BF%9D%E8%AF%81%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%3CSTRONG%3E%E5%9C%A8%E4%B8%8B%E5%88%97%E6%83%85%E5%86%B5%E4%B8%8B%E4%BD%BF%E7%94%A8%E4%BF%A1%E5%8F%B7%E4%BC%A0%E9%80%92%E5%99%A8%3C%2FSTRONG%3E%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3E%3CSTRONG%3EXGATE%20%E5%92%8C%20S12X%20ISR%20%E9%83%BD%E4%BC%9A%E4%BF%AE%E6%94%B9%E5%8F%98%E9%87%8F%E3%80%82%3C%2FSTRONG%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%E4%BE%8B%E5%A6%82%E7%94%B1%E4%B8%A4%E4%B8%AA%E5%86%85%E6%A0%B8%E6%9B%B4%E6%96%B0%E7%9A%84%E7%8A%B6%E6%80%81%E6%A0%87%E5%BF%97%E6%88%96%E8%AE%A1%E6%95%B0%E5%99%A8%E3%80%82%E6%88%96%E5%86%99%E5%85%A5%E7%AB%AF%E5%8F%A3%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3E%3CSTRONG%3E%E4%B8%80%E4%B8%AA%E6%A0%B8%E5%BF%83%E4%BF%AE%E6%94%B9%E4%B8%80%E4%B8%AA%E5%8F%98%E9%87%8F%EF%BC%8C%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%A0%B8%E5%BF%83%E8%AF%BB%E5%8F%96%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%8F%98%E9%87%8F%3C%2FSTRONG%3E%EF%BC%8C%E8%80%8C%E4%B8%94%E8%AF%BB%E5%8F%96%E5%BF%85%E9%A1%BB%E4%B8%80%E8%87%B4%E3%80%82%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%E7%A4%BA%E4%BE%8B%E7%BC%93%E5%86%B2%E5%8C%BA%E7%B4%A2%E5%BC%95%E7%94%B1%20XGATE%20%E6%9B%B4%E6%96%B0%EF%BC%8C%E5%B9%B6%E7%94%B1%20S12X%20%E5%9C%A8%E5%BE%AA%E7%8E%AF%E4%B8%AD%E8%AF%BB%E5%8F%96%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3E%E5%9C%A8%E4%B8%8B%E5%88%97%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E6%82%A8%3CEM%3E%E4%B8%8D%3C%2FEM%3E%E9%9C%80%E8%A6%81%20semaphores%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%E5%8F%98%E9%87%8F%3CSTRONG%3E%E4%BB%85%E7%94%B1%20XGATE%20%E4%BF%AE%E6%94%B9%3C%2FSTRONG%3E%EF%BC%8C%3CSTRONG%3E%E4%BB%85%E7%94%B1%20S12X%20%E8%AF%BB%E5%8F%96%3C%2FSTRONG%3E%EF%BC%8C%3CSTRONG%3E%E4%B8%80%E8%87%B4%E6%80%A7%E5%B9%B6%E4%B8%8D%E9%87%8D%E8%A6%81%3C%2FSTRONG%3E%EF%BC%88%E4%BE%8B%E5%A6%82%EF%BC%8C%E5%81%B6%E5%B0%94%E7%9A%84%E9%99%88%E6%97%A7%E8%AF%BB%E5%8F%96%E6%98%AF%E5%8F%AF%E4%BB%A5%E6%8E%A5%E5%8F%97%E7%9A%84%EF%BC%89%E3%80%82%3C%2FLI%3E%0A%3CLI%3E%E4%B8%80%E4%B8%AA%E5%8F%98%E9%87%8F%3CSTRONG%3E%E5%8F%AA%E8%83%BD%E8%A2%AB%E4%B8%80%E4%B8%AA%E6%A0%B8%E5%BF%83%E8%AE%BF%E9%97%AE%3C%2FSTRONG%3E%EF%BC%88%E8%AF%BB%E5%8F%96%E6%88%96%E5%86%99%E5%85%A5%EF%BC%89%E3%80%82%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E6%B3%A8%E6%84%8F%EF%BC%8C%E6%88%91%E5%8F%91%E7%8E%B0%E6%88%91%E7%9A%84%E6%97%A7%E4%BB%A3%E7%A0%81%E5%A6%82%E4%B8%8B%E3%80%82%E8%BF%99%E5%AF%B9%E6%9F%90%E4%BA%9B%E9%9D%A2%E5%85%B7%E5%A5%97%E4%BB%B6%E5%8F%AF%E8%83%BD%E5%B9%B6%E4%B8%8D%E9%87%8D%E8%A6%81%EF%BC%8C%E4%BD%86%E6%9C%80%E5%A5%BD%E8%BF%98%E6%98%AF%E5%AE%9E%E6%96%BD%E4%B8%80%E4%B8%8B%EF%BC%8C%E4%BB%A5%E7%A1%AE%E4%BF%9D%E5%AE%83%E5%9C%A8%E6%89%80%E6%9C%89%E5%9C%B0%E6%96%B9%E9%83%BD%E8%83%BD%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%E3%80%82%3C%2FP%3E%0A%3CP%3E....%20%20*.cxgate%E6%A8%A1%E5%9D%97%3C%2FP%3E%0A%3CP%3E%E4%B8%AD%E6%96%AD%20void%20PIT0isr(void)%3C%2FP%3E%0A%3CP%3E%7B%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%2F%2F---%20%E5%8F%97%E4%BF%9D%E6%8A%A4%E8%BD%AF%E4%BB%B6%E5%8C%BA%E5%9F%9F%E5%BC%80%E5%A7%8B%20%2F%2F%20AN2685.pdf%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%2F%2F-----------------------------------------%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%2F%2F%20%E4%BD%BF%E7%94%A8%E8%BF%99%E4%B8%AA%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20asm%20LOOP1%EF%BC%9A%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20asm%20SSEM%20%230%20%2F%2F%20%E5%B0%9D%E8%AF%95%E9%94%81%E5%AE%9A%E5%AF%84%E5%AD%98%E5%99%A8%200%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20asm%20SSEM%20%230%20%2F%2F%20%E7%94%B1%E4%BA%8E%E5%86%85%E9%83%A8%E7%A1%85%E9%94%99%E8%AF%AF%EF%BC%8C%E5%86%8D%E6%AC%A1%E5%B0%9D%E8%AF%95%E9%94%81%E5%AE%9A%E5%AF%84%E5%AD%98%E5%99%A8%200%20%2F%2F%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20asm%20BCC%20LOOP1%20%2F%2F%20%E9%94%81%E5%AE%9A%E5%90%8E%E9%87%8D%E8%AF%95%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%2F%2F-----------------------------------------%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%2F%2For%20this%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%2F%2Fasm%20SSEM%20%230%20%2F%2F%20%E5%B0%9D%E8%AF%95%E9%94%81%E5%AE%9A%E5%AF%84%E5%AD%98%E5%99%A8%200%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%2F%2Fasm%20SSEM%20%230%20%2F%2F%20%E7%94%B1%E4%BA%8E%E5%86%85%E9%83%A8%E7%A1%85%E9%94%99%E8%AF%AF%EF%BC%8C%E5%86%8D%E6%AC%A1%E5%B0%9D%E8%AF%95%E9%94%81%E5%AE%9A%E5%AF%84%E5%AD%98%E5%99%A8%200%20%2F%2F%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%2F%2Fasm%20BCC%20PIT0isr_RTI%20%2F%2F%20%E8%BF%94%E5%9B%9E%E6%97%B6%E4%B8%8D%E6%B8%85%E9%99%A4%E6%A0%87%E5%BF%97%EF%BC%8C%E4%BB%A5%E4%BE%BF%E4%B8%BA%E4%BC%98%E5%85%88%E7%BA%A7%E6%9B%B4%E9%AB%98%E7%9A%84%E4%B8%AD%E6%96%AD%E6%8F%90%E4%BE%9B%E6%9C%8D%E5%8A%A1%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%2F%2F-----------------------------------------%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%20%20%20%20....%3C%2FP%3E%0A%3CP%3E%20%20%20%20.....%3C%2FP%3E%0A%3CP%3E%20%20%20%20....%3C%2FP%3E%0A%3CP%3E%2F%2F---------------------------------------------------------------------------------------------------------------------------------------------------%3CBR%20%2F%3E%20%7C%20%3CBR%20%2F%3E%20%230%3C%2FP%3E%0A%3CP%3Easm%20PIT0isr_RTI%EF%BC%9A%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%2F%2F-----------------------------------------%3CBR%20%2F%3E%20PITTF%20%3D%200x01%3B%20%2F%2F%20%E6%B8%85%E9%99%A4%20PIT0isr%20%E7%9A%84%E4%B8%AD%E6%96%AD%E6%A0%87%E5%BF%97%3C%2FP%3E%0A%3CP%3E%7D%3C%2FP%3E%0A%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%0A%3CP%3E%E6%8B%89%E5%90%89%E6%96%AF%E6%8B%89%E5%A4%AB%3C%2FP%3E%3C%2FLINGO-BODY%3E