HCS12 RAM 메모리 리맵(remap)
기술노트 62349
아키텍처:
HCS12
컴포넌트:
debugger
업데이트:
2021-06-02 오전 7:58
소개
본 기술 노트는 IAR Embedded Workbench for HCS12 버전 3.x (혹은 상위 버전)에 적용됩니다.
논의
SFR 영역에는 일부 RAM이 숨겨져 있으며 해당 RAM은 프로그램에 필요합니다.
배경
IAR Embedded Workbench for HCS12에는 각 파생 모델에 대한 칩 설정 파일이 있습니다. 이러한 설정 파일은 메모리 타입을 이동시키지 않습니다. 이는 재설정 위치가 SFR, EEPROM과 RAM에 사용됨을 의미합니다. 따라서 주소 0x00 이상에서는 일반적으로 세 가지 유형의 메모리가 서로를 덮고 있습니다.
Freescale MC9S12DG128(예: 가장 낮은 16kb)은...
Type | size | from | to |
SFRs | 1 kB | 0x0000 | 0x03FF |
RAM | 8 kB | 0x0000 | 0x1FFF |
EEPROM | 2 kB | 0x0000 | 0x07FF |
... RAM 메모리 1kB와 EEPROM 메모리의 모든 (2kb)를 우선 순위 메모리 유형에 포함시켜 재설정합니다.
(우선 순위는 SFR, RAM, EEPROM입니다.)
해결방법
장치를 시작하는 동안 SFR INITRM을 RAM 메모리를 원하는 위치로 이동하는 값으로 설정합니다.
변경 사항입니다(IAR 파일 상):
- .ddf파일에 다음의 라인을 추가하고...
Sfr3 = INITRM 2 YES YES 0x20
...INITRM SFR 작성을 위해 라인을 추가할 때 번호 "Sfr#"을 수정해야 합니다. "0x20" 값을 읽어야 합니다:
"Place RAM at address 0x2000 and place the RAM upwards from this address." - .ddf파일에 다음의 라인을 수정하고...
Memory1 = RAM Memory 0x00000 0x01FFF RW
...다음을 대신 읽도록 합니다...
Memory1 = RAM Memory 0x02000 0x03FFF RW
- .xcl 파일에 다음을...
-D_RAM_BEGIN=00000
...로 변경합니다...
-D_RAM_END=01FFF-D_RAM_BEGIN=02000
-D_RAM_END=03FFF - 마지막으로 프로젝트 설정을 변경하여 프로젝트가 기본적으로 제공되는 파일 대신 편집된 .ddf 파일과 편집된 .xcl 파일을 "가리키도록" 변경합니다.
Project > Options > Linker > Config와 Project > Options > Debugger > Setup 에서 찾을 수 있습니다.
예제 (Freescale MC9S12DG128)
다음의 첨부 예제(Example for MC9S12DG128.zip)는 RAM 메모리를 0x2000에서 0x3FFF로 옮기도록 설정되어 있습니다.
참고사항
.ddf 파일을 편집할 경우 프로젝트를 닫고 다시 열어야 합니다(.ddf파일은 프로젝트가 열릴 때 한번 읽힙니다).
제안된 해결방법은 C-SPY BDM 디버거를 통해 다운로드 할때 작동하는데, "BDM 디버거 드라이버"는 .ddf 파일에 제공된 값으로 SFR을 작성하기 때문이다. 만약 독립형 모드에서 디바이스를 이용하고 싶다면 SFR에 대한 쓰기는 __low_level_init로 이동해야 합니다.
예제는 "특수 단일 칩 모드"에 대해 빌드, 수정 및 테스트 되었으므로 INITRM에 대한 쓰기는 다른 모드를 사용할 때 .ddf 파일에 추가되어야 합니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.