S207 SP 레지스터의 alias 관련
안녕하세요.
이제 강의 시작한 초보 FW 개발자입니다.
S207의 SP 레지스터에 alias 관련해서 2가지 질문이 있습니다.
설명해주실 때에는 "SP 레지스터를 통해, MSP 레지스터 or PSP 레지스터가 결정된다"고 하셨는데요.
강의 자료(PDF)에는 SP 레지스터 - PSP 레지스터가 점선으로 표시되고, X 표시가 있는데, SP 레지스터는 PSP 레지스터로 alias 되는 것은 아닌가요?

바로 MSP or PSP 레지스터를 이용하면 될 것 같은데,
SP 레지스터를 통해 1단계를 더 거치는 이유가 무엇일까요?
FW 관련하여 좋은 강의해주셔서 감사드립니다!
답변 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
하나의 통일된 인터페이스로 제공하기 위해서 별칭인 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





