Dr Zlo
в неизвестный заранее кусок памяти
Dr Zlo
но это на самом деле просто, куча реализаций есть
Dr Zlo
проблема у меня в том что я при этом хочу разделить код и переменные, чтобы код положить в флеш-память, а переменные в ОЗУ
Dr Zlo
и эти два адреса так же заранее не известны
Dr Zlo
да, на МК и в отсутствии MMU
Yuriy
... прикольно. очень много подводных камней наверное. а смысл действа этого - динамическая линковка - модульность... почему не весь флешь - зонами что дает? в облаке сбилдилось залилось
Alexey
Dr Zlo
потому что это будут "приложения" от пользователей
Dr Zlo
которых может быть загружено несколько одновременно, в неизвестном порядке
Dr Zlo
тем что интерпретатор на порядок-два медленнее
Dr Zlo
у меня в том числе и dsp код исполняется
Alexey
Dr Zlo
+ нужно сразу предусмотреть обертки под всё
Yuriy
тем что интерпретатор на порядок-два медленнее
тут не совсем очевидно как сравнить - он может быть ровно такой же - по скорости - если абстракции типа - кнопку нарисуй и звук обработай фильтром %5 - а если пишем обработку саму на нём - наверно да
Alexey
Тоже недавно заинтересовался выполнением уже скомпилированного кода с внешнего источника в рантайме. Типо динамической библиотеки. Но ничего конкретного и простого для микроконтроллеров пока не нашел
Alexey
Dr Zlo
Yuriy
Dr Zlo
это, кстати, ещё упрощает портируемость кода с других платформ
Dr Zlo
не, то что я сказал - это реализации dynamic linking в мк
Dr Zlo
к сожалению все они используют строго оперативную память для выполнения кода
Yuriy
похоже просто на нормальную ОС
так нормальность это - компромисс всегда - не поэтому же что написать идеальную нельзя она не написана - имхо - просто рожденный ползать фигово летает - но ползет дай боже
Dr Zlo
Alexey
Вот ребятки сейчас проект пилят. Хотят сделать что-то типо такого. То есть пользователь компилит, условно, свой скетч (или нормальную программу) и зашивает в дополнение к основной прошивке. Вопрос только как это работает?
Alexey
Видео, примерно демонстрирующее, как в идеале будет работать написание своих программ для флиппера. Пока это не совсем правда, проект собирается с кучей костылей, но когда мы полностью переедем на platformIO, процесс подготовки окружения будет выглядеть так:
Флиппер в режиме обновления прошивки определяется как HID устройство, и ему не нужны драйвера на всех операционных системах. Vscode тоже работает на всех платформах: windows, mac, linux.
1. Устанавливаем VScode
2. Клонируем проект из гита и одним кликом соглашаемся установить зависимости, которые тащат все библиотеки и компилятор.
В итоге готовая среда для разработки разворачивается в три клика без пердолинга с драйверами, подключения библиотек вручную по ссылке (как это происходит в Arduino IDE).
Ребята с CLion, Emacs, SublimeText тоже должны быть довольны, PlatformIO работает и с ними, хотя я не пробовал.
https://youtu.be/HqoaERuM3IU
Yuriy
Flipper Zero can run your code as a separate plugin without losing its own firmware, so unlike other basic Arduino boards, Flipper can store multiple programs at the same time without losing its main firmware.
Yuriy
под это может загрузчик менять адреса и хоть 100 " программ "но не динамическая же линковка - хотя надо конечно смотреть - просто задача и не требует ее
Alexey
не, я так понял там не через загрузчик делается, ибо всегда есть список плагинов и ты просто выполняешь его код сразу. Если бы это был загрузчик была бы инициализация дисплея заново и тд
Yuriy
Dr Zlo
Вы таки не поверите...
Yuriy
ну смотреть гит сразу не интересно - погадать там попридумывать самокаты свои
Dr Zlo
Видео, примерно демонстрирующее, как в идеале будет работать написание своих программ для флиппера. Пока это не совсем правда, проект собирается с кучей костылей, но когда мы полностью переедем на platformIO, процесс подготовки окружения будет выглядеть так:
Флиппер в режиме обновления прошивки определяется как HID устройство, и ему не нужны драйвера на всех операционных системах. Vscode тоже работает на всех платформах: windows, mac, linux.
1. Устанавливаем VScode
2. Клонируем проект из гита и одним кликом соглашаемся установить зависимости, которые тащат все библиотеки и компилятор.
В итоге готовая среда для разработки разворачивается в три клика без пердолинга с драйверами, подключения библиотек вручную по ссылке (как это происходит в Arduino IDE).
Ребята с CLion, Emacs, SublimeText тоже должны быть довольны, PlatformIO работает и с ними, хотя я не пробовал.
https://youtu.be/HqoaERuM3IU
Я это и пилю)
Alexey
😃
Yuriy
а я догадался - но думал тебе говорить нельзя
Alexey
Ну и что там используется? 😏
Yuriy
Alexey
Dr Zlo
идея есть, динамическая загрузка, проблема в раздельном хранении флеш под код и озу под переменные
Dr Zlo
пути решения на самом деле есть, но проверенные мной не нравятся мне пока что
Dr Zlo
изучаю другие способы
Yuriy
а самый благостный вариант - что даст пользователю конечному -какая супер фитча становится доступной ранее не думали о какой не мечтали? я без иронии - сообразить не могу
Yuriy
вирусы появятся- да прикольно - антивирусы будут тоже интересно - новые сегменты рынка мк софта
Dr Zlo
Alexey
romanetz
Dr Zlo
romanetz
только вот... когда линуксовая система стоит $10 - зачем эти упражнения? академический интерес?
Yuriy
Alexey
Dr Zlo
Dr Zlo
не забудьте только про питание от батареи и включение за секунды
Yuriy
romanetz
включение за секунды - да не вопрос, в кармане у вас лежит
romanetz
сколько там разблокировка занимает?...
Alexey
На сколько я знаю, Линукс можно подрезать секунд до 3х на загрузке, но вот по потреблению всяко не сравнится и обычным мк
Dr Zlo
на тот линукс что лежит у меня в кармане затрачены миллиарды долларов чтобы он кушал мало и разблокировался мгновенно
romanetz
Yuriy
romanetz
потребление от аппаратных ресурсов задействованных зависит, а не программы исполняемой )
Alexey
а что запустится?
все, что не будет вырезано для уменьшения времени загрузки 😃
romanetz
я имею в виду, что один и тот же МК - скажем, STM32MP157 - он может быть с баре-метал (тупо жирная прошивка своя), и с линуксом
Yuriy
romanetz
ест одинаково на той же тактовой
Alexey
Dr Zlo
Dr Zlo
даже язык может быть другой, если компилятор поддерживает модель загрузки приложения
romanetz
а где, собсно, противоречие, в чём?
операционная система сама по себе потребляет единицы процентов ресурсов системы
Yuriy
надо просто подобрать сочетание такое чтобы не задействовать ресурсы - они жрут - а программа чтобы работала - искусство программирования 5 том кнут
Alexey