Новый язык — взаимодействие с AVR

Итак, я беру курс, где проект заключается в создании нового встроенного языка. Мы используем OCaml для компилятора, поэтому я искал способ взаимодействовать с AVR или его библиотекой C таким образом, чтобы я мог писать программы на своем языке, затем компилировать и каким-то образом получать их на имеющейся у меня ардуино. Мне было любопытно, есть ли библиотека для OCaml или какой-то официальный документ для взаимодействия с платой на высоком или даже на низком уровне, где я могу заставить это работать.

, 👍1


2 ответа


1

Компилятор OCAML может генерировать код C, а среда разработки Arduino IDE принимает код C, так что теоретически это возможно.

Вам потребуется перенести исполняемый код OCAML в Arduino IDE. По крайней мере, я думаю, что это будет много работы. В худшем случае у Arduino может не хватить памяти для его поддержки.

,

Вам не нужна Arduino IDE для компиляции кода Arduino: просто вызовите avr-g++, как это делает сама IDE., @Edgar Bonet


1

У меня нет опыта работы с OCaml или написания компиляторов, но я бы предлагаю вам сначала научиться программировать Arduino, а затем учить ваш компилятор для этого.

Вы можете начать с использования Arduino IDE и нескольких базовых руководств. В IDE есть опция для отображения всех команд, которые она запускает. скомпилируйте и слинкуйте вашу программу. Обратите внимание на эти команды, затем выбросьте IDE. Кроме того, вы можете скачать один из нескольких Makefiles для Arduino, которые гуляют по сети.

Вы увидите, что базовый набор инструментов, который вам нужен, следующий:

  • Вариант AVR GNU GCC и binutils. Это позволяет программировать AVR на ассемблере, C и C++ . Вызов этих инструментов из вашего собственного компилятору должно быть так же просто, как вызывать их из командной строки.
  • avr-libc, который является портом libc для AVR, а также некоторые вещи, специфичные для AVR, и C время выполнения. Он не обеспечивает уровень аппаратной абстракции.
  • Основная библиотека Arduino, ориентированная на новичков библиотека C++, созданная на основе avr-libc. Он обеспечивает уровень аппаратной абстракции и исходный уровень, совместимый с платами Arduino, не основанными на AVR.

С точки зрения языка и API, ваш основной выбор: сборка AVR, C+ avr-libc, C++ + avr-libc, C++ + ядро Arduino + avr-libc. Есть другие, конечно, просто более известны. Выберите свой любимый, узнайте, как его использовать, а затем научите свой компилятор.

,