강좌 & 팁
안녕하세요
이번주는 메모리 시스템 개요 등 메모리 맵에 대해서 설명을 하겠습니다.
1.1 메모리 시스템 특징 개요
Cortex-M3에서의 메모리 시스템의 또 다른 특징은 비트-대역 지원입니다.
이것은 메모리나 주변장치 안에 있는 비트 데이터들이 단일 동작을 할 수 있도록 해줍니다.
Cortex-M3 메모리 시스템은 비정렬 전송 및 배타적 접근을 지원합니다. 이 특징은 v7-M
아키텍저의 일부이며, 이틀 에디안과 빅 에디안 메모리 설정을 모두 지원합니다.cortex-M3는 고정된 메모리 맵을 가지고 있으며, 제품에서 다른 제품으로 소프트웨어를 쉽게
포팅할 수 있게 만들어 줍니다.
디버깅 컨포넌트들이 포함하고있는 장치들을 말씀드리 겠습니다.
● 페치 패지 및 브레이크포인트 장치(FPB)
● 데이터 와치포인트 및 트데이스 장치(DWT)
● 인스트루먼트 트레이스 매크로셀(ITM)
● 임베디드 트레이스 매크로셀(ETM)
● 트레이스 포트 인터페이스 장치(TPIU)
● ROM 테이블
Cortex-M3 프로세서는 전체 4GB의 주소 공간을 갖습니다. 프로그램 코드는 코드 영역,
SEAM영역 또는 외부 RAM 영역에 위치할 수 있습니다. 하지만, 여기서 코드 영역에 프로그램 코드를
넣은 것이 가장 좋습니다.SRAM 메모리 범주는 내부 SRAM과 연결하기 위해 존재합니다. 이 영역으로의 접근은 시스템 인터페이스
버스를 통해 수행됩니다. 이 영역에서는 32MB 범주가 비트-대역 앨리어스로 정의됩니다.
32MB 비트-대역 앨리어스 메모리 범주 내에서는 각 워드 주소가 1Mb 비트-대역 영역 안에 있는
단일 READ-MODIFY-WRITE 동작으로 변화됩니다.
비트-대역 동작은 메모리 페치가 아닌 데이터 접근에만 적용되며, 불정보르 비트-대역 안에 넣음으로써,
비트-대역 앨리어스를 통해 각각에 접근될 때 다중 불 데이터를 한 워드에 함쳐 사용할 수 있습니다. 따라서
소프트웨어로 READ-MODIFY-WRITE를 처리하기 위해 별도의 요구사항 없이 메모리 공간을 절약
할 수 있습니다.
전용 주변장치 버스에는 두가지 세그먼트가 있습니다.Cortex-M3 내부 AHB 주변장치를 위환 AHB 전용 주변장치 버스: 이것은 NVIC,FPB,DWT,ITM을 포함 합니다
Cortex-M3 내붙 APB 주변장치 버스: Cortex-M3는 칩 벤더가 APB인터페이스를 통해 이 APB
전용 버스에 추가적인 온-칩 APM 주변장치를 추가할 수 있게 해줍니다.
1.2 메모리 접근 속성
메모리 맵은 각 메모리 영역 안에 무엇이 포함되어 있는지를 보여줍니다.
어떤 메모리 블로 또는 장치가 접근 가능한지를 디코딩하는 것 외에, 메모리 맵은 접근에 대한
메모리 속성을 정의합니다. Cortex-M3 프로세서에서 찾아볼 수 있는 메모리 속성은 다음과 같습니다.
● 버퍼 가능
● 캐시가능
● 실행 가능
● 공유 가능
MPU가 존재하고 영역이 디폴트와 다르게 중복 설정도리 수 있다면, 디폴트 메모리 속성 설정이 변경될 수 있습니다. Cortex-M3 프로세서가 캐시 메모리나 캐시 컨트롤러를 가지고 있지 않더라도, 외부 캐시를 추가할 수 있으며, 캐시 속성은 Cip 제조사에 의해 사용되는 메모리 컨트롤러에 따라 온-칩메모리와 오프-칩 메모리를 위한 메모리 컨트롤러의 동작에 영향을 줄 수있습니다.
● 코드 메모리 영역:캐시 속성은 WT이며 데이터 메모리도 넣을 수 있습니다.쓰기 버퍼 영역이며, 데이터 버스 인터페이스를 통해 발생합니다.
● SRAM 메모리 영역 :온-칩 RAM을 위해만들어 졌으며 쓰기기 영역에 캐시 속성은 WB-WA입니다.
● 주변장치 영역:주변 장치를 위해 만들어 졌으며 캐시 불가능 영역에 명령어 코드를 실행할 수 있습니다.
● 외부 RAM 영역:온-칩 또는 오프-칩 메모리를 위해 만들어졌으며, 캐시 가능 영역에 코드를 실행 가능합니다.
● 외부 장치: 순차적이면서 버퍼 기능이 없는 접근을 요구하는 외부 장치들과 공유 메모리를 위해 만들어 졌습니다.
이 영역은 실행이 불가능 합니다.
● 외부 장치: 순차적이면서 버퍼 기능이 없는 접근을 요구하는 외부 장치들과 공유 메모리를 위해 만들어 졌으며,
실행 불가능한 영역입니다.
● 시스템 영역: 전용 주변장치와 특정 벤더 장치를 위해 만들어 졌습니다. 캐시 불가능 영역이며, 전용 주변장치 버스
메모리 범위 하에서 순차적으로 접근이 이루어 집니다. 특정 벤더 메모리 영여을 위해서는 버퍼 가능하지만 캐시
불가능한 영역입니다.
Cortex-M3의 버전 1 이후로, 코드 영역을 위한 메모리 속성은 캐시 사능하고 버퍼 불가능하도록 되어 있다는 것을 꼭 알아 두시기 바랍니다.
그림 출처(푸우님 블로그)
오늘은 여기까지 설명 드리고 다음시간에는 메모리 접근 허용과 대역 동작등에 대해서 설명 하겠습니다.
끝까지 읽어주셔서 감사하고 수정 부분이 있다면 댓글로 알려 주시기 바랍니다.^^