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

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

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

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

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


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

19755Почему 12 000 серверов с ИИ-платформой Flowise оказались беззащитны перед хакерами? 19754Северокорейские хакеры спрятали командный центр на GitHub 19753ИИ обгоняет людей в биомедицинском анализе — так ли это опасно, как звучит? 19752Artemis II летит к луне: что происходит и как за этим следить 19751Лекарство от диабета первого типа: шутка про «пять лет» перестаёт быть шуткой 19750Псевдонаука на службе рабства: как учёные XIX века торговали теориями о смешанной крови 19749Как SOC-команды теряют время на многоплатформенных атаках и как это остановить 19748Как люди научились жить там, где жить невозможно? 19747Рабочий ноутбук разработчика стал главной целью хакеров 19746Может ли песок решить главную проблему возобновляемой энергетики? 19745Как группировки Qilin и Warlock обезоруживают антивирусы через уязвимые драйверы 19744Самые прожорливые чёрные дыры во вселенной остаются без еды 19743Artemis: момент, который определит целое поколение 19742Почему в горах реже болеют диабетом? 19741Что скрывается подо льдами Антарктиды и почему страны могут начать за это бороться?
Ссылка