Возможно ли расширение стековой области в памяти?

Peotr
Peotr аватар
Offline
Зарегистрирован: 17.02.2014

uni пишет:

Создал отдельную тему про виртуальную отладочную машину. Все вопросы по отладке конкретных скетчей можно перенести туда.

К стыду признаюсь, что ранее не работал с виртуальными машинами. Файл скачал, что дальше? Нужно инсталлировать? Не нашёл соответствующего файла.

Спасибо.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Вон оно что. Нужна специальная программа, которая эту машину запускает. Она бывает двух видов: VMWare Workstation 12.x и VMWare Player 12.x. Нужна именно 12-я версия, т.к. формат виртуальной машины сохранён в этой версии. Не помню бесплатная она или нет, можно скачать какую-то из них с торрентов. VMWare Player не может изменять виртуальную машину, это просто "движок" для её работы, а вот в VMWare Workstation их можно создавать. Тут нужно заметить, что только x64 версии доступны.

Посмотрите какие-нибудь ролики на youtube по этой теме и станет понятно. Я уже работаю над новой версией виртуалки, где добавил немного настроек, чтобы удобнее было работать. Архив потом придётся скачать и развернуть заново.

Мне удалось сэмулировать Arduino Uno на ATMega328P и я попробовал скетч из одной местной темы:

Я ещё потренируюсь и выложу новую редакцию машины с краткими инструкциями по первому использованию. Если научусь делать видео на своём слабом компе, то выложу простые ролики, демонстрирующие процесс сборки и отладки.

Peotr
Peotr аватар
Offline
Зарегистрирован: 17.02.2014

uni пишет:

Тут нужно заметить, что только x64 версии доступны.

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

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Под x32 новых версий не существует. А x64 версии должны быть на любом известном торрент трекере. Плеер вроде бы можно и бесплатно скачать с сайта vmware, но я его не пробовал.

Peotr
Peotr аватар
Offline
Зарегистрирован: 17.02.2014

uni пишет:

Под x32 новых версий не существует. А x64 версии должны быть на любом известном торрент трекере. Плеер вроде бы можно и бесплатно скачать с сайта vmware, но я его не пробовал.

Буду пробовать VirtualBox. Реально?

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Вообще, напрямую нет. Вроде бы можно сконвертирать как-то одну машину в другую, но не факт, что это будет успешно. Вообще, можно обойтись и без виртуальной машины, но тогда нужно на своём компе доустановить и настроить ПО самостоятельно. Я её создал, т.к. часто мне приходится мигрировать с одной машины на другую, а заново всё устанавливать очень напряжно.

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

Пока могу лишь посоветовать найти машину, на которой можно запустить vmware 12. Когда я создам инструкцию по использованию AVDM, то можно будет понять как там всё устроено и уже самостоятельно использовать эти знания для настройки собственного отладочного окружения.

Peotr
Peotr аватар
Offline
Зарегистрирован: 17.02.2014

uni пишет:

Вообще, напрямую нет.

Понятно, работа с avdm-20161022 записывается в перспективное планирование.

Спасибо.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

arduino328 пишет:

andriano пишет:

Просто ТС, похоже, не верит на слово, что в его случае самое оптимальное решение - сменить камень на что-то помощнее. Вот мне и захотелось, чтобы он пришел к этой мысли самостоятельно, взвесив все альтернативы.

Иногда можно изменить алгоритм и больший камень не потребуется.

Это - конечно. Но, согласитесь, в данном конкретном случае это гораздо более дорогое решение.

alexvs
Offline
Зарегистрирован: 22.07.2014

ЕвгенийП пишет:

Для контроля "что получается", можете воспользоваться простой программкой (библиотекой. если Вам так нравится), которая печатает сведения о текущей загрузке памяти. Она состоит из файлов

Спасибо за MemoryExplorer, по мере вызова всех процедур в loop(), в конце получаю такую картину

HEAP:@19A6(6566)-@404D(16461);
Unallocated from:@1E00(7680);
Stack pointer: @40CD(16589)
Free List:
	Block at:@19A6(6566); Size:2
	Block at:@19AE(6574); Size:2
	Block at:@19B6(6582); Size:2
	Block at:@19FA(6650); Size:2
	Block at:@1BC7(7111); Size:79
	Block at:@1C95(7317); Size:119
	Block at:@1D6B(7531); Size:18
-----

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Блин, хреново как-то. Свобожные блоки по 2 байта фрагментируют целое кило памяти. Я бы посмотрел откуда такая фрагментация берётся.

alexvs
Offline
Зарегистрирован: 22.07.2014

ЕвгенийП пишет:

Блин, хреново как-то. Свобожные блоки по 2 байта фрагментируют целое кило памяти. Я бы посмотрел откуда такая фрагментация берётся.

Ага, пытаюсь разобраться.