sevastianovd
Apr 8 2008, 04:14
проблема в том, что нужно заполнить данными большой массив и разместить его в памяти программ
из документации ICC AVR нашел варианты типа
const char data[6000];
или
flash char data[6000];
в обоих случаях компилятор располагает массив в памяти данных и соответственно ругается на размер
подскажите, пожалуйста, как решить проблему
Нужно при описании этого массива сразу же и определить его.
Например:
const char AAA[]={2,3,4,7,0,1};
Цитата(sevastianovd @ Apr 8 2008, 09:14)

подскажите, пожалуйста, как решить проблему
__flash const char data[]={1,2,3,4,35};
Ой, сорри, это для IARа так
sevastianovd
Apr 8 2008, 06:13
Цитата(sysel @ Apr 8 2008, 08:11)

Нужно при описании этого массива сразу же и определить его.
Например:
const char AAA[]={2,3,4,7,0,1};
в этом случае компилятор выдает ошибку с кодом 100. что это значит не знаю
megachip
Apr 8 2008, 06:45
Цитата(sevastianovd @ Apr 8 2008, 07:14)

подскажите, пожалуйста, как решить проблему
Если не ошибаюсь то необходимо поставить галочку "Strings In FLASH Only".
у Вас очень изощренный компилятор.
Цитата(sevastianovd @ Apr 8 2008, 09:13)

в этом случае компилятор выдает ошибку с кодом 100. что это значит не знаю

Совет, записать так
const char AAA[]={2,3,4,7,0,1};
был правильный... Какая версия транслятора? Что за ошибка? Там же что-то кроме цифры 100 ещё что-то написано, наверное?
sevastianovd
Apr 8 2008, 07:28
ICC AVR V 6.30D транслятор imakerw v 1.04 (feb 2001)
описания ошибки не пишет только код
А если так:
const char AAA[6]={2,3,4,7,0,1};
Мало ли....
Цитата(sevastianovd @ Apr 8 2008, 10:28)

ICC AVR V 6.30D транслятор imakerw v 1.04 (feb 2001) описания ошибки не пишет только код
Это - ошибка транслятора? Не линкера ли? Стоит ли на ICC лицензия? Какая? Не демо-версия ли? У меня на V6.30 - транслируется и компануется правильно...
sevastianovd
Apr 8 2008, 08:19
Разобрался сам
проблема была в том, что при определении массива
const char data[]={1,2,3, ... ... ,6};
(число элементов массива 6000)
элементы шли одной строкой
поставил перевод строки через каждую тысячу и все заработало
Всем спасибо!
сизифов труд. а подключть файл к проекту с данными нельзя? или вера не позволяет?
Цитата(arttab @ Apr 9 2008, 04:40)

сизифов труд. а подключть файл к проекту с данными нельзя? или вера не позволяет?
Ну раз сказал "А", говори и "Б"...
В том смысле, опиши как это делается =)
arttab
Apr 10 2008, 00:29
Тема старая, подымалась не один раз.
Вот Вам зацепки:
указываем файл в опциях Linker - Config - Raw binary image.
Symbol - это имя всего этого массива чтобы на него ссылаться.
Segment - это имя сегмента (правьте xcl файл), где лежит весь этот массив.
Align - это выравнивание. Если у Вас массив байтов, то поставьте 1.
Почти все сказал.
В CVAVR ваще просто
flash char[] = {};
arttab
Apr 11 2008, 00:52
Цитата
В CVAVR ваще просто flash char[] = {};
в IAR нужно будет const добавить. Это намного сложнее?
если данные берутся из другой проги в электронном виде, то проще подключить файл с данными чем машинисткой работать
Цитата(arttab @ Apr 10 2008, 03:29)

Вот Вам зацепки:
указываем файл в опциях Linker - Config - Raw binary image.
Это - Вы шутите, что-ли? Речь шла о ICC AVR, однако...
A. Fig Lee
Apr 11 2008, 19:40
а в AVR Studio - как?
A. Fig Lee
Apr 11 2008, 20:51
Цитата(A. Fig Lee @ Apr 11 2008, 15:40)

а в AVR Studio - как?
нашел :
... __attribute__((progmem)) = {
{58, 1}, ...
arttab
Apr 13 2008, 14:20
Цитата
Это - Вы шутите, что-ли? Речь шла о ICC AVR, однако...
Позор на мою седую голову :-( просмотрел что это не IAR
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.