2016-07-04 6 views
0

ARM Cortex-M4 코어 용 작은 OS를 작성 중이며 몇 가지 의문점이 있습니다. 필자는 모든 커널 개체와 커널 기능을 유지하고 유지 관리하는 SVC (Supervisor Call)를 통해 OS 기능을 배치하기로 결정했습니다.Arm Cortex-m4 Custom os desgin

그러나 모든 커널 코드가 실행되어 사용자 작업 스택을 점유하기 때문에 이것은 좋은 생각입니까?

내 마음에 떠오르는 점은 감독자 호출을 통해 커널 스택을 실행하고 커널 코드를 실행하는 동안 스케줄러를 잠그는 것입니다. 이 방법이 좋은 방법입니까?

+1

해결하려는 문제는 무엇입니까? –

답변

1

Cortex-M에는 프로세스 스택 포인터 (PSP)와 주 스택 포인터 (MSP)가 있습니다. 인터럽트는 주 스택 포인터를 사용하며 작업은 프로세스 스택 포인터를 사용해야합니다. 따라서 SVC에서 수행 된 모든 커널 작업은 MSP를 사용하므로 PSP를 사용하는 작업 스택을 간섭해서는 안됩니다. 작업을 전환 할 때 PSP를 새 스택으로 설정합니다. Cortex-M4 Generic User Guide의 Exception Handling 섹션을 읽었을 것이다. 또한이 기사에서는 RTOS에 대한 좋은 절이 있으므로 ARM Cortex M3/M4에 대한 확실한 안내서를 읽고 읽는 것이 좋습니다. Cortex는 RTOS로 설계되었으며 많은 유용한 기능을 제공합니다.

참고 : 학습 과정에서이 작업을 수행하거나 자신의 OS를 직접 작성하고 싶지 않은 경우 FreeRTOS와 같은 것을 사용하는 것이 좋습니다.이 테스트는 매우 잘 테스트되었으며 가능성이있는 모든 기능을 제공합니다. 용도.

+0

응답을 보내 주셔서 감사합니다. 예외 발생시 스태킹을 오해했습니다. 나는 그 부분을 다시 한번 읽었으며 이제는 모든 것이 분명합니다. 예외가 발생하면 스태킹은 실행중인 스택에 있지만 예외 처리는 MSP 스택에서 발생합니다. 그건 그렇고, 이것은 단지 학습 목적을위한 것입니다 ... :) – user2782192

+0

그래, 조금 이해가 걸립니다. 설명서가 더 좋을 수 있습니다. FreeRTOS를 살펴 보길 권장합니다. Cortex에 대한 많은 휴대용 레이어가있어 작업/참조 방법을 배우는 훌륭한 방법입니다. –