AVR Studio AVR GCC컴파일시 이유없는 에러 발생
정확한 에러의 원인을 찾지 못하고 에러가 발생하는 경우가 종종 있다.
정확한 원인은 잘 모르겠지만 아무래도 AVR Studio의 문제 인것 같다.
error result
Loaded plugin STK500
Loaded plugin AVR GCC
gcc plug-in: Output directory D:\work\avr\evm\ftp\default\ does not exist
gcc plug-in: Created directory D:\work\avr\evm\ftp\default\
gcc plug-in: Error: Object file not found on expected location
그 에러 원인중 몇가지가 있는데 우선 함수를 중복해서 기술하면 에러를 찾지 못한다. AVR Studio에서 에러 결과를 지우는것 같다.
이때는 Command 창에서 make해서 결과를 보고 원인을 찾을 수 밖에 없다.
또 하나는 2007년도 컴파일러 나오면서 wait_1us()함수의 ASM심벌이 변경 되었는데... 이 심벌을 찾을 수 없어 에러를 발생하는데 그 결과를 나타내지 않아 한참을 고생 했다. default폴더를 보니 delay.o만 생성이 않되어 있어 보니 delay.c의 wait_1us()함수에 있는 ASM 심벌이 변경되었다 하고 이를 수정하니 정상 컴파일 된다.
void wait_1us(u_int cnt)
{
/* 16MHz : 16 CLK 1us : 1 + (1 + (1+1)*4 + 1 + (2+1))*cnt + 1 + 1*/
/*
asm volatile
(
"movw r24, %A0" "\n\t"
"L_US:" "\n\t"
"ldi r26, lo8(4)" "\n\t"
"L_US0:" "\n\t"
"dec r26" "\n\t"
"brne L_US0" "\n\t"
"sbiw r24, 1" "\n\t"
"brne L_US" "\n\t"
"nop" "\n\t"
: :"r" (cnt)
);
*/
asm volatile
(
"movw r24, %A0" "\n\t"
"L_US%=:" "\n\t"
"nop" "\n\t"
"nop" "\n\t"
"nop" "\n\t"
"nop" "\n\t"
"nop" "\n\t"
"sbiw r24, 1" "\n\t"
"brne L_US%=" "\n\t"
"nop" "\n\t"
: :"r" (cnt)
);
}