세그먼트 ISTACK가 세그먼트 정의로는 너무 깁니다

기술노트 95811

아키텍처:

8051

컴포넌트:

linker

업데이트:

2021-06-22 오전 4:23

소개

IAR Embedded Workbench for 8051 버전 8.20 (혹은 하위 버전)에서 프로젝트를 옮겼는데, 버전 8.30에서 내부 RAM에 대한 링커 오류 e16이 갑자기 발생합니다:

Error[e16]: Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition

설명

프로젝트를 연결하면 .xcl 링커 설정 파일이 사용됩니다. 여기에는 링커에 대한 명령이 포함되어 있습니다.

IAR Embedded Workbench for 8051에서는 Project > Options > Linker > Config > Linker configuration file을 통해 확인할 수 있습니다.

V8.30 릴리즈가 변경되어 _NR_OF_VIRTUAL_REGISTERS 기호가 더 이상 사용되지 않습니다.

링커 에러를 일으키는 것은 이 여분의 크기입니다.

해결방법

프로젝트의 .xcl 파일은  IAR Embedded Workbench for 8051 버전 8.20 (혹은 하위 버전)에서 가져온 것일 수 있으며 다음과 같은 내용이 포함되어 있습니다:

-Z(DATA)VREG+_NR_OF_VIRTUAL_REGISTERS=08-7F

필요한 경우 파일의 새 복사본을 만들고 해당 줄을 다음으로 변경합니다:

-Z(DATA)VREG=08-7F

정확한 버전 세부정보

이 변경사항은 버전 8.30.1 (EW24413)에 구현되었으며 버전 8.30.2의 릴리즈 노트에 문서화되어 있습니다.

힌트

기술 노트 98110 에서 비슷한 문제를 다룹니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.