출력 형식이 여러 주소 공간을 처리할 수 없습니다.
기술노트 42505
아키텍처:
AVR
컴포넌트:
linker
업데이트:
2021-06-30 오전 3:00
소개
링킹할 때, Motorola 및 Intel-hex 파일의 여러 메모리 공간에 문제가 발생할 수 있습니다.
에러메시지
Error[e133]: The output format motorola cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted.
배경
Motorola 및 Intel-hex와 같이 둘 이상의 메모리 공간을 지원하지 않는 출력 형식에는 메모리 공간당 최대 하나의 출력 파일이 필요할 수 있습니다. 따라서 한 메모리 공간(플래시)에만 출력을 생성하는 경우에는 문제가 없지만 eeprom에 오브젝트를 배치하거나 외부 룸에 개체를 배치하는 경우에는 출력 형식이 이를 나타낼 수 없으며 링크에서 위의 오류를 발생시킵니다.
해결방법 1
Motorolo와 같이 출력 형식을 하나만 사용하는 경우 메모리 공간당 출력 파일이 하나씩 있어야 합니다.
- 출력을 플래시 메모리로 제한하려면 XLINK 옵션 -y를 사용합니다.
Project > Options > Linker > Extra options > "Use command line options" 에서 옵션을 활성화 한 뒤, 다음을 작성-y(CODE).
- 다른 메모리 공간에 대한 출력을 생성하려면 메모리 공간당 하나의 출력 파일을 생성해야 합니다. 이를 위해 XLINK 옵션 -O를 사용합니다.
예를 들어 eeprom 공간과 모토로라 형식을 사용하는 경우 Project > Options > Linker > Extra options > "Use command line options" 옵션을 활성화 한 뒤, 다음을 작성
-Omotorola,(XDATA)=eeprom.a90
예제를 확인해 보시기 바랍니다: Motorola-example.zip.
해결방법 2
ubrof8 및 Intel-standard와 같은 추가 출력 형식을 사용할 때 오브젝트를 eeprom에 배치하는 경우 Intel-standard에 Extra Output" 옵션을 사용할 수 없습니다.
해결방법은 다음과 같습니다.:
- "Extra Output" 옵션이 활성 해제되어 있는지 꼭 확인합니다.
- ubroof8에 대한 출력 파일을 생성하기 위해. Project> Options> Linker>Output 에서 옵션을 활성화 합니다. "other" 를 클릭한 다음 드롭다운 메뉴에서 'Ubrof8 (forced)'를 선택합니다.
- Intel-standard 형식의 출력을 생성하려면 메모리 공간당 하나의 출력 파일이 있어야 합니다. 플래시 메모리로 출력을 제한하려면 옵션 Project> Options> Linker> Extra options >>"Use command line options" 옵션을 활성화하고 다음을 작성
-Ointel-standard,(CODE)=flash.hex
eeprom 공간과 같은 다른 메모리 공간에 대한 출력을 생성하려면 Project> Options> Linker> Extra options >>"Use command line options" 옵션을 활성화하고 다음을 작성
-Ointel-standard,(XDATA)=eeprom.hex
예제를 확인해 보시기 바랍니다: Intel-standard-example.zip.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.