Перейти к содержанию
    

Размещение массива во flash Mega8

проблема в том, что нужно заполнить данными большой массив и разместить его в памяти программ

из документации ICC AVR нашел варианты типа

const char data[6000];

или

flash char data[6000];

 

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

 

подскажите, пожалуйста, как решить проблему

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно при описании этого массива сразу же и определить его.

Например:

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

подскажите, пожалуйста, как решить проблему

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

 

Ой, сорри, это для IARа так

Изменено пользователем -SD-

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно при описании этого массива сразу же и определить его.

Например:

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

подскажите, пожалуйста, как решить проблему

 

Если не ошибаюсь то необходимо поставить галочку "Strings In FLASH Only".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

был правильный... Какая версия транслятора? Что за ошибка? Там же что-то кроме цифры 100 ещё что-то написано, наверное?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ICC AVR V 6.30D транслятор imakerw v 1.04 (feb 2001)

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ICC AVR V 6.30D транслятор imakerw v 1.04 (feb 2001) описания ошибки не пишет только код
Это - ошибка транслятора? Не линкера ли? Стоит ли на ICC лицензия? Какая? Не демо-версия ли? У меня на V6.30 - транслируется и компануется правильно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался сам :)

 

проблема была в том, что при определении массива

const char data[]={1,2,3, ... ... ,6};

(число элементов массива 6000)

элементы шли одной строкой

поставил перевод строки через каждую тысячу и все заработало

Всем спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сизифов труд. а подключть файл к проекту с данными нельзя? или вера не позволяет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сизифов труд. а подключть файл к проекту с данными нельзя? или вера не позволяет?

 

Ну раз сказал "А", говори и "Б"...

В том смысле, опиши как это делается =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема старая, подымалась не один раз.

Вот Вам зацепки:

указываем файл в опциях Linker - Config - Raw binary image.

 

Symbol - это имя всего этого массива чтобы на него ссылаться.

Segment - это имя сегмента (правьте xcl файл), где лежит весь этот массив.

Align - это выравнивание. Если у Вас массив байтов, то поставьте 1.

 

Почти все сказал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...