2010-05-27 3 views
1

i.mx35 armv6 코어 프로세서로 작업하고 있습니다. 인터럽트 62가 설치되어 있고 호출되는 핸들러가있는 FIQ로 구성되어 있습니다. 현재 나의 핸들러는 출력 핀을 토글하기 만하면 스코프로 레이턴시를 테스트 할 수있다. 아래 코드를 사용하면 FIQ가 트리거되면 가능한 한 빨리 영원히 계속되며 분명히 인정되지 않습니다. Interrupt Force Register를 통해 FIQ를 트리거하고 있으므로 소스가 빠르게 트리거하지는 않습니다. FIIC 루틴의 AVIC에서 인터럽트 62를 비활성화하면 인터럽트는 한 번만 트리거됩니다.ARMv6 FIQ, 인터럽트 수신

나는 ARM1136JF-S 및 ARM1136J-S 기술 참조 설명서에서 VIC 포트에 대한 절을 읽었으며 적절한 종료 절차를 설명합니다. 하나의 FIQ 핸들러 만 가지고 있으므로 분기 할 필요가 없습니다. 이해가 안 라인은 다음과 같습니다

STR R0, [R8,#AckFinished] 

내가 AckFinished이 수 또는 어떤이 명령을 수행 할 예정이다 할을 예정이다 모르겠어요. ,

ldr r9, IOMUX_ADDR12 
ldr r8, [r9] 
orr r8, #0x08      @ top LED 
str r8,[r9]       @turn on LED 
bic r8, #0x08      @ top LED 
str r8,[r9]       @turn off LED 

subs pc, r14, #4 
IOMUX_ADDR12: .word 0xFC2A4000 @remapped IOMUX addr 

내 핸들러는 내가 처음 이동 한 후 그것을 사용하지 않으면 잘 정상적인 시스템 작동이 재개 반환 그렇지 않으면 지속적으로 트리거와 시스템이 정지 한 것으로 나타납니다 :

내 FIQ 핸들러는 다음과 같습니다.

코어가 AVIC를 인식하지 못하거나이 FIQ 트리거링의 또 다른 원인이있을 수 있다고 생각합니까? 코어가 AVIC를 인정하지 않으면이를 인정하기 위해 무엇을해야합니까?

답변

2

인터럽트를 생성하는 주변 장치 나 VIC 자체에서 보류중인 인터럽트를 지우지 않는 것처럼 보입니다.