2012-11-07 4 views

답변

3

VxWorks에는 인터럽트를위한 특정 스택이 있습니다. 모든 인터럽트 핸들러는 동일한 스택을 공유합니다.이 스택은 vxWorks 이미지가로드되는 위치 바로 위에 있습니다.

기본 스택 크기는 5K이지만 커널 구성자로 쉽게 변경할 수 있다고 생각합니다.

ISR 메커니즘은 대략 다음과 같이 작동합니다.
VxWorks는 일반적으로 ISR 코드 주위에 어셈블리 코드 래퍼를 설치한다고 생각할 수 있습니다.

On Entry에서는 범용 레지스터가 ISR 스택에 자동으로 저장되므로 실행 컨텍스트 (다른 ​​ISR 또는 작업) 상태가 보존됩니다.

종료시 레지스터가 복원되지만 방금 완료된 ISR이 우선 순위가 높은 작업 상태를 변경했는지 확인하기 위해 OS 스케줄러가 호출됩니다. 이 경우 우선 순위가 높은 작업이 다시 시작됩니다. 더 높은 우선 순위 작업을 사용할 수 없으면 원래 작업이 복원됩니다.

+0

감사합니다. ISR이 인터럽트 된 작업의 스택에서 특정 스택으로 전환하는 방법을 알려주시겠습니까? – xiaokaoy

+0

다시 한번 감사드립니다. 고맙습니다. – xiaokaoy

0

xiaokaoy, VxWorks 프로그래머 가이드 섹션 2.6에서 인터럽트가 작동하는 방식에 대한 설명이 있습니다. 사본이 없으면 여러 소스에서 온라인으로 사용할 수 있습니다.

+0

감사합니다. 나는 그것을 찾으려고 노력할 것이다. – xiaokaoy

8

이것은 아키텍처에 따라 다릅니다. VxWorks 커널 프로그래머 가이드 (v6.8) :

모든 ISR은 동일한 인터럽트 스택을 사용합니다. [...]

주의 : 일부 아키텍처에서는 별도의 인터럽트 스택을 사용할 수 없으며 ISR은 인터럽트 된 작업의 스택을 사용합니다. [...] 아키텍처 이 별도의 인터럽트 스택을 지원하는지 여부를 확인하기 위해 BSP 용 VxWorks 참조 을 참조하십시오.

경우에 따라 PowerPC는 별도의 공유 인터럽트 스택 (코어 당)을 지원합니다.

관련 문제