Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
Помогите с ошибкой в IAR AVR
- 06-29-2004
- Konstantin Morozov
June 29, 2004, 12:36 pm

Всем привет !
После компиляции проекта выдается такое сообщение:
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.
После компиляции проекта выдается такое сообщение:
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
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

Спасибо за информацию, уже сам разобрался. Проект переносил из 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
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'ами не пользоваться. Это обходится, но как-то уж очень
неестественным образом.
С уважением, Дима Орлов.
> 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. А это можно
побороть ?
Почему при отладке в С-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> что-то не так делаю ?
Спай не симулирует периферию, только ядро. Для моделирования работы
периферийных устройств служат макросы. В доке про это достаточно подробно
написано с примерами.
KM> Еще пара вопросиков.
KM> Почему при отладке в С-SPY (Simulator) в таймерах не модифицируются TCNT0,
KM> TCNT1, и соответственно, не вызываются прерывания ? Это так задумано или я
KM> что-то не так делаю ?
Спай не симулирует периферию, только ядро. Для моделирования работы
периферийных устройств служат макросы. В доке про это достаточно подробно
написано с примерами.
--
H.Z.
### "Плюшкин наложил посреди комнаты кучу и долго ею любовался." (с) Из
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()
* 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
- » Требуется консультант
- — Next thread in » Microcontrollers (Russian)
-
- » Сплайн-интерполяция потактно
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » (PDF) Essentials of Anatomy & Physiology 2nd Ed by Kenneth Saladin
- — The site's Newest Thread. Posted in » Electronics (Polish)
-
- » Cortex-Mx MCUs with SWD access locked
- — The site's Last Updated Thread. Posted in » Embedded Programming
-