임베디드 시스템에서 메모리 맵의 용도를 이해하기를 고대합니다. 일반적인 유닉스 시스템과는 함수 스택이 어떻게 다른가?RTOS 용 메모리 맵
임베디드 시스템의 메모리 관련 충돌을 디버깅하는 데 도움이 될 수있는 통찰력이 도움이 될 것입니다.
임베디드 시스템에서 메모리 맵의 용도를 이해하기를 고대합니다. 일반적인 유닉스 시스템과는 함수 스택이 어떻게 다른가?RTOS 용 메모리 맵
임베디드 시스템의 메모리 관련 충돌을 디버깅하는 데 도움이 될 수있는 통찰력이 도움이 될 것입니다.
임베디드 시스템, 특히 실시간 시스템에는 종종 정적으로 할당 된 많은 데이터 및/또는 메모리의 특정 위치에 배치 된 데이터가 있습니다. 메모리 맵은 이러한 것들이 어디에 있는지 알려주며, 문제가 발생하여 시스템의 상태를 검사 할 때 도움이 될 수 있습니다. 예를 들어, 모든 메모리를 덤프 한 다음 사실 이후에 분석 할 수 있습니다. 이 경우 메모리 맵은 문제와 관련이 있다고 생각되는 객체를 찾는 데 편리합니다.
코드 측면에서 시스템은 예외가 발견 된 지침의 주소를 가리키는 하드웨어 예외를 기록 할 수 있습니다. 함수의 메모리 위치를 찾고 함수의 디스 어셈블리와 결합하면 이러한 문제를 분석하는 데 도움이 될 수 있습니다.
세부 정보는 실제로 어떤 종류의 임베디드 시스템을 구축하는지에 따라 다릅니다. 자세한 내용을 제공하면 사람들이 더 나은 응답을 줄 수 있습니다.
나는이 질문을 이해하고 있는지 확신 할 수 없다. "메모리 맵"은 임베디드 시스템에 고유 한 것이거나 확실한 소프트웨어 구성 요소라고 제안하는 것 같습니다. 그것은 둘 다 아니다. 응용 프로그램의 메모리 사용 레이아웃에 대한 설명 일뿐입니다.
모든 응용 프로그램은 플랫폼에 관계없이 메모리 맵을 가지며, 일반적으로 임베디드 시스템에서는 응용 프로그램이 단일 모 놀리 식 엔터티로 연결되어 결과 메모리 레이아웃이 개별 프로세스가 아닌 전체 시스템을 참조한다는 점이 다릅니다 GPOS 플랫폼의 응용 프로그램에서와 마찬가지입니다.
메모리 매핑을 결정하는 링커 및 링커 스크립트이며 링커에서 적용된 레이아웃 및 할당을 설명하는 맵 보고서 파일을 출력 할 수 있습니다. 이는 OS 나 아키텍처에 관계없이 임베디드 및 데스크톱 애플리케이션에 해당됩니다.
RTOS의 메모리 맵은 모든 컴퓨터의 메모리 맵과 크게 다르지 않습니다. 어떤 하드웨어가 프로세서 주소 중 어디에 상주하는지 정의합니다. 해당 하드웨어는 RAM, ROM, 플래시, 직렬 포트, 병렬 포트, 타이머, 인터럽트 벡터 또는 프로세서에서 처리 할 수있는 기타 여러 부분이 될 수 있습니다.
메모리 맵은 시스템 디자인에서 RAM, ROM 또는 Flash와 같은 제한된 리소스를 어떻게 예산 할 것인가에 대해서도 설명합니다.
예를 들어, 여러 개의 작업이 실행중인 경우 각 작업마다 할당 된 RAM의 고유 한 영역을 갖도록 RAM을 매핑 할 수 있습니다.
각 태스크의 RAM 부분은 스택을위한 특정 영역, 정적 변수를위한 영역 및 힙 (heap)을위한 특정 영역이 매핑되도록 매핑됩니다.
대상에 운영 체제가있는 경우이 기능은 많은 부분을 동적으로 처리합니다. 그러나 응용 프로그램이 장치의 유일한 소프트웨어 인 경우 일반적으로 컴파일/링크시 이러한 결정을 스스로 관리해야합니다. 추가 단서는 "링크 스크립트"를 검색하십시오.
메모리 맵은 시스템의 메모리 레이아웃입니다. 이것은 임베디드 시스템과 일반 어플리케이션 모두에 존재합니다. 일반적인 응용 프로그램에도 있지만, 시스템 사용상의 제약 때문에 임베디드 시스템에서 잘 사용됩니다.
메모리 맵 링커 스크립트 나 링커 명령 파일에 의해 관리됩니다. 그것은 플래시 또는 내부 RAM (L1P, L1D, L2, L3) 또는 외부 RAM (DDR) 또는 ROM 또는 적절한 고정 된 주소와 주변 장치 (포트, 직렬, 병렬, USB 등) 또는 특정 장치 레지스터 또는 I/O 포트를 같은 자원을 매핑 시스템의 메모리 공간이다.
는 메모리 구성 또는 보드 및 성능 요구 사항의 제약을 기반 임베디드 시스템의 경우, 텍스트 세그먼트 또는 데이터 세그먼트 또는 BSS와 같은 부분은 선택의 적절한 메모리에 저장 될 수있다.개발 보드의 다양한 버전은 메모리와 주변의 다른 구성을해야합니다 경우가 있습니다. 이 경우, 우리는 가지고 업을 보드에 메모리 구성 및 필수 체크 포인트로 보드의 주변 장치에 따라 링커 스크립트를 수정해야 할 수도 있습니다.
메모리 맵은 멀티 스레드 응용 프로그램과 멀티 코어 응용 프로그램에서 핵심적인 역할을 할 수있는 공유 메모리 정의에도 도움이됩니다.
크래시 주소를 추적하여 시스템의 메모리에 매핑하면 문제의 원인이되는 가능한 라이브러리 또는 개체에 대한 수준 높은 아이디어를 얻을 수 있습니다.