마이크로 컨트롤러에서 특정 프로그램에 필요한 스택 메모리를 결정하는 방법은 무엇입니까? 예를 들어, 내부적으로 많은 서브 루틴이나 thread를 가질 수있는 프로그램이 있다고 가정 해 봅시다. 프로그램 실행을 시작하기 전에이 프로그램의 스택 크기를 수정하려고합니다. 스택의 끝점을 어떻게 표시합니까?마이크로 컨트롤러에서 스택 메모리 할당
2
A
답변
3
당신은 동적 메모리 할당없이 C 언어 프로젝트에 대해 이야기하고 있다고 가정합니다. 스택 사용량의 정확한 계산은 매우 길고 복잡합니다. 적어도 각 함수와 호출 그래프 (컴파일러가이 정보를 제공 할 수 있음)에 대한 스택 사용을 알아야합니다. 게다가 : 운영 체제가 있습니까? 각 스레드는 자체 스택이 필요합니다. 인터럽트 루틴이 있습니까? 총 스택 사용량은 각 현재 실행 흐름의 기여도 합계입니다.
많은 경우 경험적 방법, 즉 스택 사용의 런타임 측정치가 더 효과적이다. 예를 들어 고정 된 패턴으로 전체 스택 영역을 채운 다음 의미있는 테스트를 실행 한 다음 "더티"영역의 크기를 확인할 수 있습니다. 실제 크기는 안전 마진 (예 : + 50 %)을 적용하여 계산할 수 있습니다.
0
스택 제한은 마이크로 컨트롤러에있는 메모리 용량에서 비롯됩니다. 수동으로 할 수 있습니다.이 프로그램은 대용량 프로그램에서 매우 귀찮고 엘프 덤프를 조사 할 수 있습니다. 거기에서 메모리가 전역 변수에 의해 점유되는 방법을 발견하고 남은 것을 스택으로 사용할 수 있습니다. 또한 필요한 최대 스택을 찾으려면 가장 긴 중첩 함수 호출과 인수 인수의 크기를 모두 찾아야합니다. 이 방법으로 미리 설정 한 최대 스택 요구 사항을 얻을 수 있습니다. 최악의 경우 스택이 더 필요하고 함수 호출과 인수의 크기를 기반으로해야하므로 몇 가지 최적화를 수행해야합니다.
관련 문제
- 1. 마이크로 컨트롤러 메모리 할당
- 2. gcc가 스택 메모리 할당
- 3. 스택 기반 메모리 할당
- 4. 재귀에서 스택 메모리 할당
- 5. 스택 메모리 할당 및 할당 해제 메커니즘
- 6. 스택 대 Java 메모리 할당
- 7. 할당 및 스택 메모리 처리
- 8. 메모리 할당, 스택 및 힙
- 9. LPC1788 마이크로 컨트롤러의 메모리 할당 문제
- 10. 동적 할당 : 버퍼 대 메모리 스택
- 11. 스택 메모리 할당 및 정렬 문제
- 12. .net의 스택 및 힙 메모리 할당
- 13. 마이크로 컨트롤러에서 ODE 해결
- 14. 스택 및 힙 할당
- 15. 메모리 할당
- 16. ARM 마이크로 프로세서의 메모리 공간
- 17. C++ 루프 스택 할당
- 18. 마이크로 컨트롤러에서 웹 서버 구현
- 19. "printf"는 마이크로 컨트롤러에서 무엇인가?
- 20. 스텔라리스 마이크로 컨트롤러에서 snmp 구현
- 21. 마이크로 컨트롤러에서 웹 서비스 호스팅
- 22. 'this'포인터가 할당 된 메모리
- 23. 예외에 대한 메모리 할당
- 24. 메모리 할당 ** p
- 25. C에서의 메모리 할당
- 26. 정확한 동적 메모리 할당
- 27. 자바로 메모리 할당
- 28. 메모리 할당
- 29. 메모리 할당
- 30. 메모리 할당
로컬 변수를 사용하지 않거나 프로젝트에서 분석을 수행하면 모든 코드 경로와 함수 당 로컬 데이터의 양을 알아야합니다. 기본적인 임베디드 프로그래밍. –