реклама на сайте
подробности

 
 
> Как исправить ошибку.
Oleg_IT
сообщение Oct 9 2006, 05:45
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Перевожу программы из ATMega32 в ATMega128. Компилятор победил, а линковщик даёт ошибку
Error[e16]: Segment TINY_Z (size: 0x16 align: 0) is too long for segment definition. At least 0x16 more bytes needed. The problem occurred while
processing the segment placement command "-Z(DATA)TINY_I,TINY_Z,TINY_N=_..X_SRAM_TBASE:+_..X_SRAM_TSIZE", where at the moment of
placement the available memory ranges were "DATA:0--1"

Не пойму как исправить.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Oleg_IT
сообщение Oct 9 2006, 13:48
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Большие массивы я во __flash помещаю. А как понять, что переменная в области __tiny лежит?
Во заимствованном коде есть
#ifndef USB_BUFFER_SECTION
# define USB_BUFFER_SECTION "TINY_Z" /* if user has not selected a named section */
#endif

Может это мешает? Если да, то как это исправить?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 9 2006, 20:45
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Oleg_IT @ Oct 9 2006, 21:48) *
#ifndef USB_BUFFER_SECTION
# define USB_BUFFER_SECTION "TINY_Z" /* if user has not selected a named section */
#endif
Что то знакомое...Уж не c http://obdev.at ли вы драйвер USB мучаете?)))

Если так, то там определен буфер приема,

Код
__no_init UCHAR usbRxBuf[2][USB_BUFSIZE] __attribute__ ((section (USB_BUFFER_SECTION))) IAR_SECTION(USB_BUFFER_SECTION);
как раз для TINY сегмента, что бы можно быстро использовать указатель с использованием 8-и разрядного адреса. В меге128, скорее всего не получится ТАК использовать, там SRAM начинается с 0х0100. Можно попробовать убрать с буфера атрибут "TINY_Z", определить для буфера адрес в памяти, чтобы начинался с 0хХХ00. Только код ассемблеровский править придется, где идет прием пакета, и не факт, что он заработает...


--------------------
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Oct 11 2006, 07:30
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(prottoss @ Oct 10 2006, 00:45) *
Что то знакомое...Уж не c http://obdev.at ли вы драйвер USB мучаете?)))


Да, это из этого проекта. Я с атрибутами никогда не работал поэтому затрудняюсь в исправлении. Простое удаление __attribute__ ((section (USB_BUFFER_SECTION))) IAR_SECTION(USB_BUFFER_SECTION) даёт ошибку компиляции. Хорошо бы переработать код так, что бы он работал на всех AVR-ах. Возможно как?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 11 2006, 08:18
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Oleg_IT @ Oct 11 2006, 15:30) *
Цитата(prottoss @ Oct 10 2006, 00:45) *

Что то знакомое...Уж не c http://obdev.at ли вы драйвер USB мучаете?)))


Да, это из этого проекта. Я с атрибутами никогда не работал поэтому затрудняюсь в исправлении. Простое удаление __attribute__ ((section (USB_BUFFER_SECTION))) IAR_SECTION(USB_BUFFER_SECTION) даёт ошибку компиляции. Хорошо бы переработать код так, что бы он работал на всех AVR-ах. Возможно как?
Мне пока некогда эти заниматься, о возможном пути решения я написал выше в посте... Может стоит связаться с автором проекта?


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 00:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016