inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

ARM Cortex-M 프로세서 프로그래밍

S207 SP 레지스터의 alias 관련

해결된 질문

358

SeongJin

작성한 질문수 6

1

안녕하세요.

이제 강의 시작한 초보 FW 개발자입니다.

S207의 SP 레지스터에 alias 관련해서 2가지 질문이 있습니다.

설명해주실 때에는 "SP 레지스터를 통해, MSP 레지스터 or PSP 레지스터가 결정된다"고 하셨는데요.

  1. 강의 자료(PDF)에는 SP 레지스터 - PSP 레지스터가 점선으로 표시되고, X 표시가 있는데, SP 레지스터는 PSP 레지스터로 alias 되는 것은 아닌가요?
    sp register.png

  2. 바로 MSP or PSP 레지스터를 이용하면 될 것 같은데,
    SP 레지스터를 통해 1단계를 더 거치는 이유가 무엇일까요?

FW 관련하여 좋은 강의해주셔서 감사드립니다!

임베디드 arm-architecture cortex

답변 1

1

홍영기

안녕하세요. SeongJin Hong님!

CORTEX-M 의 주요 특징중 하나인 특권모드 vs 비특권모드에 대하여 궁금한 점이 계시군요. :)

시스템은 부팅이후 디폴트인 특권쓰레드 환경에서 main() 함수를 실행합니다. 사용자(개발자)는 부팅 이후 이 환경을 계속 사용할 지 아니면 다른 환경(사용자 쓰레드)을 사용할 지를 선택하여야 합니다. 사실 특권쓰레드를 더 많이 사용하긴 합니다. 이 환경에서는 MSP 레지스터를 이용하여 스택 메모리를 접근 합니다. 다만, C언어에서는 스택메모리를 접근할 때 MSP 을 이용하는 것이 아닌, MSP 의 별칭(alias) 인 SP 을 이용하는 것입니다.

만일 부팅 이후에 사용자가 비특권 모드인 사용자 쓰레드에서 main() 함수를 실행시킬 수도 있는데, 그 때는 PSP 레지스터를 이용하여 스택 메모리를 접근하게 됩니다. 이후로는 SP가 더이상 MSP 을 가리키지 않고 PSP 을 가리키게 되죠.

스택메모리 접근시 MSP나 PSP 을 이용하지 않고 SP 을 이용하는 이유는 C언어에서 통일된 일관성(consistency) 있는 단일 인터페이스 제공을 목적으로 하는 것이라고 이해하시면 되고요.

제가 지금까지 간단하게 정리해드리긴 하였지만, CORTEX-M 을 처음 사용하시게 되면 이 부분이 조금 낯설고 어렵게 느껴지실 수도 있습니다. 괘념치마시고, 약간 이해가 덜 된 느낌이시더라도 계속 이어지는 강의를 정주행하시는 것을 추천드립니다. 나중에 강의 후반부인 예외처리(exception) 정도 까지 진도가 나가시면, 지금의 이 부분이 자연스럽게 이해가 되실 것입니다 ^^

0

SeongJin

하나의 통일된 인터페이스로 제공하기 위해서 별칭인 SP를 이용하는 것이군요!
아직 100% 이해하지는 못했지만, 말씀하신대로 계속 강의를 이어나가며 이해해보도록 하겠습니다!
빠른 답변 감사드립니다!

stm32cubeide 관련 문의

0

46

2

DMA 관련한 강의도 제작해주실 수 있으신가요 ?

0

95

1

그림들도 해석 할 수 있어야 하나요?

1

100

2

no-stlink

1

80

2

4개의 CPU 사이클이 필요한 이유

1

100

2

MAC으로 진행 질문드려요..

1

95

2

학습 진행 시, 사용하는 Board에 대한 문의 드립니다!

0

159

2

push pop 질문

1

190

2

STM32Fx Cortex ARM 프로그래밍 저자:홍봉조, 출판사:지식과 감성

0

242

1

CORTEX_02_ASSEMBLY 빌드시 에러

1

270

1

외부 ST Link 연결 이용한 SWD 방법

0

339

1

파이프라인과 명령어

1

327

1

명령어 fetch

0

238

1

lr 레지스터 LSB 값

1

258

1

Disassembly 창 문제

0

349

1

s702 강좌에서 사용한 technical reference manual 문서

1

325

1

s702에 원자적 Access 를 위한 BSRR 코드작성 부분에 대해서

1

271

1

s202 LED 점등 예제 실행시 에러

2

351

1

STM32F429I-DISC 보드의 펌웨어

2

394

1

제공되지 않은 강의교재

0

319

1

s524 테일체이닝 강의 질문

0

234

1

부트코드와 부트로더의 차이점

1

1525

1

메모리 맵 질문

0

280

1

xPSR 레지스터 플래그 값 및 기타 질문 드립니다.

1

862

2