Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 06.06.2020
Сообщений: 5
1

Atmel Studio. Есть логика, или я тупой?

06.06.2020, 01:50. Просмотров 404. Ответов 13
Метки нет (Все метки)

Всем привет.
Сделал проект для Attiny13, который превышает по размеру внутреннюю память контроллера.
В целях оптимизации проекта хотелось бы увидеть его ASM версию. Ту, которую сформировал компилятор. Однако попытки отладки останавливаются на ошибке переполнения памяти. Иначе говоря, Atmel Studio на основании исходников на СИ сгенерировал прошивку, определил что её размер превышает объем памяти контроллера, и на этом всё. Увидеть наиболее объемные участки кода в ассемблерной интерпретации при этом не даёт.
Есть ли какие-то настройки, или хитрости, чтобы войти в режим отладки не смотря на несоответствие программы с параметрами контроллера, и посмотреть какие именно участки кода занимают наибольший объем памяти?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2020, 01:50
Ответы с готовыми решениями:

ArduinoICSP в ATMel Studio или CVAVR
Зашил на Ардуину скетч "ArduinoICSP". Подключил камень "ATtiny85". После некоторой разборки с...

Уроки или самоучитель Atmel Studio
Здравствуйте! Подскажите, пожалуйста, какие-нибудь толковые самоучители, видеоуроки и т.п. по...

Почему AVR Studio 4, а не Atmel Studio 6?
По какой причине большинство специалистов по AVR микроконтроллерам в основном используют AVR Studyo...

Atmel Studio
Подскажите где смотреть библиотеку Atmel Studio.

13
Тутошний я
1848 / 995 / 182
Регистрация: 03.11.2009
Сообщений: 3,321
Записей в блоге: 2
06.06.2020, 10:24 2
а нельзя в настройках взять контроллер с большей памятью?
0
0 / 0 / 0
Регистрация: 06.06.2020
Сообщений: 5
06.06.2020, 15:42  [ТС] 3
Это уже будет другой контроллер, с вероятно другой системой команд, со своими библиотеками и регистрами. Должен быть человеческий способ увидеть сгенерированный компилятором код.
0
404 / 192 / 40
Регистрация: 21.09.2008
Сообщений: 661
06.06.2020, 19:13 4
Вот и выросло поколение, для которых командная строка и Make-файлы - terra incognita.
avr-gcc c опциями -Os -S -mmcu=attiny13 "спасут отца русской демократии".
Если не справитесь сами и исходники не секрет, то выкладывайте, помогу получить ассемблерный листинг.
0
0 / 0 / 0
Регистрация: 06.06.2020
Сообщений: 5
07.06.2020, 00:12  [ТС] 5
Спасибо за наводку, думаю справлюсь.
По поводу "выросшего поколения" - совершенно лишнее, тем более к незнакомому человеку.
Форумы для того и существуют, чтобы иметь возможность получить совет в областях, в которых ты начинающий.
Думаю, существуют сферы, в которых и вам могут кое-что подсказать. Причем без ноток презрения и превосходства.
0
Тутошний я
1848 / 995 / 182
Регистрация: 03.11.2009
Сообщений: 3,321
Записей в блоге: 2
07.06.2020, 00:50 6
Цитата Сообщение от And_V Посмотреть сообщение
Это уже будет другой контроллер,
я же не предлагаю вместо неё atmega128 подключить.
взять attiny45/85. периферия не сильно отличается. и не оптимальный код точно не в настройках периферии. а в
Цитата Сообщение от And_V Посмотреть сообщение
со своими библиотеками
0
404 / 192 / 40
Регистрация: 21.09.2008
Сообщений: 661
07.06.2020, 06:42 7
And_V, Вы зря так думаете. Многие тонкости для использующих IDE остаются "за кадром". Поэтому опытные рекомендуют начинать с азов - ввода информации для компилятора через командную строку, она же консоль. Для проектов из более чем одного файла лучше научиться делать сборку посредством утилиты make. Плюс чтение документации на сам компилятор даёт представление о его возможностях.
Хорошие сборки AVR-GCC доступны здесь.
Документация на него от разработчиков. На английском.
Из русскоязычных ресурсов порекомендую две книги:
1. Гриффитс Артур "GCC. Настольная книга пользователей, программистов и системных администраторов", вышедшую в 2004 году в издательстве "ДиаСофт".
2. Клеменс Бен "Язык С в XXI веке", 2015 год, издательстве "ДМК".
Сканы книг в Сети найти не проблема.
2
0 / 0 / 0
Регистрация: 06.06.2020
Сообщений: 5
07.06.2020, 13:30  [ТС] 8
Цитата Сообщение от Grey Посмотреть сообщение
взять attiny45/85. периферия не сильно отличается.
У меня такая мысль появлялась, одновременно с четким пониманием что это уродливый костыль, и решение "на разок по-быстрому".

Безкостыльное направление в этой теме предложено sharpey,

Добавлено через 4 часа 51 минуту
Цитата Сообщение от sharpey Посмотреть сообщение
Многие тонкости для использующих IDE остаются "за кадром"
Да, действительно. Как я понял, Ваши рекомендации более применимы для сборки проектов в UNIX-системах через командную строку с Make-файлами, и опциями, набираемыми вручную. Либо для сборки через псевдо-IDE (разного рода блокноты с прикрученным GCC). К сожалению приментительно к Atmel Studio, где make-файл создается автоматически, на основании комбинации настроек проекта средствами самой среды - вариант вручную создаваемого make-файла это то еще извращение. В то же время добавление опций к avr-gcc ... -Os ... -mmcu=attiny13... и т.д. так же предполагается делать через разделы miscellaneous соответствующих настроек пректа внутри интерфейса.
В итоге по теме: ASM проекта с СИ вставками (то что и было нужно) удалось без проблем посмотреть и без опции "-S".
Не по теме: попытался использовать опцию
-mn-flash=num
(Assume that the flash memory has a size of num times 64 KiB.)
с тем расчетом, чтобы попробовать войти в режим debug не смотря на превышение размера флеш-памяти. Однако не помогло. Я не правильно понял смысл этой опции?
0
Тутошний я
1848 / 995 / 182
Регистрация: 03.11.2009
Сообщений: 3,321
Записей в блоге: 2
07.06.2020, 14:16 9
Цитата Сообщение от And_V Посмотреть сообщение
У меня такая мысль появлялась, одновременно с четким пониманием что это уродливый костыль, и решение "на разок по-быстрому".
костыль но с одним "но".
обычно код, библиотеки проверяют на более мощном контроллере. мало ли сколько ресурсов потребуется библиотеке, и сколько остальной задаче.
а потом оптимизируют код под более слабые. чтоб устройство дешевле было. или слабые завалялись. или зачем ставить мощный контроллер если код в слабый влазиет.
0
404 / 192 / 40
Регистрация: 21.09.2008
Сообщений: 661
07.06.2020, 16:22 10
Цитата Сообщение от And_V Посмотреть сообщение
Я не правильно понял смысл этой опции?
В документации недвусмысленно сказано, что подразумевается размер флэш-памяти кратный 64 килобайтам. В Вашем случае это неприменимо.
0
0 / 0 / 0
Регистрация: 28.03.2020
Сообщений: 2
07.06.2020, 19:22 11
Включительно в студии опцию генерации листинга и потом посмотрите в нем
0
5751 / 2600 / 350
Регистрация: 17.02.2013
Сообщений: 3,782
10.06.2020, 16:29 12
Цитата Сообщение от And_V Посмотреть сообщение
Либо для сборки через псевдо-IDE (разного рода блокноты с прикрученным GCC).
Те кто не пользуются IDE врятли используют блокнот. Не программистский это редактор. Совершенно.
Цитата Сообщение от And_V Посмотреть сообщение
К сожалению приментительно к Atmel Studio
Можно выдрать из Atmel Studio компилятор командной строки со всеми нужными ему файлами и эту Студио выкинуть. Текстовый редактор, компилятор командной строки и сама эта строка, лучше всего внутри FAR. А компиляцию оформлять BAT-файлом чтобы не набирать опции компилятора каждый раз. Редактируешь исходник в редакторе FAR-а (он подсвечивает синтаксис, очень удобно), потом запускаешь батник, получаешь HEX, смотришь листинг. Тоже технология, причем классик. Это не псевдо-IDE, это тру.
Просто тебе порекомендовали временно отказаться от IDE-шной технологии, перейти к этой и получить ассемблерный листинг через нее. Потому-что IDE - это графическая оболочка вокруг компилятора командной строки, причем совершенно не обязательная.

Добавлено через 8 минут
Цитата Сообщение от And_V Посмотреть сообщение
Ваши рекомендации более применимы для сборки проектов в UNIX-системах через командную строку с Make-файлами
make файлы это не обязательно Уних. В виндах тоже в полный рост, make может быть внутрях IDE. Просто кому-то по душе make-файл, мне так по душе батничек. Надо только один раз разобраться какие опции компилятору командной строки нужны и написать единый батничек на все случаи жизни с параметром в виде имени файла исходника.

Добавлено через 9 минут
Цитата Сообщение от And_V Посмотреть сообщение
вариант вручную создаваемого make-файла это то еще извращение.
На вкус и на цвет образца-то нет. Для меня вот вообще писать на Си для МК и жаловаться, что
Цитата Сообщение от And_V Посмотреть сообщение
Сделал проект для Attiny13, который превышает по размеру внутреннюю память контроллера.
это извращение. Люблю FAR (наследник Нортона и Волчары) и благородный ассемблер командной строки. И любой инструментарий всегда под рукой и всегда куда надо влезало.
0
0 / 0 / 0
Регистрация: 06.06.2020
Сообщений: 5
12.06.2020, 15:37  [ТС] 13
Цитата Сообщение от Ethereal Посмотреть сообщение
Те кто не пользуются IDE врятли используют блокнот. Не программистский это редактор.
Имелся в виду, разумеется, некий условный "блокнот". Печаталки с подсветками, рефакторингом и прочим обвесом.

Цитата Сообщение от Ethereal Посмотреть сообщение
Можно выдрать из Atmel Studio компилятор командной строки со всеми нужными ему файлами и эту Студио выкинуть.
Вместе с ним, как я понимаю, мы выкидываем достаточно мощный (хоть и не безглючный) функционал дебаггинга.
Я конечно не фанат этой IDE. Очень тяжелая и прожорливая. Однако на начальном уровне - довольно неплохой вариант быстро накидать что-то на СИ, а потом разбирать ASM код с целью оптимизаций.
0
5751 / 2600 / 350
Регистрация: 17.02.2013
Сообщений: 3,782
14.06.2020, 00:05 14
Цитата Сообщение от And_V Посмотреть сообщение
Вместе с ним, как я понимаю, мы выкидываем достаточно мощный (хоть и не безглючный) функционал дебаггинга.
Да, это будет болезненное выкидывание. Отладчик - это то, ради чего IDE стоит оставить.

Но моя практика меня научила, что отлавливать ошибки настолько трудоемко и на отлов можно столько времени убить, что лучше создавать ПО так чтобы по возможности их не делать. Создавать его как луковицу. Не писать ПО сразу и целиком, а начиная с "помигать светодиодом" потихоньку наращивать функционал, после каждого наращивания проверяя на шелезяке, главное чтобы хоть какая возможность вывода промежуточных результатов работы ПО была. В итоге отладчик, который конечно вещь нужная и полезная, оказывается так и не востребован. Луковица собирается, а прибегнуть к нему ни разу и не приходится.

Добавлено через 11 минут
В общем мысля тут такая, что можно слепить такую ошибку, что потом замучиться ее искать в отладчике. Поэтому лучше десять раз проверять исходник глазом и обдумывать что написал, чем до необходимости запускать отладчик доводить.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2020, 00:05

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

Atmel studio 6.1
Здравствуйте. столкнулся с проблемой запуска программы. вылетает сообщение:debugging tool is not...

Atmel Studio 6.0
Здравствуйте! Подскажите пожалуйста , не пойму почему при запуске программы компилятор выдает : ...

Atmel studio 6
Вопрос таков, есть некая библиотека, в lcd_lib.h прототипы, в lcd_lib.c сами функции, оба файла...

Atmel Studio
помогите написать программу работы светофора на языке Assembler

Atmel Studio 7 компиляция
После компиляции вылетают 3 сообщения: Message expected 'uint8_t * {aka unsigned char *}' but...

Программирование в Atmel Studio 7
Доброго всем дня. Как-то по случаю от друга получил наследство в виде нескольких десятков...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.