섹션 5 <커널소스분석-태스크 스택메모리> 질문 드립니다!
254
작성한 질문수 6
안녕하세요 강사님 :) 1:12 부근에서 "ARM은 메모리를 높은 주소부터 낮은 방향으로 쓴다" 고 말씀하셨는데, 이것은 리틀 엔디안 방식을 이용한다는 것을 의미하는 것일까요??
그리고 맞다면 인터넷에 검색해보니 ARM은 리틀 엔디안 or 빅 엔디안 중 선택해서 사용한다고 나와 있는 것을 봤는데 모든 ARM processor가 리틀 엔디안을 쓰는 것이 맞을까요..??
답변 1
0
안녕하세요. madlife9161님!
일반적으로, 프로그램의 데이터 영역(data segment)은 낮은 주소에서 시작하여 메모리의 상위 주소로 성장하고, 스택(stack segment)은 높은 주소에서 시작하여 낮은 주소로 성장합니다. 이를 전문 용어로 stack growth 라고 함. 이렇게 하면 두 영역이 중간에서 충돌할 가능성을 최소화하고, 필요에 따라 동적으로 확장할 수 있습니다.
초기 ARM 디자인에서 이렇게 스택을 사용하였고, 이후의 디자인에서도 이와 같은 방식을 계속 유지하고 있습니다. 하지만, 모든 CPU 아키텍처가 이와 같은 방식을 따르는 것은 아닙니다. 예를 들어, x86 아키텍처는 반대로 스택이 낮은 주소에서 높은 주소로 성장하는 "푸시 업" 방식을 사용합니다.
이 주제와 리틀엔디안, 빅엔디안과는 별개의 내용으로 보시면 됩니다.
제 강의 ARM Cortex-M 프로세서 프로그래밍에서 이 내용들을 다루고 있습니다. 참고해주세요.
만약에 포팅을 할때 1년에 한번 잡는 치명적인 문제를 해결하는 코드가 들어갔다고 가정하면
0
57
2
STM32 포팅할 때 STM32 Project가 없음
0
166
2
FreeRTOS 멀티코어 지원안됨?
0
87
2
[소스코드 분석-configUSE_TIME_SLICING] TASK1,2의 우선순위가 동일할 때, configUSE_TIME_SLICING값 변경에 따른 출력 변화
0
83
2
포팅 부탁드립니다!
0
60
1
포팅 부탁드립니다. <NUCLEO-G071RB>
0
67
2
상호배제 후 되지를 않아서 질문드립니다.
0
61
1
수료증 발급 기준 수정 요청
1
72
1
재진입가능여부에 관한 질문
1
66
1
01_TASKMAN프로젝트 디버깅 모드 실패
1
77
2
그러면 malloc/free가 아닌 동적할당자를 써서 메모리를 할당했기떄문에
1
70
2
실행순서
1
76
2
uart 전송중에는 스위칭이 금지되나요?
1
74
2
스택오버플로우 실습 중 stack size 설정 질문
0
81
2
포팅 원합니다.
2
77
2
코루틴 실습질문
1
100
2
TODO 2번 문제
1
141
4
10. 선점형 커널 그림 설명중 우선순위가 반대인 경우에도 Task B가 먼저 수행되나요?
1
82
2
디버거모드에 진입이 안됩니다.
0
176
2
prvExampleTaskHook 함수 호출 부분에 대해 문의드립니다.
0
119
2
보드 STM32H735IG와 강의 호환 여부 문의
1
153
3
[ L152RE ] 원샷 소프트타이머 실행 잘 되시나요?
1
159
2
Deferred Interrupt Processing 샘플 예제 문의 드립니다.
1
121
2
포팅 서비스 부탁드립니다
1
125
2





