Dr Zlo
в неизвестный заранее кусок памяти
Dr Zlo
но это на самом деле просто, куча реализаций есть
Dr Zlo
проблема у меня в том что я при этом хочу разделить код и переменные, чтобы код положить в флеш-память, а переменные в ОЗУ
Dr Zlo
и эти два адреса так же заранее не известны
Dr Zlo
да, на МК и в отсутствии MMU
Yuriy
... прикольно. очень много подводных камней наверное. а смысл действа этого - динамическая линковка - модульность... почему не весь флешь - зонами что дает? в облаке сбилдилось залилось
Dr Zlo
потому что это будут "приложения" от пользователей
Dr Zlo
которых может быть загружено несколько одновременно, в неизвестном порядке
Yuriy
потому что это будут "приложения" от пользователей
ну вообще из той же оперы - цель - интерпретатор какой (хоть свой) чем хуже?
Dr Zlo
тем что интерпретатор на порядок-два медленнее
Dr Zlo
у меня в том числе и dsp код исполняется
Dr Zlo
+ нужно сразу предусмотреть обертки под всё
Yuriy
тем что интерпретатор на порядок-два медленнее
тут не совсем очевидно как сравнить - он может быть ровно такой же - по скорости - если абстракции типа - кнопку нарисуй и звук обработай фильтром %5 - а если пишем обработку саму на нём - наверно да
Alexey
Тоже недавно заинтересовался выполнением уже скомпилированного кода с внешнего источника в рантайме. Типо динамической библиотеки. Но ничего конкретного и простого для микроконтроллеров пока не нашел
Alexey
но это на самом деле просто, куча реализаций есть
Где можно примеры реализации глянуть?
Dr Zlo
Где можно примеры реализации глянуть?
google://микроконтроллернейм elf loader
Yuriy
>пишем обработку саму на нём именно
похоже на процы программируемые
Dr Zlo
это, кстати, ещё упрощает портируемость кода с других платформ
Dr Zlo
похоже на процы программируемые
похоже просто на нормальную ОС
Alexey
google://микроконтроллернейм elf loader
Гляну, спасибо. Я пока что только плагины находил которые функционал плюсов используют. Что-то похожее на лямбды, но ещё не разобрался с этим
Dr Zlo
не, то что я сказал - это реализации dynamic linking в мк
Dr Zlo
к сожалению все они используют строго оперативную память для выполнения кода
Yuriy
похоже просто на нормальную ОС
так нормальность это - компромисс всегда - не поэтому же что написать идеальную нельзя она не написана - имхо - просто рожденный ползать фигово летает - но ползет дай боже
Dr Zlo
не, то что я сказал - это реализации dynamic linking в мк
для esp32 и stm32 реализации точно есть
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
не, я так понял там не через загрузчик делается, ибо всегда есть список плагинов и ты просто выполняешь его код сразу. Если бы это был загрузчик была бы инициализация дисплея заново и тд
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
а я догадался - но думал тебе говорить нельзя
Дак мы же идеи обсуждаем а не реализацию
Yuriy
Дак мы же идеи обсуждаем а не реализацию
так ее нет- есть проблематика - идеи - реализации нет же :) блин надо купить такой - но чет дорого - но надо
Dr Zlo
идея есть, динамическая загрузка, проблема в раздельном хранении флеш под код и озу под переменные
Dr Zlo
пути решения на самом деле есть, но проверенные мной не нравятся мне пока что
Dr Zlo
изучаю другие способы
Yuriy
а самый благостный вариант - что даст пользователю конечному -какая супер фитча становится доступной ранее не думали о какой не мечтали? я без иронии - сообразить не могу
Alexey
идея есть, динамическая загрузка, проблема в раздельном хранении флеш под код и озу под переменные
А что на счёт загрузки кода с сд карты во флиппере? Можно ли в бутлодере инициализировать карточку и загрузить с нее данные в рам и загрузиться оттуда? Понятно, что программа должна быть маленькая
Yuriy
вирусы появятся- да прикольно - антивирусы будут тоже интересно - новые сегменты рынка мк софта
Yuriy
Ну тебе не надо прошивать всю прошивку, а можно лишь часть бизнес логики обновить, например
я понимаю это вопрос в другом конечный потребитель он от чего тут довольный - ему какая разница . Как супер идея - круто - здорово - конечно так и надо - только для чего?
romanetz
да, на МК и в отсутствии MMU
очень похоже на ПЛК...)))
Dr Zlo
А что на счёт загрузки кода с сд карты во флиппере? Можно ли в бутлодере инициализировать карточку и загрузить с нее данные в рам и загрузиться оттуда? Понятно, что программа должна быть маленькая
Ну про загрузку ядра через бутлоадер мы пока не думали, но есть вероятность что будет. Загрузка пользовательских приложений с сдкарты будет точно, но не по такому алгоритму как ты предложил.
romanetz
только вот... когда линуксовая система стоит $10 - зачем эти упражнения? академический интерес?
Yuriy
Ну про загрузку ядра через бутлоадер мы пока не думали, но есть вероятность что будет. Загрузка пользовательских приложений с сдкарты будет точно, но не по такому алгоритму как ты предложил.
Подразумевается дикое количество софта - который я смогу для себя выбрать - только нужное, записать и запускать. - а так оно просто не влезет - и поэтому надо , правильно?
Dr Zlo
не забудьте только про питание от батареи и включение за секунды
romanetz
включение за секунды - да не вопрос, в кармане у вас лежит
romanetz
сколько там разблокировка занимает?...
romanetz
не забудьте только про питание от батареи и включение за секунды
я видел сборки, где и 5 секунд грузится какая разница, сколько оно грузится, если аптайм - месяцы?
Alexey
На сколько я знаю, Линукс можно подрезать секунд до 3х на загрузке, но вот по потреблению всяко не сравнится и обычным мк
Dr Zlo
на тот линукс что лежит у меня в кармане затрачены миллиарды долларов чтобы он кушал мало и разблокировался мгновенно
Yuriy
На сколько я знаю, Линукс можно подрезать секунд до 3х на загрузке, но вот по потреблению всяко не сравнится и обычным мк
может оказаться ниже - просто там окажутся не нормальные МК - а надо брать нормальные- так и те можно брать с мыслями об этом. не выше оно
romanetz
потребление от аппаратных ресурсов задействованных зависит, а не программы исполняемой )
Yuriy
потребление от аппаратных ресурсов задействованных зависит, а не программы исполняемой )
ого - как это - одно другое не определяет никак- это софистика. моя программа не сьедает батарею смартфона за 30 мин- это его аппаратные ресурсы делают
Alexey
а что запустится?
все, что не будет вырезано для уменьшения времени загрузки 😃
romanetz
я имею в виду, что один и тот же МК - скажем, STM32MP157 - он может быть с баре-метал (тупо жирная прошивка своя), и с линуксом
Yuriy
все, что не будет вырезано для уменьшения времени загрузки 😃
удобная будет... что ? tty консоль в никуда для ничего
romanetz
ест одинаково на той же тактовой
Dr Zlo
потребление от аппаратных ресурсов задействованных зависит, а не программы исполняемой )
ого, а то что в ютубе у меня батарея разряжается за 6 часов, а в играх за 3 это оптическая иллюзия?
Dr Zlo
даже язык может быть другой, если компилятор поддерживает модель загрузки приложения
romanetz
а где, собсно, противоречие, в чём? операционная система сама по себе потребляет единицы процентов ресурсов системы
Yuriy
надо просто подобрать сочетание такое чтобы не задействовать ресурсы - они жрут - а программа чтобы работала - искусство программирования 5 том кнут