Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Размещение массива во flash Mega8
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
sevastianovd
проблема в том, что нужно заполнить данными большой массив и разместить его в памяти программ
из документации ICC AVR нашел варианты типа
const char data[6000];
или
flash char data[6000];

в обоих случаях компилятор располагает массив в памяти данных и соответственно ругается на размер

подскажите, пожалуйста, как решить проблему
sysel
Нужно при описании этого массива сразу же и определить его.
Например:

const char AAA[]={2,3,4,7,0,1};
-SD-
Цитата(sevastianovd @ Apr 8 2008, 09:14) *
подскажите, пожалуйста, как решить проблему

__flash const char data[]={1,2,3,4,35};

Ой, сорри, это для IARа так
sevastianovd
Цитата(sysel @ Apr 8 2008, 08:11) *
Нужно при описании этого массива сразу же и определить его.
Например:

const char AAA[]={2,3,4,7,0,1};


в этом случае компилятор выдает ошибку с кодом 100. что это значит не знаю sad.gif
megachip
Цитата(sevastianovd @ Apr 8 2008, 07:14) *
подскажите, пожалуйста, как решить проблему


Если не ошибаюсь то необходимо поставить галочку "Strings In FLASH Only".
sysel
у Вас очень изощренный компилятор.
Палыч
Цитата(sevastianovd @ Apr 8 2008, 09:13) *
в этом случае компилятор выдает ошибку с кодом 100. что это значит не знаю sad.gif
Совет, записать так
const char AAA[]={2,3,4,7,0,1};
был правильный... Какая версия транслятора? Что за ошибка? Там же что-то кроме цифры 100 ещё что-то написано, наверное?
sevastianovd
ICC AVR V 6.30D транслятор imakerw v 1.04 (feb 2001)

описания ошибки не пишет только код
sysel
А если так:

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
Разобрался сам smile.gif

проблема была в том, что при определении массива
const char data[]={1,2,3, ... ... ,6};
(число элементов массива 6000)
элементы шли одной строкой
поставил перевод строки через каждую тысячу и все заработало
Всем спасибо!
arttab
сизифов труд. а подключть файл к проекту с данными нельзя? или вера не позволяет?
sysel
Цитата(arttab @ Apr 9 2008, 04:40) *
сизифов труд. а подключть файл к проекту с данными нельзя? или вера не позволяет?


Ну раз сказал "А", говори и "Б"...
В том смысле, опиши как это делается =)
arttab
Тема старая, подымалась не один раз.
Вот Вам зацепки:
указываем файл в опциях Linker - Config - Raw binary image.

Symbol - это имя всего этого массива чтобы на него ссылаться.
Segment - это имя сегмента (правьте xcl файл), где лежит весь этот массив.
Align - это выравнивание. Если у Вас массив байтов, то поставьте 1.

Почти все сказал.
dENIM
В CVAVR ваще просто
flash char[] = {};
arttab
Цитата
В CVAVR ваще просто flash char[] = {};

в IAR нужно будет const добавить. Это намного сложнее?
если данные берутся из другой проги в электронном виде, то проще подключить файл с данными чем машинисткой работать
Палыч
Цитата(arttab @ Apr 10 2008, 03:29) *
Вот Вам зацепки:
указываем файл в опциях Linker - Config - Raw binary image.
Это - Вы шутите, что-ли? Речь шла о ICC AVR, однако...
A. Fig Lee
а в AVR Studio - как?
A. Fig Lee
Цитата(A. Fig Lee @ Apr 11 2008, 15:40) *
а в AVR Studio - как?


нашел :

... __attribute__((progmem)) = {
{58, 1}, ...
arttab
Цитата
Это - Вы шутите, что-ли? Речь шла о ICC AVR, однако...


Позор на мою седую голову :-( просмотрел что это не IAR
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.