Помогите с ошибкой в IAR AVR

Do you have a question? Post it now! No Registration Necessary

Threaded View
Всем привет !
После компиляции проекта выдается такое сообщение:

Error[e16]: Segment TINY_I (size: 0x316 align: 0) is too long for segment
definition. At least 0x276 more bytes needed. The problem occurred while
processing the segment placement command
"-Z(DATA)TINY_I,TINY_Z,TINY_N=_..X_SRAM_BASE-_..X_SRAM_TEND", where at the
moment of placement the available memory ranges were "60-ff"
   Reserved ranges relevant to this placement:
   00000054 - 00000087  SWITCH   00000054 - 00002431  CODE   00000054 - 00002437
 INITTAB   00000054 - 0000274D  TINY_ID

Что это такое и как с этим бороться ?
P.S. IAR v.2.28A, ATMega16.


Re: Помогите с ошибкой в IAR AVR
Hello, Konstantin!
You wrote  on Tue, 29 Jun 2004 12:36:30 +0000 (UTC):

 KM> Error[e16]: Segment TINY_I (size: 0x316 align: 0) is too long for
 KM> segment definition. At least 0x276 more bytes needed.
 KM> The problem occurred while processing the segment placement command
 KM> "-Z(DATA)TINY_I,TINY_Z,TINY_N=_..X_SRAM_BASE-_..X_SRAM_TEND", where
 KM> at the moment of placement the available memory ranges were "60-ff"
 KM>    Reserved ranges relevant to this placement:
 KM>    00000054 - 00000087  SWITCH   00000054 - 00002431  CODE
 KM> 00000054 - 00002437  INITTAB   00000054 - 0000274D  TINY_ID

 KM> Что это такое и как с этим бороться ?
 KM> P.S. IAR v.2.28A, ATMega16.

    Памяти в сегменте TINY_I не хватило. Переходи к модели памяти SMALL
(шукай в ключах компилятора/линкера).

Alexander,Derazhne@adic,kiev,ua (replace commas with dots)
Alexander Derazhne



Re: Помогите с ошибкой в IAR AVR
Quoted text here. Click to load it

Спасибо за информацию, уже сам разобрался. Проект переносил из Image Craft, там
были строчки объявления констант во флеше типа const char tst0[]="abc",  заменил
на __flash const char tst0[]="abc" - ошибка исчезла. Но появилась новая
проблема: при выводе строки типа printf("P=   %s",tst0) печатается какая-то
белиберда. если убрать из объявления константы __flash - все работает правильно.
Где надо копаться ?


Re: Помогите с ошибкой в IAR AVR
Hello, Konstantin!
You wrote to Alexander Derazhne on Wed, 30 Jun 2004 10:19:28 +0000 (UTC):

 KM> исчезла. Но появилась новая проблема: при выводе строки типа
 KM> printf("P=   %s",tst0) печатается какая-то белиберда. если убрать из
 KM> объявления константы __flash - все работает правильно. Где надо
 KM> копаться ?

    В Гарвардской архитектуре. Я сам пока с этим не разбирался, у меня
сейчас голый асм, но printf явно пытается выбирать значения из ОЗУ, в то
время как строчка живёт в ПЗУ, т.е. совсем в другом адресном пространстве с
другими командами доступа (!! это не другой "сегмент", как на интелах!).
Кажется, у IAR'а были ключики/слова использовать трёхбайтные адреса, но
библиотека (из которой printf берётся) должна тоже это поддерживать.

Alexander,Derazhne@adic,kiev,ua (replace commas with dots)
Alexander Derazhne



Re: Помогите с ошибкой в IAR AVR
Hello, Alexander Derazhne !

 >  KM> исчезла. Hо появилась новая проблема: при выводе строки типа
 >  KM> printf("P=   %s",tst0) печатается какая-то белиберда. если убрать из
 >  KM> объявления константы __flash - все работает правильно. Где надо
 >  KM> копаться ?

 >     В Гарвардской архитектуре. Я сам пока с этим не разбирался, у меня

Дело не в архитектуре, а в мягко говоря странных подходах IAR'а к
кодогенерации. Hаписано const, да еще прямо указано, что flash, какого черта
копировать в ОЗУ константные данные? А он это делает даже если никакими
библиотечными printf'ами не пользоваться. Это обходится, но как-то уж очень
неестественным образом.


С уважением, Дима Орлов.


Re: Помогите с ошибкой в IAR AVR
Еще пара вопросиков.
Почему при отладке в С-SPY (Simulator) в таймерах не модифицируются TCNT0,
TCNT1, и соответственно, не вызываются прерывания ? Это так задумано или я
что-то не так делаю ?
Хотел отладить в AVR Studio 4, так IAR выдает ошибку при генерации coff файла -
Error[e92]: Cannot use the coff output format with this cpu. А это можно
побороть ?


Помогите с ошибкой в IAR AVR
Thu, 01 Jul 2004 07:32:24 +0600 Konstantin Morozov wrote to Konstantin Morozov:

KM> Еще пара вопросиков.
KM> Почему при отладке в С-SPY (Simulator) в таймерах не модифицируются TCNT0,
KM> TCNT1, и соответственно, не вызываются прерывания ? Это так задумано или я
KM> что-то не так делаю ?

    Спай не симулирует периферию, только ядро. Для моделирования работы
периферийных устройств служат макросы. В доке про это достаточно подробно
написано с примерами.

--
H.Z.

### "Плюшкин наложил посреди комнаты кучу и долго ею любовался." (с) Из
We've slightly trimmed the long signature. Click to see the full one.
Re: Помогите с ошибкой в IAR AVR

 01 июля 04, Konstantin Morozov wrote to Konstantin Morozov

KM> Хотел отладить в AVR Studio 4, так IAR выдает ошибку пpи генеpации coff
KM> файла - Error[e92]: Cannot use the coff output format with this cpu. А
KM> это можно побоpоть ?

Hадо генеpиpовать не coff а ubrof8, AVR Studio его понимает.
Пpавда это не всегда pешение пpоблемы - есть симулятоp понимающий только coff,
пpичем в фоpмате AVR Studio 3.x.
 

Bye

Re: Помогите с ошибкой в IAR AVR
Пpивет Konstantin !
* 30/Jun/2004 14:19, Konstantin Morozov -> Alexander Derazhne:

 KM> заменил на __flash const char tst0[]="abc" - ошибка исчезла. Hо
 KM> появилась
 KM> новая проблема: при выводе строки типа printf("P=   %s",tst0) печатается
 KM> какая-то белиберда. если убрать из объявления константы __flash - все
 KM> работает
 KM> правильно. Где надо копаться ?

Используй printf_P()


Site Timeline