Firmata

Джонатанбери
Сб 01 августа 2015 г., 19:56
Я хотел порт Firmata к доскам STM32 и на рисунке STM32Duino будет самым простым путем. Я был Способен загрузить мигающее программирование через Stlink на доске NucleOF401RE. Мне на самом деле не нужна помощь в банкомате (хотя всегда приветствуется помощь!) но размещено здесь, так как в разделе «Прогресс нет». Вы можете следовать за https: // github.com/beriberikix/arduino_stm32.

Rogerclark
Сб 01 августа 2015 г., 21:42
Привет, Джонатан,

Я подозреваю, что портирование Fermata может быть не слишком сложным, потому что уже есть поддержка для должного.

По крайней мере, для начала, я бы просто изменил код, который проверяет оборудование SAM, и добавил код или __stm32f1__ или, возможно, просто замените тесты для SAM на __arm__. Но вам может потребоваться сочетание обоих.


Различные люди на этом форуме перенесли большое количество либеров, поэтому я уверен, что если вы застрянете, кто -то сможет помочь

Джонатанбери
Солнце 02 августа 2015 5:27 утра
Спасибо, Роджер! Я думаю, что это будет довольно прямолинейно. Просто нужно украсть больше времени :) Firmata также имеет HAL своего рода, Который мне нужно расшифровать, но это выглядит просто.

Джонатанбери
Пн 10 августа 2015 г., 4:01
Я сталкиваюсь с проблемой, когда потоковой либера (связь). Любые идеи?

Rogerclark
Пн 10 августа 2015 г., 4:17
Ядро имеет поток.h и поток.CPP

Я предполагаю, что мы не включаем поток в совсем то же место, что и Avr Arduion.

Он включен в множество мест
Arduino_STM32\STM32F1\cores\maple\HardwareSerial.h (1 hits) Line 40: #include "Stream.h" Arduino_STM32\STM32F1\cores\maple\Stream.cpp (1 hits) Line 24: #include "Stream.h" \Arduino_STM32\STM32F1\cores\maple\Stream.h (1 hits) Line 2: Stream.h - base class for character-based streams. Arduino_STM32\STM32F1\cores\maple\usb_serial.h (1 hits) Line 36: #include "Stream.h"

Джонатанбери
Пн 10 августа 2015 г., 14:50
Добавлен поток.H к Firmata.H и большинство ошибок компиляции ушли. Тем не менее, Hardwareserial жалуется:
/Users/me/Documents/Arduino/libraries/firmata/Firmata.cpp: In member function 'void FirmataClass::begin(long int)': /Users/me/Documents/Arduino/libraries/firmata/Firmata.cpp:70:17: error: cannot convert 'HardwareSerial*' to 'Stream*' in assignment FirmataStream = &Serial;

Rogerclark
Пн 10 августа 2015 г., 21:11
У F1 и F4 такая же происхождение, я.E Libmaple, но выбрал разные маршруты туда, где мы сейчас находимся.

Кодекс F4, был вывешен из Libmaple несколько лет назад сообществом Aeroquad и разработан отдельно от того, что делал Leaflabs на Libmaple F1.

Я сделал крупный рефактор кода F1, когда я взял все это, почти год назад, чтобы попытаться привести Libmaple в соответствие с Arduino 1.0 API (как Libmaple был написан во время Arduino 0022 и не обновляется Leaflabs).

@Martinaoette проделал множество работ на стороне F4, чтобы довести его до Arduino 1.0 Уровень API, но имеет его изменения, и начальная кодовая база не идентичны для F1 и моих изменений, где все еще некоторые различия между F1 и F4.


Это сказано. Если вы можете сообщить нам, что компилируется для F1, но не F4, или наоборот, я был бы рад изменить репо F4 или даже репо F1,
до тех пор, пока изменение не сломало никаких существующих вещей.

Martinayotte
Вторник 11 августа 2015 г., 2:39
Эта ошибка должна быть исследована.
Но так как я не использую твердый, напрямую, я никогда не сталкивался с проблемой.
Может быть, Hardwareserial - это наследие Libmaple, которое больше не нужно, потому что, скажите, если я ошибаюсь, обычный сериал использует аппаратный порт, когда выводы соответствуют реальным аппаратным штифтам.

Rogerclark
Вторник 11 августа 2015 3:40
Я думал, что использовался аппаратный сериал.

Серийный сериал либо отображается с USBERIAL, либо аппаратным последовательным, в зависимости от того, какие конфигурации вы выбираете в меню «Доски» (контролируется #Defines)

Так.. Аппаратный сериал используется и работает.

Martinayotte
Вторник 11 августа 2015 г., 18:51
Вчера я падал спать, поэтому я не пытался расследовать.

Сегодня я только что посмотрел на Hardwareserial от F4, и он получен из печати, а не из потока, как F1.
Так что, может быть, это просто требует изменить это как для твердого, так и для USBSerial, так как те же явления тоже применяют это.
Я не поймал это раньше, так как у меня не было никакого кода, такую ​​Firmata, которая требует этого и выпускала ошибку «не может преобразовать« твердый ».

Итак, @jonathanberi, может быть, вы можете попробовать это на своей стороне: простой перепечатан, чтобы транслировать в Hardwareserial.h и добавить #include "поток.час"
class HardwareSerial : public Stream {

Джонатанбери
Вторник 11 августа 2015 г., 19:43
О, бессонница - лучшее исправление (и создатель) ошибок! Дай мне знать, как & Когда я могу помочь с тестированием.

Rogerclark
Вторник 11 августа 2015 г., 21:01
Мартин,

В F1 я изменил материал для печати / пара в прошлом году, когда понял, что оригинальный Libmaple значительно отличается от того, как AVR и Due Arduinos направляют печати и т. Д.

Я помню, как нуждался в изменении довольно много файлов, но я думаю, что я также сделал какую -то другую реорганизацию одновременно, так как у Либмапла были заголовки в подпапке и т. Д., Который не соответствовал коду AVR, поэтому я думаю, что взял Возможность внести множество изменений одновременно.

Это было в моем списке Todo, чтобы изменить это сам, но у меня очень длинный список, и он не был на вершине ;-)

Так что спасибо, что посмотрели на это..

Martinayotte
Вторник 11 августа 2015 г. 22:16
Роджер, если тебе все равно, если я пока я покинушь USBERIAL :: PEEK () в качестве пустой заглушки, я думаю, что скоро совержу эти изменения и отправлю вам PR.
Таким образом, @jonathanberi сможет продолжить работу с Firmata, так как Hardwareserial и Usbesserial, полученные из потока.

Rogerclark
Вторник 11 августа 2015 г. 22:26
Привет, Мартин

Это нормально.

Оставьте это пустым. Возможно, я сделал то же самое на USB -сериале F1.

Martinayotte
Вторник 11 августа 2015 г. 22:29
Хорошо ! Спасибо ! Я, наверное, совершу позже сегодня вечером ...
Возможно, я сделал то же самое на USB -сериале F1. Нет, вы сделали призыв к низкоуровненному CDC Peek (), но при F4 CDC полностью отличается от того, что от F1, и в F4 нет Peek ().

Rogerclark
Вторник 11 августа 2015 г., 22:30
Привет, Мартин,

Не беспокойся.

Я помню, как смотрел на Usserial Peek (), но это было несколько месяцев назад, и я не мог помнить именно то, что я сделал ;-)

Martinayotte
Вторник 11 августа 2015 г. 22:54
Я сделал коммит и пиар, пока мой супер готовил ... ;)

Rogerclark
Вторник 11 августа 2015 11:21
Мартин,
PR был действитель.

@jonathanberi, пожалуйста, возьмите последнюю копию репо и посмотрите, решает ли это ваша проблема.

Спасибо

Джонатанбери
Ср 12 августа 2015 г. 12:03
W00T, прогресс! После того, как эхопинг git ulling теперь компилируется без ошибок. У меня нет доски, удобный банкомат, но я буду проверять его, когда я вернусь домой.

Теперь, когда я начинаю пробовать различные вариации Firmata (с разными функциями), я получаю все разные, хотя и полезные, ошибки.

Стандартный фаррформата:
Arduino: 1.6.5 (Mac OS X), Board: "STM32 NUCLEO F401RE" Using library Servo in folder: /Applications/Arduino.app/Contents/Java/libraries/Servo Using library Firmata in folder: /Users/me/Documents/Arduino/libraries/firmata WARNING: library Servo claims to run on [avr, sam] architecture(s) and may be incompatible with your current board which runs on [STM32F4] architecture(s). /Users/me/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_nucleo_f401re -DVECT_TAB_BASE -DERROR_LED_PORT=GPIOD -DERROR_LED_PIN=14 -mcpu=cortex-m4 -DF_CPU=168000000L -DARDUINO=10605 -DARDUINO_STM32F4_NUCLEO_F401RE -DARDUINO_ARCH_STM32F4 -DMCU_STM32F406VG -mthumb -DSTM32_HIGH_DENSITY -DSTM32F2 -DSTM32F4 -DBOARD_discovery_f4 -I/Users/me/Documents/Arduino/hardware/Arduino_STM32/STM32F4/cores/maple/libmaple -I/Users/me/Documents/Arduino/hardware/Arduino_STM32/STM32F4/cores/maple/libmaple/usbF4 -I/Users/me/Documents/Arduino/hardware/Arduino_STM32/STM32F4/cores/maple/libmaple/usbF4/STM32_USB_Device_Library/Core/inc -I/Users/me/Documents/Arduino/hardware/Arduino_STM32/STM32F4/cores/maple/libmaple/usbF4/STM32_USB_Device_Library/Class/cdc/inc -I/Users/me/Documents/Arduino/hardware/Arduino_STM32/STM32F4/cores/maple/libmaple/usbF4/STM32_USB_OTG_Driver/inc -I/Users/me/Documents/Arduino/hardware/Arduino_STM32/STM32F4/cores/maple/libmaple/usbF4/VCP -I/Users/me/Documents/Arduino/hardware/Arduino_STM32/STM32F4/cores/maple -I/Users/me/Documents/Arduino/hardware/Arduino_STM32/STM32F4/variants/nucleo_f401re -I/Applications/Arduino.app/Contents/Java/libraries/Servo/src -I/Users/me/Documents/Arduino/libraries/firmata /var/folders/00/144nr000h01000cxqpysvccm004hkq/T/build3263617536636599899.tmp/StandardFirmata.cpp -o /var/folders/00/144nr000h01000cxqpysvccm004hkq/T/build3263617536636599899.tmp/StandardFirmata.cpp.o In file included from StandardFirmata.ino:28:0: /Applications/Arduino.app/Contents/Java/libraries/Servo/src/Servo.h:67:2: error: #error "This library only supports boards with an AVR or SAM processor." #error "This library only supports boards with an AVR or SAM processor." ^ StandardFirmata.ino:29:18: fatal error: Wire.h: No such file or directory compilation terminated. Multiple libraries were found for "Firmata.h" Used: /Users/me/Documents/Arduino/libraries/firmata Not used: /Applications/Arduino.app/Contents/Java/libraries/Firmata Error compiling.

Mrburnette
Ср 12 августа 2015 г. 12:10
Martinayotte написал:Хорошо ! Спасибо ! Я, наверное, совершу позже сегодня вечером ...
Возможно, я сделал то же самое на USB -сериале F1. Нет, вы сделали призыв к низкоуровненному CDC Peek (), но при F4 CDC полностью отличается от того, что от F1, и в F4 нет Peek ().

Rogerclark
Ср 12 августа 2015 г. 12:35
Re:
#Error "Эта библиотека поддерживает только доски с процессором AVR или SAM." Это вызвано потому, что у одного из LIBS есть настройка, которая явно говорит, что он работает только на AVR и SAM

Единственный способ исправить это - обновить библиотеку.

Посмотрите в библиотеку.Файл свойств для рассматриваемой библиотеки, и вы увидите строку, в которой говорится что -то вроде

architectures=avr

Martinayotte
Ср 12 августа 2015 г. 12:36
Джонатанбери написал:W00T, прогресс! После того, как эхопинг git ulling теперь компилируется без ошибок. У меня нет доски, удобный банкомат, но я буду проверять его, когда я вернусь домой.

Теперь, когда я начинаю пробовать различные вариации Firmata (с разными функциями), я получаю все разные, хотя и полезные, ошибки.

[...]

Глядя на ядро ​​F4, я не вижу Wire (только протирание), и я не вижу сервопривода в библиотеках. Копирование сервопривода из каталога F1 позволяет Cervofirmata компилировать, но я не уверен, что делать с проблемами проводов в других файлах, таких как StandardFirmata.

Rogerclark
Ср 12 августа 2015 г. 12:53
(@Roger, если у нас есть папка библиотеки для всех общих либеров между F1/F2/F3/F4 ?) Я не думаю, что для Arduino IDE можно искать в другом месте, кроме /ядро /библиотек

Так что я не вижу, как мы можем поместить либера

Aramperez
Вторник 8 ноября 2016 г. 13:00
Была ли какая -либо дальнейшая работа по получению Firmata с доской STM32? Я хотел бы запустить Firmata на китайском клоне Maple Mini.

Спасибо,
Арам

fpistm
Пт 02 декабря 2016 г. 14:08
Привет, арам,

Это уже было сделано для STM32F103 и STM32L476.
Посмотрите на эти коммиты:
Обновление для L476 (на основе Firmata Library v2.5.2):
https: // github.com/fpistm/stm/commit/c5 ... E19354B298
Обновление для F103 (на основе L476):
https: // github.com/fpistm/stm/commit/b6 ... 09428f7b1c

Бренд

Aramperez
Солнце 04 декабря 2016 г. 13:16
Привет,

Извините, я новичок в том, как работает внутренняя структура Arduino IDE и как «Arduino для STM32» изменяет эту структуру. Из -за быстрого взгляда на ссылки, кажется, что изменения против чего -то другого, кроме «Arduino для STM32». Так как бы я добавил эти изменения в "Arduino для STM32"?

Спасибо,
Арам

Aramperez
Sun 04 декабря 2016 г., 17:19
Привет, Фредерик,

[Извините, это длинный пост из -за всех результатов компиляции Arduino.]
Fpistm написал:Привет, арам,
Это уже было сделано для STM32F103 и STM32L476.
Посмотрите на эти коммиты:
Обновление для L476 (на основе Firmata Library v2.5.2):
https: // github.com/fpistm/stm/commit/c5 ... E19354B298
Обновление для F103 (на основе L476):
https: // github.com/fpistm/stm/commit/b6 ... 09428f7b1c
Бренд

fpistm
Пн, 05 декабря 2016 г., 9:28 утра
Привет, арам,

Я не думаю, что вы должны использовать репо -STM из моего GitHub.
Вы должны держать одного из STM32duino.
Я только приведу вам пример, как была обновлена ​​библиотека Firmata.
Я думаю, что вы должны скопировать библиотеку Firmata на аппаратное обеспечение/ xxxx/ библиотеки/ и настроить ее или изменить его в библиотеки/ IT, как это было сделано для STM32F103.
Просто подумайте, чтобы использовать переключатель, связанный с Maple Mini в заголовке:
#elif определил (STM32) <-- STM32 для обновления

Aramperez
Пн, 05 декабря 2016 12:57
Привет, Фредерик,
Fpistm написал:Я не думаю, что вы должны использовать репо -STM из моего GitHub. Вы должны держать одного из STM32duino.

fpistm
Пн, 05 декабря 2016 г., 13:41
Какой от STM32Duino? Если я ищу https: // github.com/rogerclarkmelbourne/arduino_stm32, Я не нахожу ничего, связанного с Firmata. Да, я думаю. Как упоминается «в том числе Leaflabs Maple и Maple Mini».
Для библиотеки я не знаю этого, я дал вам только пример того, как она была адаптирована для STM32F103. Если он запросит больше обновления, вам придется это сделать.
Я не знаю, как кленово, может быть, @rogerclark может помочь/посоветовать.

Rogerclark
Пн, 05 декабря 2016 г., 19:46
Арам

Каким -то образом у вас есть смесь как ядра, так и STMS New Core на основе Libmaple.

Вы установили из пакета Manager Boards Manager и загрузили zip -файл из моего репо.

Aramperez
Пн, 05 декабря 2016 г., 21:05
Привет, Роджер,
Rogerclark написал:Каким -то образом у вас есть смесь как ядра, так и STMS New Core на основе Libmaple.
Вы установили из пакета Manager Boards Manager и загрузили zip -файл из моего репо.

Rogerclark
Пн, 05 декабря 2016 г., 21:49
Версия Libmaple может быть установлена ​​через Manager Poards, так как @Ddrown сделал это на своем сайте.

Однако генерация файлов пакетов Manager Manager не является простым, и лично у меня нет времени на это

С официальной версией STM мы добавили филиал WIP, который добавляет поддержку для Maple Mini и Blue Pill, но, поскольку это не официально, для этого тоже нет менеджера по доскам.

Rogerclark
Пн, 05 декабря 2016 г., 21:57
Арамперес написал: .....

Тем не менее, Maple Mini Code использует Libmaple, и его реализация проволоки не была обновлена ​​до последней API Arduino Wire API, в нем отсутствует метод конечной трансмиссии (аргумент) [я считаю, что «аргумент» - это лопатка, но я не впал в код еще]].
.

Aramperez
Пн, 05 декабря 2016 11:53
Rogerclark написал: Если вы можете сказать мне, что делает новая функция, возможно, мы сможем ее включить

КСТАТИ. Я посмотрел на код провода Arduino, и у него есть дополнительный код
if (stopBit) { sercom->prepareCommandBitsWire(WIRE_MASTER_ACT_STOP); }

Rogerclark
Вт 06 декабря 2016 г. 12:36
ХОРОШО

Я подозреваю, что мы, возможно, сможем сделать это, просто не назвав i2c_stop ()

Я не точно уверен, почему команда Arduino написала другую версию функции, а не просто изменение существующей функции, чтобы включить параметр, а затем по умолчанию этот параметр на True.

Aramperez
Вт 06 декабря 2016 г. 2:41
Или почему бы не использовать «bool» в качестве типа аргумента вместо «uint8_t».

Спасибо,
Арам

Rogerclark
Вт 06 декабря 2016 г. 3:19 утра
Наша конечная передача не имеет аргумента, его текущий (void)

RTC Libs.