AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Неправильно. Библиотека называется libm.a, просто опция -l подразумевает префикс lib и окончание .a, кстати при желании ее можно заменить на -L<full_path>/libm.a, просто это дольше и бесполезнее.
Платформо-специфичных опций в gcc используется не так много. Единственная которая вспоминается с ходу это -mmcu
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Понадобилось сделать длинный массив, который будет хранится во внешней памяти.

Попробовал его сгенерить как массив EEPROM в атмел студио (не хочется безликими цифрами набивать внешнюю память) переопределив #define E2END , однако все равно размер данных остался обрезанным по фактическому размеру еепром МК.

Подскажите как сделать такой файл, для последующей прошивки во внешнюю память. Спасибо.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

Сообщение _dark »

Z_h_e писал(а):Понадобилось сделать длинный массив, который будет хранится во внешней памяти.

Массив в XRAM? Что хотите в нем видеть?
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Нет, не в RAM. Было бы не плохо, если удалось скопмиллить дамп для внешний флешки. Желательно в проекте для МК, чтобы легко править дамп, изменениями каких-то определений и пр.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

Сообщение _dark »

Так врядли получится.
Вам придется написать/подключить драйвер внешнего девайса, т.к. в этом случае МК обращается не к памяти, а к устройству через соответвтующий интерфейс (SPI например)
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Вы абсолютно не поняли мою задачу.
Мне достаточно, например, чтобы файл epp скомпиллился в нужный мне размер, а не был ограничен реальным размером еепром МК.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

Сообщение _dark »

Z_h_e писал(а):Вы абсолютно не поняли мою задачу.
Значит Вы ее так описываете :) Я к сожалению не телепат....

Сами прикиньте, Вы указываете компилятору конкретные камень с конкретным размером EEPROM, который не может расширятся (физически не может!).
Что по Вашему должен делать компилятор?

Массив большего размера чем память на камне можно объявить только в XRAM, т.е. расширить только RAM
(при этом компилятор кстати дает интересный репорт типа:
Device: atmega128
Program: 43108 bytes (32.9% Full)
(.text + .data + .bootloader)
Data: 8297 bytes (202.6% Full)
(.data + .bss + .noinit)
т.е. указывает переполнение памяти, но это к слову)
"Других методов медицина не знает" :)))
"Массив большего размера чем память на камне можно объявить только в XRAM"
- это тоже не совсем верно :), но это к даному делу не относится
Последний раз редактировалось _dark Чт дек 08, 2016 17:30:28, всего редактировалось 3 раза.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Конкретный размер ЕЕПРОМ где-то определен.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

Сообщение _dark »

Теоретически да...
Нужно лезть в файлы студио,
например тут (может где и еще)
c:\Program Files (x86)\Atmel\Atmel Studio 6.0\devices\*.xml
<address-space endianness="little" name="eeprom" id="eeprom" start="0x0000" size="0x1000">
<memory-segment start="0x0000" size="0x1000" type="eeprom" rw="RW" exec="0" name="EEPROM" pagesize="0x08"/>
</address-space>
...
только не пойму что это даст, зачем такие извращения?
просто я например, за 15 лет ни разу не испытывал такой потребности...
да я даже массивы в EEPROM не размещаю! не фиг им там делать
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

А где Вы размещаете данные длиной например 200КБ и больше?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

Сообщение _dark »

Смотря какой камень и что нужно по задаче...

Например, для ATmega128 подключаю внешнюю FLASH и работаю с ее МС как внешним устройством,
размер данных при этом может быть и 1Мb и более.
Обработка таких монстров данных ведутся через "окна", которые скачиваются в RAM/XRAM, но это зависит от задачи...

А для временны'х трендов, лучше вести файл БД во FLASH (SD карта)...
т.е. все зависит от задачи

но в любых случаях, если данные не лезут в RAM, работать приходится с внешней памятью как с внешним устройством
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

_dark писал(а):Например, для ATmega128 подключаю внешнюю FLASH и работаю с ее МС как внешним устройством,
Z_h_e писал(а):Понадобилось сделать длинный массив, который будет хранится во внешней памяти.
Z_h_e писал(а):Нет, не в RAM. Было бы не плохо, если удалось скопмиллить дамп для внешний флешки.
Не знаю что тут не понятного и зачем рассказывать мне как обрабатывать большие данные, ну да ладно. Дело не в этом.

Не получилось с правкой файла xml. Все тот же размер. Собственно не обязательно генерить как файл еепром, может другие методы есть, если есть. С ЕЕПРОМ показалось самым простым способом решить данную задачу.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

Сообщение _dark »

То что Вы пишите, мне как жестянщику не понятно :)

Если память внешняя, то вопрос какая? адресуемая напрямую? т.е. она поддерживается шиной адреса данных МК?
Тип камня какой? иначе не понятно в чем проблемма
Причем здесь EEPROM?
Чем FLASH программ не устраивает?
т.е. у меня много вопросов но они могут быть все мимо...
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Мне просто надо скомпиллить дамп, из осмысленных констант и макросов.
Z_h_e писал(а):не хочется безликими цифрами набивать внешнюю память
И дампу абсолютно не важно для чего он будет предназначаться.
_dark писал(а):Причем здесь EEPROM?
Z_h_e писал(а):С ЕЕПРОМ показалось самым простым способом решить данную задачу.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

Сообщение _dark »

А размещать его где и как собираетесь?

1.В конце концов возьмите камень с большей EEPROM
2.Генерите дамп с константами для FLASH, и выкусите кусок данных оттуда (незнаю насколько он "чистым" будет без добавок от компилятора и линкера)

Добавлено after 35 minutes 12 seconds:
зы
Z_h_e писал(а):А где Вы размещаете данные длиной например 200КБ и больше?
Вопрос подразумевает реальное размещение данных в какойто МС (или в МК или во внешней МС) :)
как это делаю я объяснил, и это "где и как" зависит от задачи

А заполнение внешней памяти "внятными" данными (через генерацию дампа) ничем не лучше заполнения любым генератором чисел (если нет цели их использования).
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Может проще сгенерировать hex-файл вручную? Формат-то у него довольно простой.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Мне собственно не так важен формат, пускай будет bin, например.
Написать какую-нибудь прожку конечно можно, но не хочется, особенно когда среда программирования такую задачу в принципе выполнять умеет .
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

я дико извиняюсь, но так и не могу понять проблему...

Z_h_e, вы хотите в тексте исходника набить 200 килобайт бинарных данных в виде массива, чтобы потом компилятор сформировал вам некий hex для заливки в отдельную микросхему EEPROM - я верно уловил суть ваших пожеланий?

Ни Си, ни препроцессор Си не предоставляет каких-либо удобных средств, чтобы как-то автоматизировать процесс ввода данных, даже если алгоритм их последовательного создания известен. т.е. метод для этого только один: COPY-PASTE. или вручную... но 200К бинарных данных это в нотации синтаксиса Си по меньшей мере 1М текста! вы на самом деле решили набивать это руками в IDE? :shock:

тут или я чего-то не понимаю, или одно из двух :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

ARV писал(а):Z_h_e, вы хотите в тексте исходника набить 200 килобайт бинарных данных в виде массива, чтобы потом компилятор сформировал вам некий hex для заливки в отдельную микросхему EEPROM - я верно уловил суть ваших пожеланий?
Возможно даже больше. Делаю не для себя, некий пользователь по мере неких требований будет заполнять и корректировать данные, которые постепенно станут достаточно большими.
ARV писал(а):Ни Си, ни препроцессор Си не предоставляет каких-либо удобных средств, чтобы как-то автоматизировать процесс
То что есть, константы и макросы, не лучшим образом, но значительно упрощают это дело.
ARV писал(а):вы на самом деле решили набивать это руками в IDE?
В жизни так случается, что приходится работать руками. Что то посдказывает мне, что на те же AVR даташиты содержать значительный объем информации набитый руками и что-то никто по этому поводу не переживает. Да тут можно много примеров привести.

Разговор очень часто уходит в сторону от заданного вопроса. Когда из праздного любопытства, когда то благадаря троллям, а когда-то ради желания уточнить для чего и предложить лучшее решение.
Я представляю в голове другие пути решиния данной задачи. Но тут меня интересует именно тот вопрос, что задал.
Возможно существует метод снятия ограничения по объему кода, рад был бы его услышать, хотя может он оказаться таким извращенным что не стоит и пробовать. Ну а если его нет или просто никто не знает - ну нет так нет.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Z_h_e писал(а):Разговор очень часто уходит в сторону от заданного вопроса. Когда из праздного любопытства, когда то благадаря троллям, а когда-то ради желания уточнить для чего и предложить лучшее решение.
можете считать меня хоть троллем, хоть эльфом, хоть гномом :))) но ваша задача имеет 2 решения: то, что задумали вы и правильное :)))

по-вашему эта задача решается так: берется утилита, конвертирующая текст в бинарный формат, в makefile пишется правило ее запуска в ответ на расширение файла .txt, файл включается в проект и далее по тексту - при помощи редактора IDE файл создается, при помощи makefile собирается проект. но, имхо, это натягивание жабы на глобус - эстество какое-то :)))

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

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «AVR»