Open Source Hardware2011.06.01 17:13
지난번 포스팅때 8051 무료 컴파일러인 SDCC를 소개했었고, 이를 이용해서 W7100 TCP loopback 코드까지 만들어 봤었다.
이미 그때도 printf가 잘 안되어서 이상하다고 했었는데, 이번에 telnet 코드를 포팅하면서 문제를 해결했다.
문제는 SDCC 컴파일러가 제대로 C 코드를 ASM으로 변환을 해주지 못하는게 원인... 역시 무료 컴파일러라서 그런가???

void putchar (char c) 
{
  SBUF = c;
  while(!TI);
  TI = 0;
}

위 putchar 함수가 어셈으로 변환된 코드를 보니 TI = 0 을 CLR TI 로 변환을 하지 않네요.
그래서 다음과 같이 inline assembler를 사용해서 수정을 하니 잘 동작을 합니다.
void putchar (char c) 
{
 SBUF = c;
 while(!TI);
__asm 
 clr TI
__endasm;
}

W7100A에 telnet server code를 SDCC로 포팅한 코드로 첨부.



'Open Source Hardware' 카테고리의 다른 글

Arduino Education  (0) 2011.09.08
만화로 배우는 아두이노  (1) 2011.09.08
SDCC putchar 버그 수정  (0) 2011.06.01
마이크로칩 chipKIT for the Arduino™ Community  (0) 2011.05.24
이젠 오픈소스 하드웨어가 대세  (0) 2011.05.20
OSHW Logo 선정  (0) 2011.04.20
Posted by Like the ocean