2012-03-02 4 views
0

임베디드 시스템에서 메모리 맵의 용도를 이해하기를 고대합니다. 일반적인 유닉스 시스템과는 함수 스택이 어떻게 다른가?RTOS 용 메모리 맵

임베디드 시스템의 메모리 관련 충돌을 디버깅하는 데 도움이 될 수있는 통찰력이 도움이 될 것입니다.

답변

4

임베디드 시스템, 특히 실시간 시스템에는 종종 정적으로 할당 된 많은 데이터 및/또는 메모리의 특정 위치에 배치 된 데이터가 있습니다. 메모리 맵은 이러한 것들이 어디에 있는지 알려주며, 문제가 발생하여 시스템의 상태를 검사 할 때 도움이 될 수 있습니다. 예를 들어, 모든 메모리를 덤프 한 다음 사실 이후에 분석 할 수 있습니다. 이 경우 메모리 맵은 문제와 관련이 있다고 생각되는 객체를 찾는 데 편리합니다.

코드 측면에서 시스템은 예외가 발견 된 지침의 주소를 가리키는 하드웨어 예외를 기록 할 수 있습니다. 함수의 메모리 위치를 찾고 함수의 디스 어셈블리와 결합하면 이러한 문제를 분석하는 데 도움이 될 수 있습니다.

세부 정보는 실제로 어떤 종류의 임베디드 시스템을 구축하는지에 따라 다릅니다. 자세한 내용을 제공하면 사람들이 더 나은 응답을 줄 수 있습니다.

2

나는이 질문을 이해하고 있는지 확신 할 수 없다. "메모리 맵"은 임베디드 시스템에 고유 한 것이거나 확실한 소프트웨어 구성 요소라고 제안하는 것 같습니다. 그것은 둘 다 아니다. 응용 프로그램의 메모리 사용 레이아웃에 대한 설명 일뿐입니다.

모든 응용 프로그램은 플랫폼에 관계없이 메모리 맵을 가지며, 일반적으로 임베디드 시스템에서는 응용 프로그램이 단일 모 놀리 식 엔터티로 연결되어 결과 메모리 레이아웃이 개별 프로세스가 아닌 전체 시스템을 참조한다는 점이 다릅니다 GPOS 플랫폼의 응용 프로그램에서와 마찬가지입니다.

메모리 매핑을 결정하는 링커 및 링커 스크립트이며 링커에서 적용된 레이아웃 및 할당을 설명하는 맵 보고서 파일을 출력 할 수 있습니다. 이는 OS 나 아키텍처에 관계없이 임베디드 및 데스크톱 애플리케이션에 해당됩니다.

2

RTOS의 메모리 맵은 모든 컴퓨터의 메모리 맵과 크게 다르지 않습니다. 어떤 하드웨어가 프로세서 주소 중 어디에 상주하는지 정의합니다. 해당 하드웨어는 RAM, ROM, 플래시, 직렬 포트, 병렬 포트, 타이머, 인터럽트 벡터 또는 프로세서에서 처리 할 수있는 기타 여러 부분이 될 수 있습니다.

메모리 맵은 시스템 디자인에서 RAM, ROM 또는 Flash와 같은 제한된 리소스를 어떻게 예산 할 것인가에 대해서도 설명합니다.

예를 들어, 여러 개의 작업이 실행중인 경우 각 작업마다 할당 된 RAM의 고유 한 영역을 갖도록 RAM을 매핑 할 수 있습니다.

각 태스크의 RAM 부분은 스택을위한 특정 영역, 정적 변수를위한 영역 및 힙 (heap)을위한 특정 영역이 매핑되도록 매핑됩니다.

대상에 운영 체제가있는 경우이 기능은 많은 부분을 동적으로 처리합니다. 그러나 응용 프로그램이 장치의 유일한 소프트웨어 인 경우 일반적으로 컴파일/링크시 이러한 결정을 스스로 관리해야합니다. 추가 단서는 "링크 스크립트"를 검색하십시오.

0

메모리 맵은 시스템의 메모리 레이아웃입니다. 이것은 임베디드 시스템과 일반 어플리케이션 모두에 존재합니다. 일반적인 응용 프로그램에도 있지만, 시스템 사용상의 제약 때문에 임베디드 시스템에서 잘 사용됩니다.

메모리 맵 링커 스크립트 나 링커 명령 파일에 의해 관리됩니다. 그것은 플래시 또는 내부 RAM (L1P, L1D, L2, L3) 또는 외부 RAM (DDR) 또는 ROM 또는 적절한 고정 된 주소와 주변 장치 (포트, 직렬, 병렬, USB 등) 또는 특정 장치 레지스터 또는 I/O 포트를 같은 자원을 매핑 시스템의 메모리 공간이다.

는 메모리 구성 또는 보드 및 성능 요구 사항의 제약을 기반 임베디드 시스템의 경우, 텍스트 세그먼트 또는 데이터 세그먼트 또는 BSS와 같은 부분은 선택의 적절한 메모리에 저장 될 수있다.

개발 보드의 다양한 버전은 메모리와 주변의 다른 구성을해야합니다 경우가 있습니다. 이 경우, 우리는 가지고 업을 보드에 메모리 구성 및 필수 체크 포인트로 보드의 주변 장치에 따라 링커 스크립트를 수정해야 할 수도 있습니다.

메모리 맵은 멀티 스레드 응용 프로그램과 멀티 코어 응용 프로그램에서 핵심적인 역할을 할 수있는 공유 메모리 정의에도 도움이됩니다.

크래시 주소를 추적하여 시스템의 메모리에 매핑하면 문제의 원인이되는 가능한 라이브러리 또는 개체에 대한 수준 높은 아이디어를 얻을 수 있습니다.