Здорово, жаль, что 5 ГГц пока нет. А как, если в двух словах (чтобы не копаться долго в исходниках), в прошивке победили закрытое API?
Помнится, в esp8266 можно было посылать вообще произвольные пакеты (просто массив байтов), из-за чего этот чип нашел применение в хакерских инструментах. ЕМНИП, в том числе поэтому espressif Wi-Fi стек поставляет в виде статических библиотек с экспортированными довольно высокоуровневыми функциями и такой вольности из коробки уже нет.
Правильно ли я понял, что продаваемый продукт - это две esp32 (C3 + S3) + рассыпуха по мелочи, в ESP32C3 зашит ноу-хау код, который управляется с ESP32S3, для которого уже пользователь с предоставленным SDK пишет программу?
Может, бинарь для C3 продавать отдельно, или слишком "неудобный" ценник получится?:) Нисколько не критикую, понятно, что софт пишут люди, которые хотят кушать, но ощущение, что для сокрытия его дороговизны все это в виде красивой платы сделано.
В MounRiver? Это ж эклипс, у всех таких IDE настройка компилятора (и версии стандарта) в одном месте: C/C++ Build -> Settings -> GNU XXX Compiler -> Optimization -> Language standart.
Могу быть не прав, но из ЭТОГО сделал вывод, что в корректном случае не должно быть пролога/эпилога (naked), но должна быть инструкция mret в конце. MounRiver так сделал.
Потыкал в атрибуты, действительно, GCC из рассмотренного в статье тулчейна не сгенерировал правильный ассемблерный код, к сожалению.
Видимо, нужно брать версию из MRS или как-то патчить, если сильно нужна свежая версия (патчить, наверно, по мотивам ЭТОГО репо).
Я что-то такое видел, но не могу ответить, к сожалению. Если правильно понял RM, то у контроллеров кроме V0, по сути, два набора векторов и вопрос в том, к какому из двух возможных компоновщик слинкует определенный обработки, верно?
Надо изучить, конечно. Возможно, рано порадовался возможности использовать GCC 13.
Примерно из тех же соображений использую. Но все-таки для общего случая (особенно, если в публичный доступ) cmake больше возможностей даёт, хотя бы файлы с гитхаба подтянуть.
А так да, "бесплатное" обновление до самых свежих версий тулчейна, под stm даже C++23 кое-где уже использую (статический оператор [])
Добрый, в CMakeLists прописано, что используются ASM, C и C++, так что просто создавайте cpp-шный файл и будет собрано под C++. Хотя странно, что древний - в последней версии GCC 12.2, он C++20 во многом поддерживает.
Собственно, проделанная работа - это подготовка к тому, чтобы сделать порт библиотечки zhele под ch32, а она "плюсовее" некуда.
Можно, конечно, я во вступлении написал об этом. Но это же то же самое, по сути, что взять MounRiver - собственный формат проекта, что мне не нравится.
Ну и бывают некоторые околополитические вопросы и проблемы использования тех или иных инструментов.
Конечно, под отладкой посмотреть значение аргумента - это гарантированный способ, я лишь хотел сказать, что иногда можно наудачу несколько потенциальных претендентов проверить, тем более, что это минутное дело.
Можно попытать счастья в поиске по строкам после запуска программы, когда строки уже сформированы. Скрин из Cheat Engine (что под руку попалось), искал "Invalid password".
Если задача только собрать проект (и тесты, например, запустить), то cmake скрывает необходимость установки фреймворков, так как умеет с github-а подтянуть, остается лишь компилятор поставить.
Только удаленная отладка платная, локально все хорошо (что логично ведь это простой openocd). Единственное, что пока в Platformio напрягает - это несвежесть компилятора, что решается путем скачивания и замены файлов в одной директории.
P.S. Чтобы два раза не вставать: использованный ObKo/stm32-cmake нормально из коробки подгружает библиотеки при их отсутствии? Мне не удалось, пришлось править в одном месте явный вызов MakeAvailable подставить.
Здорово, жаль, что 5 ГГц пока нет. А как, если в двух словах (чтобы не копаться долго в исходниках), в прошивке победили закрытое API?
Помнится, в esp8266 можно было посылать вообще произвольные пакеты (просто массив байтов), из-за чего этот чип нашел применение в хакерских инструментах. ЕМНИП, в том числе поэтому espressif Wi-Fi стек поставляет в виде статических библиотек с экспортированными довольно высокоуровневыми функциями и такой вольности из коробки уже нет.
Кругом обман :(
Правильно ли я понял, что продаваемый продукт - это две esp32 (C3 + S3) + рассыпуха по мелочи, в ESP32C3 зашит ноу-хау код, который управляется с ESP32S3, для которого уже пользователь с предоставленным SDK пишет программу?
Может, бинарь для C3 продавать отдельно, или слишком "неудобный" ценник получится?:) Нисколько не критикую, понятно, что софт пишут люди, которые хотят кушать, но ощущение, что для сокрытия его дороговизны все это в виде красивой платы сделано.
В MounRiver? Это ж эклипс, у всех таких IDE настройка компилятора (и версии стандарта) в одном месте: C/C++ Build -> Settings -> GNU XXX Compiler -> Optimization -> Language standart.
Конечно, это один из очевидных вариантов - использовать GCC из MRS.
Могу быть не прав, но из ЭТОГО сделал вывод, что в корректном случае не должно быть пролога/эпилога (naked), но должна быть инструкция
mret
в конце. MounRiver так сделал.Потыкал в атрибуты, действительно, GCC из рассмотренного в статье тулчейна не сгенерировал правильный ассемблерный код, к сожалению.
Видимо, нужно брать версию из MRS или как-то патчить, если сильно нужна свежая версия (патчить, наверно, по мотивам ЭТОГО репо).
Я что-то такое видел, но не могу ответить, к сожалению. Если правильно понял RM, то у контроллеров кроме V0, по сути, два набора векторов и вопрос в том, к какому из двух возможных компоновщик слинкует определенный обработки, верно?
Надо изучить, конечно. Возможно, рано порадовался возможности использовать GCC 13.
Примерно из тех же соображений использую. Но все-таки для общего случая (особенно, если в публичный доступ) cmake больше возможностей даёт, хотя бы файлы с гитхаба подтянуть.
А так да, "бесплатное" обновление до самых свежих версий тулчейна, под stm даже C++23 кое-где уже использую (статический оператор
[]
)Добрый, в CMakeLists прописано, что используются ASM, C и C++, так что просто создавайте cpp-шный файл и будет собрано под C++. Хотя странно, что древний - в последней версии GCC 12.2, он C++20 во многом поддерживает.
Собственно, проделанная работа - это подготовка к тому, чтобы сделать порт библиотечки zhele под ch32, а она "плюсовее" некуда.
Ну и можно
set (CMAKE_CXX_STANDARD 23)
добавитьМожно, конечно, я во вступлении написал об этом. Но это же то же самое, по сути, что взять MounRiver - собственный формат проекта, что мне не нравится.
Ну и бывают некоторые околополитические вопросы и проблемы использования тех или иных инструментов.
Честно говоря, не знал, но попрошу первокурсников сильнее радоваться задачке на польскую нотацию.
Минутка рекламы :)
Про библиотечный код: если взять библиотеку на шаблонах C++ (хотя нужным оказался только SPI и GPIO), то со стандартным стартапом получилось 1136/60.
Конечно, под отладкой посмотреть значение аргумента - это гарантированный способ, я лишь хотел сказать, что иногда можно наудачу несколько потенциальных претендентов проверить, тем более, что это минутное дело.
Можно попытать счастья в поиске по строкам после запуска программы, когда строки уже сформированы. Скрин из Cheat Engine (что под руку попалось), искал "Invalid password".
Спасибо, что-то я делал не так, значит, пойду разбираться:)
Не могу назвать себя спецом в cmake, но насколько понял из исходников, сценарий там такой примерно:
Если указаны STM32_CUBE_${FAMILY}_PATH или STM32_CMSIS_${FAMILY}_PATH, то взять оттуда.
Если не указаны, то считать, что кубовские библиотеки лежат по пути /opt/STM32Cube${FAMILY}
В utilities.cmake есть функции stm32_fetch_XXX, подтягивающие CMSIS/HAL с github, но я так и не нашел, где они вызываются и вставил руками.
Вопрос такой в итоге: без установленных заранее CMSIS/HAL у вас всё нормально собралось?
Если задача только собрать проект (и тесты, например, запустить), то cmake скрывает необходимость установки фреймворков, так как умеет с github-а подтянуть, остается лишь компилятор поставить.
Только удаленная отладка платная, локально все хорошо (что логично ведь это простой openocd). Единственное, что пока в Platformio напрягает - это несвежесть компилятора, что решается путем скачивания и замены файлов в одной директории.
P.S. Чтобы два раза не вставать: использованный ObKo/stm32-cmake нормально из коробки подгружает библиотеки при их отсутствии? Мне не удалось, пришлось править в одном месте явный вызов MakeAvailable подставить.