회원가입 ID/PW 찾기
AA

안녕하세요,

케일컴파일러에서 왜 이런에라가 납닊?

error C249 : 'PDATA' : SEGMENT TOO LARGE

고수님들의 도움이 필요합니다.

 

댓글 2
  • No Profile

    사용하고 계시는 프로세서 모델의 ram과 flash 용량을 확인하세요.

    배열로 잡고 있거나 문자열이 너무 크지 않은지 확인해보세요.

    pdata라면 flash 영역일거 같군요. 8051 안한지가 너무 오래되었나 보군요.


    관련하여 첨부파일 올립니다.

  • No Profile

    에러 메시지 대로 PDATA가 너무 큰거입니다.

    프로그램에서 변수나 상수를 선언해서 쓰고 컴파일하면 종류에 따라 적절한 segment라는 메모리 영역에 할당됩니다. 어떤 선언이 어떤 segment에 들어가는지를 보려면 c 컴파일러 메뉴를 보든지 컴파일 후 생기는 list 혹은 map 파일(이건 컴파일러 마다 달라요)을 열어보든지 컴파일한 어셈블러 파일을 열어보던지 하면 알 수 있습니다. 

    해결책은 해당 변수의 숫자를 줄이던지 줄일 수 없을 때는 segment에 해당하는 메모리가 큰 마이컴을 사용하던지 하면 되는데 간혹 마이컴의 메모리 크기와 상관없이

     프로그램에서 크기를 정하는 경우도 있습니다. 컴파일러 메뉴얼을 찾아보면 segment 종류,크기를 설정하는 방법과 들어있는 file을 찾을 수  있을겁니다.

    이경우는 해당 부분을 찾아서 고치면 되지요

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
  • 말로하는 사랑은 쉽게 외면할 수 있으나 행동으로 보여주는 사랑은 저항할 수가 없다.
    - 무니햄
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.