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

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

Сообщение _dark »

ARV писал(а): ARV похоже это правильный пинок...
...нет не помогло...
Правильно включаю?

Код: Выделить всё

## Linker flags
...
LDFLAGS += -lm 
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18862
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

я с makefile не очень дружу... в своем проекте я добавлял эту опцию для запуска avr-gcc, который сам уже потом линкер вызывает - и идет эта опция к линкеру или требуется самому компилятору - этого я не знаю :(
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

Сообщение _dark »

Судя по настройкам в IDE опция m относится к линкеру.
(но сам пользую только makefile)

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

Сообщение ARV »

"полное" описание, пожалуй, только в документации на GCC... но там куча платформо-зависимых опций...
m - это не опция, а имя библиотеки m.a, но без расширения. вроде как опция -l задает имя принудительно подключаемой библиотеки...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Говорящий с текстолитом
Аватара пользователя
Сообщения: 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-файл вручную? Формат-то у него довольно простой.
Ответить

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