433 ресивер и трансмиттер там стоят самые сраные. Трансивер там на таблетке у которой плавает частота адски, а ресивер на регенеративном приемнике из сдвоенного опампа. Что мешало взять entry level любого норального производителя радио чипов - непонятно.
Концептуально нету разницы между армом и x86 для того что мы написали. Есть общие проблемы дизайна lock-free алгоритмов и структур данных. Самый просто пример это когда модель не помещается в машинное слово и её частичное обновление приводит к крашу, в этом случае явно нужно ее гардить каким-либо примитивом синхронизации ОС.
Чтобы не заставлять разработчиков ломать голову над доступом к памяти у нас есть несколько типов моделей представления: без блокировок и с блокировками доступа.
В общем описанная ситуация не возможна: приложение включается в дерево отрисовки только когда оно сказало что готово.
Вы представляете себе какая потребуется сложность аллокатора и оверхед чтобы заставить это работать в реальности? Какой будет сложность взаимодействия между тасками?
Даже основной код прошивки не поместится после этого в память.
MPU не защищает от этого. Но у нас есть трекер кучи который по закрытию приложения дампает в консоль репорт. Подразумевается, что при написании приложения, разработчик туда смотрит и если баланс не сходится, то фиксит забытые деаллокации.
Надо сказать что мы пересмотрели все варианты слоя склеивающего newlib с низлежащей ОС и везде всё печально.
Лучший вариант исполнения у ChibiOS: они почти ничего не используют из стандартной библиотеки и всё строят на своих примитивах. Это одно из наиболее идеологически чистых и правильных решений, с абсолютным контролем над кодом и надежностью.
В долгосрочной перспективе мы стремимся к тому что в ChibiOS.
Даже велосипед будет лучше чем newlibc которая идет в штатной поставке с тулчейном.
Есть одна большая проблема с большинством десктопных libc: они не предназначены для эмбеда и в компактной поставке не threadsafe и не reentrable. Что приводит к багам из ада.
FuriRecordDataDict_set_at работает с POD типами и выполняет alloc + copy. Возращаем мы указатель на элемент контейнера и единственный метод получить его это запросить его после set_at.
Если выезжаете за пределы Токио или Осаки то нужен. В худшем случае обойтись можно гугл переводчиком, симку с инетом или мобильный роутер можно арендовать чуть ли не в аэропорту.
Вся япония интересна и можно порекомендовать каждый её уголок, вопрос только в том что вам интересно самому.
Для 50+ Вт есть стандартный техпроцесс когда вырезают полигон и запрессовывают туда теплоотвод и потом пекут всё это вместе. У некоторых усилителей видел это в даташите.
Всё ядро и библиотеки на С, а для приложений доступен выбор между С и С++.
Выбор ОС и всего остального очень быстро перестал быть выбором из-за наличия больших сторонних компонентов завязанных на ST-шный хал.
Rust какое-то время был доступен для написания приложений, но особого распространения не получил и был выпилен.
В общем поддержка других языков не бесплатна с точки зрения флеша и оперативы, при этом встроенный флеш достаточно скромных размеров, что ограничивает нас в количестве одновременно поддерживамых стэков.
При этом никаких ограничений на использование Rust/MicroPython/Lua/etc нету.
Не стесняйтесь, прикладывайте сразу ссылку на наш официальный ответ: https://habr.com/en/companies/pvs-studio/articles/769634/comments/#comment_26096348
433 ресивер и трансмиттер там стоят самые сраные. Трансивер там на таблетке у которой плавает частота адски, а ресивер на регенеративном приемнике из сдвоенного опампа. Что мешало взять entry level любого норального производителя радио чипов - непонятно.
1) параллельно собирается и там и там
2) есть
3) так же тестовой джигой проверяются все пины на вход и на выход
4) есть
5) в зависимости от того как какой дефект
Большие коробки с таможенной декларацией единственный способ официально ввести что либо в страну.
Rust нету, его дропнули давно. Всё ядро на С, а С++ можно найти во фрэймворке гуйовых приложений и приложениях RFID, IR, iButton.
Концептуально нету разницы между армом и x86 для того что мы написали. Есть общие проблемы дизайна lock-free алгоритмов и структур данных. Самый просто пример это когда модель не помещается в машинное слово и её частичное обновление приводит к крашу, в этом случае явно нужно ее гардить каким-либо примитивом синхронизации ОС.
Чтобы не заставлять разработчиков ломать голову над доступом к памяти у нас есть несколько типов моделей представления: без блокировок и с блокировками доступа.
В общем описанная ситуация не возможна: приложение включается в дерево отрисовки только когда оно сказало что готово.
Напишите как долно быть и сделайте пул реквест.
И получится микроядро.
Вы представляете себе какая потребуется сложность аллокатора и оверхед чтобы заставить это работать в реальности? Какой будет сложность взаимодействия между тасками?
Даже основной код прошивки не поместится после этого в память.
MPU используется для защиты 0x0 от записи.
Оверхед на трекинг ресурсов будет равен бесконечности. В больших ОС для этого есть интерфейс сисколов и MMU, у нас ничего.
256 это на самом деле 192 + 32 + 32.
Где 32 + 32 отдается второму ядру и IPC.
Из оставшихся 192 мы используем 70.
Остается 120к.
MPU не защищает от этого. Но у нас есть трекер кучи который по закрытию приложения дампает в консоль репорт. Подразумевается, что при написании приложения, разработчик туда смотрит и если баланс не сходится, то фиксит забытые деаллокации.
Надо сказать что мы пересмотрели все варианты слоя склеивающего newlib с низлежащей ОС и везде всё печально.
Лучший вариант исполнения у ChibiOS: они почти ничего не используют из стандартной библиотеки и всё строят на своих примитивах. Это одно из наиболее идеологически чистых и правильных решений, с абсолютным контролем над кодом и надежностью.
В долгосрочной перспективе мы стремимся к тому что в ChibiOS.
Даже велосипед будет лучше чем newlibc которая идет в штатной поставке с тулчейном.
Есть одна большая проблема с большинством десктопных libc: они не предназначены для эмбеда и в компактной поставке не threadsafe и не reentrable. Что приводит к багам из ада.
FuriRecordDataDict_set_at работает с POD типами и выполняет alloc + copy. Возращаем мы указатель на элемент контейнера и единственный метод получить его это запросить его после set_at.
А так да, в M-Lib есть немного черной магии.
Это была копипаста с другого блока, сейчас там
strncpy
Если выезжаете за пределы Токио или Осаки то нужен. В худшем случае обойтись можно гугл переводчиком, симку с инетом или мобильный роутер можно арендовать чуть ли не в аэропорту.
Вся япония интересна и можно порекомендовать каждый её уголок, вопрос только в том что вам интересно самому.
И ещё: Япония сейчас закрыта для туристов.
LDAXR? ога есть, только на V8a.
Они немного про другое. Барьер гарантирует что операции работы с памятью доедут, но штук типа LOCK INC нету.
Для 50+ Вт есть стандартный техпроцесс когда вырезают полигон и запрессовывают туда теплоотвод и потом пекут всё это вместе. У некоторых усилителей видел это в даташите.
Всё ядро и библиотеки на С, а для приложений доступен выбор между С и С++.
Выбор ОС и всего остального очень быстро перестал быть выбором из-за наличия больших сторонних компонентов завязанных на ST-шный хал.
Rust какое-то время был доступен для написания приложений, но особого распространения не получил и был выпилен.
В общем поддержка других языков не бесплатна с точки зрения флеша и оперативы, при этом встроенный флеш достаточно скромных размеров, что ограничивает нас в количестве одновременно поддерживамых стэков.
При этом никаких ограничений на использование Rust/MicroPython/Lua/etc нету.