Ssylka

Crystal на микроконтроллерах: два подхода

Crystal, несмотря на синтаксис, похожий на Ruby, может быть быстрым, как C, и даже адаптированным для микроконтроллеров. Существует два основных подхода к интеграции Crystal в embedded-системы: «сложный» – с нуля, и «простой» – поверх существующего C-проекта.
Crystal на микроконтроллерах: два подхода
Изображение носит иллюстративный характер

Сложный путь предполагает генерацию байндингов на Crystal из SVD-файлов, предоставляемых производителями микроконтроллеров, для доступа к регистрам. Далее, создается минимальная stdlib и код, который копирует данные из флэш-памяти в RAM. Этот метод позволяет полностью контролировать код и избегать «раздутой» stdlib, но требует разработки оберток для периферии.

Более простой путь состоит в интеграции кода Crystal в существующий Си-проект. Это позволяет сохранить уже настроенную периферию, RTOS и другие компоненты, написанные на Си, а логику высокого уровня реализовать на Crystal. Для этого необходимо объявить Си-функции в Crystal и скомпилировать Crystal-код в объектный файл, который затем линкуется с основным проектом. При компиляции следует обратить внимание на совместимость настроек вызова функций между C и Crystal.

Оба подхода демонстрируют работоспособность Crystal на микроконтроллерах. Первый вариант требует больше усилий для первоначальной настройки, но дает полный контроль над системой. Второй путь более быстрый, позволяя использовать готовые компоненты на Си. Замеры показали, что простая мигалка занимает менее 1Кб во флеш-памяти и немного RAM. Ассемблерный код, получаемый из байндингов, оказывается достаточно оптимальным.


Новое на сайте

19155Как новый сканер Microsoft обнаруживает «спящих агентов» в открытых моделях ИИ? 19154Как новая кампания DEADVAX использует файлы VHD для скрытой доставки трояна AsyncRAT? 19153Как новые китайские киберкампании взламывают госструктуры Юго-Восточной Азии? 19152Культ священного манго и закат эпохи хунвейбинов в маоистском Китае 19151Готовы ли вы к эре коэффициента адаптивности, когда IQ и EQ больше не гарантируют успех? 19150Иранская группировка RedKitten применяет сгенерированный нейросетями код для кибершпионажа 19149Как новая волна голосового фишинга в стиле ShinyHunters обходит многофакторную... 19148Почему баски стали главными пастухами Америки: врожденный дар или расовый миф? 19147Бывший инженер Google осужден за экономический шпионаж и передачу секретов искусственного... 19146Насколько критичны новые уязвимости SmarterMail и почему их немедленное исправление... 19145Истинный контроль и природа человеческого мастерства: от учения эпиктета до современной... 19144Критические уязвимости нулевого дня в Ivanti EPMM активно эксплуатируются злоумышленниками 19143Почему биология и социальное давление толкают элиту на смертельный риск ради славы и... 19142Почему сотни энергетических объектов по всему миру остаются критически уязвимыми перед... 19141Возможен ли бесконечный полет дронов благодаря новой системе лазерной подзарядки?