Цитата(lutik @ Oct 28 2005, 22:05)
подскажите пожалуйста как побороть такую траблу:
в коде есть такой кусок
PutStr("Строка"); который выводит строку в LCD индикатор.
при компиляции строка помещается в сегмент NEAR_C, а линкуется этот сегмент к коду..
дело тока в том, что в дебагер показывает что ищет эту константу в сегменте данных.
поправил xcl файл - указал так
-Z(DATA)NEAR_C=100-10FF
теперь вроде как усе нормально, и константа линкуется куда нада..
тока вот при создании бинария линкер зависает - создает bin файл и пишет туда сначала код моей проги а потом нулей на сколько свободного дискового пространства есть
кто может ткнуть носом - де грабли
Я делал так:
в .h файл писал строки:
__flash const char NASTROJKA[]="настройка";
и т.д....
т.е. указываем, что строки лежат во flash.
далее, PutStr() переписываешь так, чтобы она принимала аргумент из flash:
типа void PutStr(const char __flash *);
и вызываешь PutStr(NASTROJKA);
но учти, что на Mega128 и выше, возможно, потребуется вместо __flash указать __farflash.
А ещё лучше, перепиши ф-ю putchar() для вывода на свой индикатор, и пользуйся стандартными puts_P() и printf_P(). Они отличаются от обычних puts() и printf() тем, что берут строку из __flash.