Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

emGUI for Arduino (stm32duino - STM32F103C8T6 Blue Pill) #5

Open
NickNifontov opened this issue Feb 4, 2018 · 25 comments
Open

emGUI for Arduino (stm32duino - STM32F103C8T6 Blue Pill) #5

NickNifontov opened this issue Feb 4, 2018 · 25 comments

Comments

@NickNifontov
Copy link

Столкнулся с проблемой, возможно Вы сможете подсказать в чем проблема.

Использую https://github.com/libEmGUI/emGUI-arduino.git

Платформа - Stm32Duino (http://wiki.stm32duino.com, https://github.com/rogerclarkmelbourne/Arduino_STM32)

в частности плата Blue Pill (stm32f103c8t6, http://wiki.stm32duino.com/index.php?title=Blue_Pill)

  1. Графика прослойка Adafruit_GFX_AS, Adafruit_ILI9341_STM

https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries/Adafruit_GFX_AS

https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries/Adafruit_ILI9341_STM

Графика работает.

  1. При попытке подключить #include <emGUI.h>

вылазить серия ошибок

Можете подсказать в чем проблема? в какой сторону копать?

warnings.txt

@NickNifontov
Copy link
Author

Если в файле https://github.com/libEmGUI/emGUI-arduino/blob/master/src/emGUI.h

отключить

//#include "emGUI/emGUI.hpp"

то

#include <emGUI.h>

static xDraw_t LCD;
static xInterface * interface1;
static xLabel * mouseMonitor;

xWidget frame1;
xWindow * window;
xLabel label1;`

выдает такое

Arduino: 1.9.0-beta (Windows 10), Board: "Generic STM32F103C series, STM32F103CB (20k RAM. 128k Flash), STLink, 72Mhz (Normal), Smallest (default)"

LeGUI.cpp:19:8: error: 'xDraw_t' does not name a type

static xDraw_t LCD;

    ^

LeGUI.cpp:20:8: error: 'xInterface' does not name a type

static xInterface * interface1;

    ^

LeGUI.cpp:21:8: error: 'xLabel' does not name a type

static xLabel * mouseMonitor;

    ^

LeGUI.cpp:23:1: error: 'xWidget' does not name a type

xWidget frame1;

^

LeGUI.cpp:24:1: error: 'xWindow' does not name a type

xWindow * window;

^

LeGUI.cpp:25:1: error: 'xLabel' does not name a type

xLabel label1;

^

exit status 1
'xDraw_t' does not name a type

@NickNifontov
Copy link
Author

если вместо

#include "emGUI/emGUI.hpp"

инклудить

#include "emGUI/emGUI.h"

то уже имеем только

LeGUI.cpp:26:8: error: 'xInterface' does not name a type

static xInterface * interface1;

    ^

exit status 1
'xInterface' does not name a type

@romansavrulin
Copy link
Member

Нужно глянуть подробный вывод компилятора - как он подключает пути к инклудам (параметры -I) и было бы хорошо видеть папку скетча. Вывод можно включить в настройках ардуино

Если есть step-by-step инструкция как накатить на ардуино поддержку stm32 для платы, то возможно смогу проверить работу сам в свободное время

@NickNifontov
Copy link
Author

NickNifontov commented Feb 5, 2018

emGUI_stm32.txt
Создал тестовый проект, пустой . Его код в атаче

> #include <Arduino.h> 
> #include <emGUI.h>
> 
> static xDraw_t LCD;
> static xLabel * mouseMonitor;
> 
> xWidget frame1;
> xWindow * window;
> xLabel label1;
> 
> static xInterface * interface1;
> 
> void setup() { 
>   // NOP
> }
> 
> void loop() {
>   // NOP
> }

Также в атаче подробный вывод компилятора + скрин настройки платформы Arduino
arduino
compiler.txt

.

@NickNifontov
Copy link
Author

Инструкция по установке stm32duino и emGUI на Ардуино выглядит так

  1. Скачать stm32duino тут https://github.com/rogerclarkmelbourne/Arduino_STM32
    https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip

  2. Распаковать . Папку назвать Arduino_STM32

  3. Скопировать папку в [Arduino sketches folder]/[hardware]/[Arduino_STM32]
    К примеру у меня путь выглядит так
    2018-02-05 22 09 15

  4. Теперь копируем emGUI-arduino в папку Library
    2018-02-05 22 10 54

  5. В файле library.properties нужно внести изменение чтобы при сборке не ругалось
    architectures=STM32F1

  6. В папку Documents\Arduino\libraries\emGUI-arduino\src
    скопировать файл gfxfont.h
    gfxfont.txt

  7. В файл Documents\Arduino\libraries\emGUI-arduino\src внести изменения

Строка 5 - #include <Adafruit_GFX_AS.h> //to add GFX to arduino's include path

Строка 13 - #include "emGUI/emGUI.h"

@NickNifontov
Copy link
Author

При сборке проекта выбрать нужную Board как на скрине
arduino

@NickNifontov
Copy link
Author

emGUI-arduino.zip

Вот файл моей emGUI с фиксами.Нужно только распаковать

@romansavrulin
Copy link
Member

@NickNifontov, Благодарю за подробный мануал. Будет полезно.

Анализ показал, что среда неправильно выставляет инклуды. По какой-то причине она считает, что запущена на маке при компиляции библиотеке и генерит следующий путь

"-I\\Mac\Home\Documents\Arduino\libraries\emGUI-arduino\src"

Думаю, что надо разбираться с тем, как среда подключает внешние библиотеки

"C:\Users\Nick Nifontov.NickNifontov-РџРљ\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w 
-DDEBUG_LEVEL=DEBUG_NONE -std=gnu++11 -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions 
-DBOARD_generic_stm32f103c 
-DVECT_TAB_ADDR=0x8000000 
-DERROR_LED_PORT=GPIOC 
-DERROR_LED_PIN=13 -w -x c++ -E -CC -mcpu=cortex-m3 
-DF_CPU=72000000L 
-DARDUINO=10900 
-DARDUINO_GENERIC_STM32F103C 
-DARDUINO_ARCH_STM32F1  
-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 
-DSERIAL_USB 
-DGENERIC_BOOTLOADER 
-DMCU_STM32F103CB  -mthumb  -march=armv7-m 
-D__STM32F1__ 
-DMCU_STM32F103CB  -mthumb  -march=armv7-m 
-D__STM32F1__ 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/include" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/stm32f1/include"                                                           
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/usb/stm32f1" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/usb/usb_lib" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\cores\maple" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\variants\generic_stm32f103c" 
"-I\\Mac\Home\Documents\Arduino\libraries\emGUI-arduino\src" 
"-IC:\Arduino\hardware\Arduino_STM32\STM32F1\libraries\Adafruit_GFX_AS" "\\Mac\Home\Documents\Arduino\libraries\emGUI-arduino\src\emGUI\Draw\Draw.c" -o "nul"

@NickNifontov
Copy link
Author

С путями все нормально. Просто я работаю из под МАКа на Parallerls Desktop.
Windows 10 стоит. Проблема точно не в путях.

@NickNifontov
Copy link
Author

Я сейчас перемещу файлы чтобы проверить гипотезу с путями

@NickNifontov
Copy link
Author

Файлы положу внутрь пакета Arduino_STM32

@romansavrulin
Copy link
Member

С путями все нормально. Просто я работаю из под МАКа на Parallerls Desktop.
Windows 10 стоит. Проблема точно не в путях.

Я сам часто пользую подобную связку - сижу на VMWare. Если параллелс не предоставляет какой-то системный ресолвер ссылок типа \MAC то дело в этом, т.к. сам компилер говорит, что не может найти тип, но он то в либе есть, значит инклудится что-то не то

@NickNifontov
Copy link
Author

Переместил папку
2018-02-06 12 38 08
2018-02-06 12 38 41

Вот что выдает
warnings.txt

@NickNifontov
Copy link
Author

В каком файле описан static xInterface * interface1;
?

@NickNifontov
Copy link
Author

Найти не может именно xInterface

@romansavrulin
Copy link
Member

Стоп, хороший вопрос. Это сборка примера из ардуино либы с ветки мастер? Если так, то он там еще поломан, тк мы активно пилим версию 2.0 и еще не успели его актуализироать.

xInterface был заменен на xWindowManager. Дефайн тут

Как это заинитить можно посмотреть в эмуляторе под винду

@romansavrulin
Copy link
Member

В целом, полезно накидать UI в эмуляторе и позже перенести на платформу. Сборка под msvc15

@NickNifontov
Copy link
Author

Это сборка примера из ардуино либы

@NickNifontov
Copy link
Author

Буду вечером пробовать другую сборку. Отпишу

откуда лучше взять emGUI.
тут ?
https://github.com/libEmGUI/emGUI

или тут
https://github.com/libEmGUI/emGUI-arduino/tree/master/src

@romansavrulin
Copy link
Member

https://github.com/libEmGUI/emGUI-arduino/tree/master Точно рабочая и собирается под esp8266. Под St, скорее всего, потребуется доработка отображения картинок - они на esp берутся из встроенной ФС

@romansavrulin
Copy link
Member

Починил сборку примера для ESP8266 8428354, но проверить как работает не могу - нет под рукой платы

@NickNifontov
Copy link
Author

Сенкс. Я детально проверю и через 1-2 дня отпишу.

@NickNifontov
Copy link
Author

если исключить hpp файлы (там где обьявлены namespace emGUI) то ничего собрать не выходить.

а при подключении hpp не компилируется.

Замкнутый круг.

@romansavrulin
Copy link
Member

@NickNifontov, компиляция этого примера сейчас ориентирована на ESP8266 или на эмулятор под винду. На других платформах возможны ошибки.

@NickNifontov
Copy link
Author

жаль

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants