사이즈가 작은 fat을 구해서 포팅을 하는데 total data size가 139%나 나왔다.

avrgcc는 constant 배열을 data section으로 잡았다.
이것을 text section을 옮길수 없을까?
아무리 gcc 옵션을 바꾸어도 .rodata section으로 잡히는 것이 없었다.
linker option으로도 여러가지 try해보았지만 안 된다.

구글을 서치해서 아래의 글을 읽게 되었다.
http://www.nongnu.org/avr-libc/user-manual/pgmspace.html

간략히 설명하면 아래와 같이 요약된다.

#include <avr/pgmspace.h>
unsigned char mydata[3] PROGMEM ={1,2,3};

//왼쪽 형식 대신에 byte = mydata[0];
//address는 byte = &mydata[0];
byte = pgm_read_byte(&mydata[0]);

USB관련 descriptor들을 비롯해서 ram size를 줄이는 작업을 해야겠다.

TSKit