Язык:
English,
Русский.
Это кросс-компилятор из языка Java в С, который позволяет писать прошивку для микроконтроллера на Java.
timer.setMode(TimerMode.FAST); вместо неудобного TCCR1B |= (1<<WGM12); TCCR1A |= (1<<WGM10); Работа с регистрами ведется автоматически программой MCU Java Source. Теперь нужно помнить только принцип работы устройств МК (таймеров, UART, АЦП), а не регистры и биты.Register, если невозможно сделать требуемое действие другим способом.Компилятор - avr-gcc (или пакет WinAVR)
final. Примитивные поля с атрибутом final превращаются в #define . Строки и примитивные массивы заносятся в память программ и достаются оттуда во время использования. Никакой ручной работы с памятью программ - всего лишь сделайте поле final!volatile переходит в исходный код С. Используйте его, когда переменная используется и в фоновой нити (методы init(), start()), и в прерывании.byte и boolean типы поддерживаются через typedef unsigned char.InputStream и OutputStream используются в UART. Так как кодировщики/декодировщики кодовых страниц (charset, encoding) не вмещаются в МК, используется только кодировка по умолчанию. Поэтому нет классов BufferedReader, BufferedWriter, вместо них используются BufferedInputStream, BufferedOutputStream.@Section аннотация. Будет обозначать, куда помещать константы - во Flash или EEPROM. Сейчас по умолчанию Flash. Например:
@Section(Section.EEMEM)
private static final String MESSAGE = "Hello, EEPROM!";
implements Runnable) , как в TinyOS 2.0. Задачи будут выполнятся в фоновой нити, а запланировать можно из любого места.synchronized полнстью игнорируется. Используйте volatile вместо него.static полностью игнорируется, поскольку в C это имеет совсем другой смысл.Исходный код Java компилируется, а также преобразовывается в XML вид (java-ml) с помощью модифицированной версии Java2XML. Потом каждый XML элемент обрабатывается программой MCU Java Source Translator. Все примитивные переменные не изменяются, все объекты переводятся. Для перевода методов, которые работают с регистрами МК, есть отдельный переводчик для каждого МК. Все слушатели преобразовываются в обработчики прерываний. Классы объектов пользователя не обрабатываются через XML, они вызываются через reflection. Результат перевода - XML вид исходного кода на С. Потом исходный код С создается из XML.