2011-08-29 5 views
2

SDCC 3.0.0을 사용합니다. 이 코드SDCC에서 컴파일러 경고

#include < pic16f84.h> 
void main(void) { 
TRISA0=0; 
RA0=1; 
} 

이러한 경고가 컴파일.

다달 루스의 @의 에우리디케 : ~/프로젝트/PIC $의 SDCC의 -I는/usr/share/SDCC 포함 /은/그림 -p16f84 TEST.C

/usr/share/sdcc/include/pic/pic16f84.h : 101 : 경고 182 : sfr 'INDF'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:101 : 경고 182 : sfr 'INDF'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:102 : 경고 182 : sfr 'TMR0'의 절대 주소가 범위를 벗어난 것일 수 있습니다.

/usr/share/sdcc/include/pic/pic16f84.h:102 : 경고 182 : sfr 'TMR0'의 절대 주소가 범위를 벗어난 것일 수 있습니다.

/usr/share/sdcc/include/pic/pic16f84.h:103 : 경고 182 : sfr 'PCL'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:103 : 경고 182 : sfr 'PCL'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:104 : 경고 182 : sfr의 절대 주소 'STATUS'이 (가) 범위를 벗어난 것 같습니다.

/usr/share/sdcc/include/pic/pic16f84.h:104 : 경고 182 : sfr의 절대 주소 'STATUS'이 (가) 범위를 벗어난 것 같습니다.

/usr/share/sdcc/include/pic/pic16f84.h:105 : 경고 182 : sfr 'FSR'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:105 : 경고 182 : sfr 'FSR'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:106 : 경고 182 : sfr의 절대 주소 'PORTA'가 (가) 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:106 : 경고 182 : sfr의 절대 주소 'PORTA'가 (가) 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:107 : 경고 182 : sfr 'PORTB'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:107 : 경고 182 : sfr 'PORTB'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:108 : 경고 182 : sfr 'EEDATA'의 절대 주소가 범위를 벗어난 것 같습니다.

/usr/share/sdcc/include/pic/pic16f84.h:108 : 경고 182 : sfr의 절대 주소 'EEDATA' 이 (가) 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:109 : 경고 182 : sfr 'EEADR'의 절대 주소가 범위를 벗어난 것 같습니다.

/usr/share/sdcc/include/pic/pic16f84.h:109 : 경고 182 : sfr 'EEADR'의 절대 주소가 범위를 벗어난 것 같습니다.

/usr/share/sdcc/include/pic/pic16f84.h:110 : 경고 182 : sfr 'PCLATH'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:110 : 경고 182 : sfr 'PCLATH'의 절대 주소가 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:111 : 경고 182 : sfr의 절대 주소 'INTCON'이 (가) 범위를 벗어났습니다.

/usr/share/sdcc/include/pic/pic16f84.h:111 : 경고 182 : sfr의 절대 주소 'INTCON'이 (가) 범위를 벗어났습니다.

? ASlink - 경고 - 정의되지 않은 글로벌 '_TRISA_bits'참조 모듈에 의한 '테스트'

은? ASlink - 경고 - 정의되지 않은 글로벌 '_PORTA_bits'참조 모듈에 의한 '테스트'

은 누구도 날이를 이해하는 데 도움이 경고? 신경 써야할까요?

+0

이 질문은 http://electronics.stackexchange.com/ – kenny

답변

1

면책 조항 : 나는 PIC

에서 일한 적이 내 생각 엔 컴파일러 (SFR의이다 - "특수 기능 레지스터를") 그 변수에 할당 된 주소가 있음을 감지 점이다 내에 있지 프로세서의 예상 메모리 맵. sfr 구문은 다음과 같습니다. __sfr __at (0x80) P0; 이것은 레지스터 변수를 특정 주소로 지정합니다. 경고는 해당 주소가 유효하지 않은 것으로 나타났습니다.

많은 임베디드 컴파일러 툴체인은 코드 및 데이터를 배치 할 실제 주소가 링커에 알리는 일종의 "링크 맵"명령 파일을 포함합니다. This SDCC user's guide은 ".lkr"파일을 사용할 수 있다고 제안합니다. (68 페이지 참조). 특정 프로세서에 맞는지 확인하십시오.

또한이 설명서에는 그림을 선택하는 데 올바른 플래그가 -mpic16이라고 나와 있습니다. -p16f86 옵션이 맞습니까?

+0

에 대한 답변을 생성 할 가능성이 더 높습니다. 감사합니다. 필자는 다른 컴파일러를 사용하여 링크 파일을 생성 할 필요가 없었으므로이 사실을 알지 못했습니다. SDCC에 .lnk 파일을 어떻게 지정합니까? 그냥 C 파일의 헤더로 포함시킬 수 있습니까? 설명서에서 -mpic16이 사진에 사용된다고 말하는 점이 옳습니다. -p16f84를 사용한 예제를 보았습니다. 이것이 제가 사용했던 이유입니다. 그들은 동일한 결과를 산출합니다. – Michael

+0

감사합니다. sdcc가 호출되는 방법을 편집했습니다. 'sdcc -mpic16 -I/usr/share/sdcc/include -L 16f84.lkr scoreboard.c' 그러나 "libdev18f452.lib : No such file or directory"라는 오류 메시지가 나타납니다. – Michael

+0

남자는 -mpic16 옵션에 대해서도 이렇게 말합니다. PIC 14 비트 프로세서 용 코드 생성 (개발 중, 완료되지 않음). 그래서 나는 SDCC로 잘못된 나무를 짖고있다. – Michael

관련 문제