2017-03-25 11 views

답변

1

아키텍처에서 ISR의 함수를 호출하는 것은 합법입니다. 항상 그래야하는 것은 아닙니다.

해당 함수가 인터럽트 및 다중 스레드 컨텍스트 내에서 실행하기에 적합한 지 여부를 고려해야합니다. 예를 들어, 재진입 성이 있어야하며, 원자 적으로 또는 일관성을 보장하는 방식으로 공유 자원에 액세스해야하며, 당연히 불확실하게 차단하거나 대기 중이 어서는 안됩니다.

인터럽트 처리 시간 측면에서 함수 호출과 오버 헤드 자체에 대한 스택 요구 사항을 고려해야 할 수도 있습니다. 인라인 기능이 고려 될 수 있습니다.

+1

아키텍처의 제한적인 스택 및 포인터 산술 C 컴파일러는 일반적으로 지역 변수에 대한 진정한 스택 저장소 대신 정적으로 할당 된 오버레이를 선호한다는 점을 고려하면 8051은 재진입 성/재귀 적 기능을별로 좋아하지 않습니다. 따라서 호출 수신자 트리는 특정 컴파일러와 설정에 따라 재진입 호출 규칙을 사용하도록 특별히 표시해야 할 수도 있습니다. – doynax

+0

@doynax : 모든 좋은 점 - 스택 요구 사항을 고려해야 할 필요성을 언급하고 가능한 경우에도 항상 권장되는 것은 아니라고 제안했습니다. 이러한 제한된 환경에서는 특히 그렇습니다. 아키텍처에 대한 몇 가지 고려 사항에 대해 자세히 설명했습니다. 감사. – Clifford