реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Оверлеи - посоветуйте или раскритикуйте, аналог динамической линковки для AVR
ARV
сообщение Jul 5 2018, 11:01
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(aiwa @ Jul 5 2018, 04:01) *
Т.е. Вы планируете не все возможные варианты функций-эффкектов собрать в один файл, а на каждую допустимую комбинацию свой файл транслировать?

Да, именно такой подход планирую. В стандартной прошивке прошит стандартный эффект, а любые варианты пользователь по мере необходимости загружает сам.
Плюс "всех вариантов в одной прошивке" в том, что переключение эффекта быстрое и без ущерба микроконтроллеру.
Минус - память не резиновая, и угодить на все предпочтения нереально, в итоге из нравящихся мне эффектов (занимающих память!) другим и выбрать нечего...
Плюс оверлейного варианта - количество эффектов неограничено, каждый из них может быть существенно сложноее по алгоритму, т.к. ему достается гораздо больше памяти.
Минус оверлеев - долгая загрузка, т.е. переключение эффектов занимает заметное время, а так же не очень большой ресурс перезаписи flash.

Пока только вникаю в данные рекомендации и думаю о целесообразности... Пересилят ли плюсы минусы?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
aiwa
сообщение Jul 5 2018, 13:28
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(ARV @ Jul 5 2018, 14:01) *
Плюс "всех вариантов в одной прошивке" в том, что переключение эффекта быстрое и без ущерба микроконтроллеру.


Вы не совсем поняли. Я имел ввиду организацию дампа на карточке для подкачки.
Здесь два варианта: иметь все спецэффекты в одном "файле", или иметь кучу "файлов" с разнообразным набором эффектов.
В первом случае Вам по сути при перезаписи с карточки во флеш придется выполнить работу линкера. Этот случай более правильный и гибкий.

Второй случай: Вы прописываете файлы с предопределенной комбинацией эффектов.
В таком случае Вам разбираться ни с чем не нужно - просто вырезать в выхода компилятора необходимый дамп прошивки.
Но головняк будет с созданием набора таких дампов и с увеличением количества эффектов он будет несоизмеримо возрастать.


Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 5 2018, 13:39
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(aiwa @ Jul 5 2018, 16:28) *
просто вырезать в выхода компилятора необходимый дамп прошивки.

Это как? А адреса? А распределение ОЗУ?
Я в сообщении #13 привел пример исходников, которые можно собрать с известного адреса
и безболезненно с этого адреса грузить. Правда, придется под оверлей в основной программе
выделить ОЗУ и указатель на эту область сохранить во flash при загрузке оверлея.
Go to the top of the page
 
+Quote Post
aiwa
сообщение Jul 5 2018, 14:36
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(adnega @ Jul 5 2018, 16:39) *
Это как? А адреса? А распределение ОЗУ?

ТС вначале упоминал, что блоки ОЗУ распределены для каждого оверлея и адреса этих блоков уже известны на этапе разработки.



Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 5 2018, 15:51
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(aiwa @ Jul 5 2018, 17:36) *
ТС вначале упоминал, что блоки ОЗУ распределены для каждого оверлея и адреса этих блоков уже известны на этапе разработки.

Про ОЗУ ничего не было и вряд ли могло быть, т.к. расход ОЗУ уж очень индивидуальная вещь.
Да и размер ОЗУ у AVR крошечный.
А вот функции можно описать в таблице.

Цитата
Но вопрос в том, как скомпилировать модуль!

Я готовый шаблон привел для avr-gcc.
Go to the top of the page
 
+Quote Post
aiwa
сообщение Jul 5 2018, 16:51
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(adnega @ Jul 4 2018, 14:43) *
Перефразирую:
...
- нужно уметь запускать этот код и размещать данные по указанным доступным адресам/смещениям;
...


Мне казалось, что под размещающимися по указанным адресам данным как раз и подразумевается ОЗУ.


Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 5 2018, 17:13
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(aiwa @ Jul 5 2018, 19:51) *
Мне казалось, что под размещающимися по указанным адресам данным как раз и подразумевается ОЗУ.

Да, но не так вольно. У основной программы есть свободное ОЗУ. При загрузке оверлея можно
узнать сколько именно ОЗУ ему требуется. Выделить в ОЗУ основной программы необходимый участок и передать
указатель на него оверлею.
Хотя, если в один момент времени может работать только один оверлей, то можно и фиксировано выделить определенное
число байт.
Go to the top of the page
 
+Quote Post
aiwa
сообщение Jul 5 2018, 17:45
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(adnega @ Jul 5 2018, 20:13) *
Хотя, если в один момент времени может работать только один оверлей, то можно и фиксировано выделить определенное число байт.


Топикстартер поправит, если я неправильно понял: есть набор функций №1, №2, №3 ... и для их нужд заранее предопределены участки OЗУ.
Каждая из этих функций имеет несколько различных вариантов реализации (в теме - оверлеев), и каждый вариант может использовать только свою область ОЗУ (ну, естественно и ОЗУ стационарной программы).


Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 5 2018, 17:52
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(aiwa @ Jul 5 2018, 20:45) *
и для их нужд заранее предопределены участки OЗУ.
Каждая из этих функций имеет несколько различных вариантов реализации (в теме - оверлеев), и каждый вариант может использовать только свою область ОЗУ (ну, естественно и ОЗУ стационарной программы).

Это значительно упрощает реализацию.
Go to the top of the page
 
+Quote Post
ARV
сообщение Jul 9 2018, 08:24
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Отвечаю оптом всем, цитировать не очень удобно.
Идея такая: "основная программа" выделяет некий буфер, грубо говоря, все свободное ОЗУ за вычетом необходимого пространства стека и собственных нужд. Адрес этого буфера известен всем оверлеям на этапе разработки, т.е. в модуле оверлея это просто указатель на буфер ИЗВЕСТНОГО размера. Оверлей накладывает на этот указатель тип структуры собственных данных и работает с ними. таким образом, все оверлеи разделяют одну и ту же область памяти, никакого выделения/освобождения не требуется - только инициализация при старте оверлея.
Как вариант, каждый оверлей имеет функцию №1 init, которой передается адрес этого буфера, что принципиально ничего не меняет.
На счет того, что будет содержать в себе оверлей в плане эффектов цветомузыки, я еще до конца не решил - то ли один-единственный эффект, то ли некий набор... Принципиальным тут для меня является крайне небольшой ресурс перезаписей flash у МК AVR - гарантируется 1000 раз всего-то... Разумеется, буду продумывать механизм проверки имеющегося оверлея на карточке на загруженность, чтобы не переписывать понапрасну, но все равно, 1000 "переключений" режима цветомузыки - это как-то маловато...
Еще одна проблема, над решением которой придеттся думать, это необходимость передачи оверлею набора функций из основной программы, т.е. аналогично некоему BIOS, чтобы в каждом оверлее не тянуть одинаковые функции типа memcpy или иные, которые активно используются в цветомузыке...

Пока что все на этапе обдумывания, но, как я понял, принципиально идею оверлеев вы одобряете?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 9 2018, 14:18
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(ARV @ Jul 9 2018, 11:24) *
Адрес этого буфера известен всем оверлеям на этапе разработки, т.е. в модуле оверлея это просто указатель на буфер ИЗВЕСТНОГО размера.

Это упрощает реализацию. Оверлей всегда один в памяти МК в один момент времени?

Цитата(ARV @ Jul 9 2018, 11:24) *
Еще одна проблема, над решением которой придеттся думать, это необходимость передачи оверлею набора функций из основной программы, т.е. аналогично некоему BIOS, чтобы в каждом оверлее не тянуть одинаковые функции типа memcpy или иные, которые активно используются в цветомузыке...

Это легко. Только должен быть определен набор этих функций и известны все типы.

Цитата(ARV @ Jul 9 2018, 11:24) *
Пока что все на этапе обдумывания, но, как я понял, принципиально идею оверлеев вы одобряете?

Если переключать раз в неделю, то можно. Если с частотой 2 Гц, то исключено.
А вариант с Cortex-M не рассматриваете?
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jul 9 2018, 17:39
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(ARV @ Jul 9 2018, 11:24) *
Пока что все на этапе обдумывания, но, как я понял, принципиально идею оверлеев вы одобряете?

Не одобряем. Надо параметризовать эффект-автомат и придумать какой-нибудь упрощённый язык его программирования. Программу для него писать в виде обычного текстового файла и разрешить пользователям самим это делать.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 10 2018, 05:03
Сообщение #28


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (ARV @ Jul 4 2018, 15:22) *
Известно, что основная беда всех программ для МК AVR - это высокая трудоемкость модификации прошивки.

Добрый день! Я работал с AVR. Какая там высокая трудоёмкость модификации? Обычный микроконтроллер. А вот делать из него компьюте с возможностью выполнения программ с внешней памяти - та ещё трудоёмкость))) Мне кажется, если это нужно, возьмите более подходящий МК (что-нить на Cortex-M3/4 или на крайний случай M0). Они могут исполнять код из ОЗУ. А тут ужу простора для фантазии больше)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
_pv
сообщение Jul 10 2018, 08:06
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(ARV @ Jul 9 2018, 14:24) *
Пока что все на этапе обдумывания, но, как я понял, принципиально идею оверлеев вы одобряете?

не, лучше интерпретатор запилить какой-нибудь: ulua, pawn, forth наконец, если так уж хочется менять выполняемые программы.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jul 10 2018, 08:06
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(haker_fox @ Jul 10 2018, 08:03) *
Мне кажется, если это нужно, возьмите более подходящий МК (что-нить на Cortex-M3/4 или на крайний случай M0). Они могут исполнять код из ОЗУ. А тут ужу простора для фантазии больше)

Тут тяжёлый случай.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th April 2024 - 16:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01486 секунд с 7
ELECTRONIX ©2004-2016