2008년 03월 27일
Nested Interrupt에서
* preemption, subpriority
preemption은 일종의 interrupt priority(최우선순위)인데, interrupt가 같은 레벨의 preemption을 가지게 되는 경우 같은 preemption간의 우선 순위를 결정하기 위해서 subpriority를 둔다. (<- 이게 맞다 ㅋㅋ)
PRIGROUP field is a binary point position indicator for creating subpriorities for
exceptions that share the same pre-emption level. It divides the PRI_n field in the
Interrupt Priority Register into a pre-emption level and a subpriority level.
pre-emption : New exception has higher priority than current exception priority or thread and interrupts current flow.
This is the response to a pended interrupt, causing entry to an ISR if the pended interrupt is higher priority than the active ISR or thread. When one ISR pre-empts another, the interrupts are nested. On exception entry the processor automatically saves processor state, which is pushed on to the stack. In parallel with this, the vector corresponding to the interrupt is fetched. Execution of the first instruction of the ISR starts when processor state is saved and the first instruction of the ISR enters the execute stage of the processor pipeline. The state saving is performed over the System bus and DCode bus. The vector fetch is performed over either the System bus or the ICode bus depending on where the vector table is located, see Vector Table Offset Register on page 8-20.
* application interrupt register가 필요한 이유?
system interrupt (abort, reset등)와 분리되어 사용자가 발생시킬 수 있는 interrupt를 software interrupt또는 application interrupt라고 하고, 이것의 속성을 정할 수 있는 register이다.
* nested interrupt가 발생하는 경우??
nested가 발생하는 이유는 priority가 낮은(즉, 숫자가 큰) 녀석의 interrupt를 실행시키다가, priority가 높은 녀석(즉, 숫자가 낮은) 녀석이 발생되면, 이전의 interrupt를 멈추고 높은 녀석의 interrupt를 실행시킨다. 즉, priority가 낮은 상태에서 priority가 높은 interrupt가 발생할때 nested가 된다.
반대의 경우는 nested가 안되고, 높은 녀석이 끝날때까지 기다렸다가, 끝나면 실행한다.(tail-chaining이 일어난다.)
cf. 동시에 발생한 interrupt에서 preemption level이 같다면, vector number가 작을 수로 우선순위가 높다!!

preemption은 일종의 interrupt priority(최우선순위)인데, interrupt가 같은 레벨의 preemption을 가지게 되는 경우 같은 preemption간의 우선 순위를 결정하기 위해서 subpriority를 둔다. (<- 이게 맞다 ㅋㅋ)
PRIGROUP field is a binary point position indicator for creating subpriorities for
exceptions that share the same pre-emption level. It divides the PRI_n field in the
Interrupt Priority Register into a pre-emption level and a subpriority level.
pre-emption : New exception has higher priority than current exception priority or thread and interrupts current flow.
This is the response to a pended interrupt, causing entry to an ISR if the pended interrupt is higher priority than the active ISR or thread. When one ISR pre-empts another, the interrupts are nested. On exception entry the processor automatically saves processor state, which is pushed on to the stack. In parallel with this, the vector corresponding to the interrupt is fetched. Execution of the first instruction of the ISR starts when processor state is saved and the first instruction of the ISR enters the execute stage of the processor pipeline. The state saving is performed over the System bus and DCode bus. The vector fetch is performed over either the System bus or the ICode bus depending on where the vector table is located, see Vector Table Offset Register on page 8-20.
* application interrupt register가 필요한 이유?
system interrupt (abort, reset등)와 분리되어 사용자가 발생시킬 수 있는 interrupt를 software interrupt또는 application interrupt라고 하고, 이것의 속성을 정할 수 있는 register이다.
* nested interrupt가 발생하는 경우??
nested가 발생하는 이유는 priority가 낮은(즉, 숫자가 큰) 녀석의 interrupt를 실행시키다가, priority가 높은 녀석(즉, 숫자가 낮은) 녀석이 발생되면, 이전의 interrupt를 멈추고 높은 녀석의 interrupt를 실행시킨다. 즉, priority가 낮은 상태에서 priority가 높은 interrupt가 발생할때 nested가 된다.
반대의 경우는 nested가 안되고, 높은 녀석이 끝날때까지 기다렸다가, 끝나면 실행한다.(tail-chaining이 일어난다.)
cf. 동시에 발생한 interrupt에서 preemption level이 같다면, vector number가 작을 수로 우선순위가 높다!!
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- Cortex M3의 중요한 차이점들 by dyanos
- Porting L4/Iguana/Wombat into PXA255-Pro1 by 동근
# by | 2008/03/27 11:54 | Cortex-M3 | 트랙백





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]