본문 바로가기

[AVR]/AVR_EVM

AVR Studio AVR GCC컴파일시 이유없는 에러 발생시 대처

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)
 );  
 
}

반응형