Ошибки в компиляции прошивки Marlin 2.0 для STM32F1

Danchik
Идет загрузка
Загрузка
12.05.2020
585
37
Вопросы и ответы

Есть у меня проект по самодельной плате для 3D принтера на базе STM32f1 (основан на проэкте https://3dtoday.ru/blogs/3dmaniack/32bit-with-your-hands-shield-rabps).

Пол года назад настраивал все, компилировал через Visual Studio и все было как по маслу, но недавно сносил систему и поставил весь софт заново, запускаю все как и раньше, а оно не компилится, ссылаясь на отсутствующие файлы, почему их нет и куда они могли сбежать остаётся для меня загадкой. По сему прошу помощи в исправлении этой неполадки, может кто сталкивался, на вид всё просто но я так и не пойму в чём беда.

Ответы на вопросы

Ответы

12.05.2020 в 18:03
0

А сами файлы HAL есть в папке с проектом? Раз раньше работало, значит вы что-то куда-о ставили и где-то что-то настраивали.

12.05.2020 в 18:25
0

в том то и дело что я даже файлы не менял и не вставлял, и в итоге тут же беру прошивку и она просит файлы

12.05.2020 в 18:45
0

питон 2.7, в патч изначально добавлен, но всё точно так же

12.05.2020 в 21:00
0

Символы нелатинского алфавита (папки с русскими именами) в пути к проекту есть?

12.05.2020 в 21:03
0

Посмотрите на скриншот, очень внимательно.

12.05.2020 в 23:38
0

Ну посмотрел. В строке, где ругань на ненайденный файл, начало выглядит как Marlin/src/HAL...

То есть, путь из папки проекта, в которой есть папка Marlin. А что там до Marlin? C:\Users\Lil Dunch\Мои документы\Marlin-2.0.x? Я бы ещё на всякий случай снёс бы проект в место, путь к которому не содержит пробелов (Lil Dunch)

13.05.2020 в 01:16
0

Более ранний коммент оставлю, хоть он и с ошибочным предположением. Автору вопроса бы не мешало внимательно посмотреть на текст ругани и на содержимое папки с исходниками. Похоже, что ненайденный файлик был в более ранних версиях.

А так:

platformio.ini - заменить строку build_flags в секции [env:bluepill] на

build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py -DMCU_STM32F103CB -D __STM32F1__=1  -std=c++1y -ffunction-sections -fdata-sections -Wl,--gc-sections -I Marlin/src/HAL/STM32F1 -DSTM32F1

А в Configuration.h маму прописать

#define MOTHERBOARD BOARD_MORPHEUS

раз уж для этой платы подменяется файл с назначением ножек. Да, в нём надо #define BOARD_NAME заменить на #define BOARD_INFO_NAME.

У меня компиляция пошла, но вылетела на окончательной сборке файла прошивки с диагнозом "пытаешься впихнуть невпихуемое".

Может ещё что-то вылезет. У меня такой платы нет, колупать разницу в конфигах ранней и современной версии "Марлина" нет никакого желания.

13.05.2020 в 01:49
0

Отрубил дисплеи, SD - собралась.

13.05.2020 в 09:55
0

есть продвижение, кинул файл в корень  и проблема ушла, но VSC попросил все таки версию питона 3.5, установил и проблемы теперь с дальнейшими строками, что не так с eeprom?

13.05.2020 в 10:36
0

Значит, всё же в пути с непонимаемыми символами было дело.

А тут, похоже, по какой-то причине некорректно обрабатывается содержимое строки. Возможно, таки вкрался некорректный символ, который не даёт нормально обработать #if EITHER. Вариант: строку закомментировать парой косых //, в строчке перед ней ручками вбить вот этот самый #if ETHER(..., чтобы не перенести битый символ.

13.05.2020 в 12:45
0

неа, не помогло, ошибка та же самая

13.05.2020 в 13:59
0

перезалил прошивку, еще раз все перепроверил, скачал последний платформио ини, влил туда env bluepill. Теперь той ошибки нет (Может бубен не так уж бесоплезен оказался), компиляция продвигается дальше и в итоге выдаёт мне это.

13.05.2020 в 20:48
0

Так в этом же и написано, что не так. Ругается на то, что ссылку на функцию при окончательной сборке не может найти. Какая ему для этого библиотека нужна - я не в курсах. . Если соберётся с отключенным USE_WATCHDOG, то значит, что что-то изменилось в потрохах, и надо использовать другую функцию. Исходники ровно те, которые в стародавние времена использовались для компиляции прошивки?

ЗЫ Картиночку бы поразборчивей вставляли. И копипасту текста с терминала.

13.05.2020 в 20:56
0

исходники что были раньше благополучно утеряны, да я и не помню что бы там было столько проблем с компиляцией, учитывая что я делал ровно то же что и сейчас, но в итоге тут прошивка хочет чего то еще.

13.05.2020 в 23:55
0

Я у себя пробовал компилировать 2.0.5.3 с теми изменениями, которые описывал (с включённой #define USE_WATCHDOG). Другой версии у меня не было. Раз исходники, что были ранее, утеряны (огрызки какие-то остались?), то, как мне кажется, все проблемы идут от попытки использовать куски кода от разных версий "Марлина" разного времени.

14.05.2020 в 00:07
0

по сути использую я в итоге bugfix 2.0  и пихаю туда platformio.ini с конфигом bluepill, может в этом и беда?


Вот исходник https://drive.google.com/open?id=1sttTxaR7bOG4Vc6qWITw9_lT13yM6_Gv

14.05.2020 в 02:11
0

У меня вообще собираться не захотел, обматерил страшными словами про duplicate inline.

https://yadi.sk/d/W223Ohf49JvHOw - итоговый вариант после правки platformio.ini, Configuration.h (концевик на Y - Y_MAX, как в описании ножек платы), подмены pins_MORPHEUS.h

Он собрался у меня, на ld ошибку не выдавал, хотя предупреждениями экран завалил. У Вас ошибка на этом этапе была.

pins_MORFEUS.h был неподменённый, кстати. С ножками под Morpheus.

Собственно, всё, что мог. Собирал в такой версии VS Code:

Version: 1.45.0 (user setup)
Electron: 7.2.4
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Windows_NT x64 10.0.18363

14.05.2020 в 10:35
0

сразу же скомпилировалось, и в чем же была беда?

14.05.2020 в 13:10
0

Там несколько бед, но основная это: 

1. Жёстко заданная версия платформы в platformio.ini (цифры после @)

Скорее всего, именно из-за этого не могла собраться прошивка. У меня - точно из-за этого.

Остальное - это неподменённый pins_MORPHEUS.h

Ну а после подмены пришлось ещё указать, что home по Y использует концевик Y_MAX. Это сделано из предположения, что плата у Вас именно из той стати, и концевики расставлены так, как у автора той статьи. Если будет использоваться Y_MIN, то правьте pins_MORPHEUS.h и Configuration.h.

14.05.2020 в 13:34
0

может тогда проще будет найти старую версию прошивки марлина и на ней пытаться собрать, учитывая что в тех версиях таких проблем не  возникало, учитывая что в прошивке я не так уж и силён((

14.05.2020 в 14:55
0

Собирается сейчас? Работает? Если да, то зачем искать приключений с исходниками полутарогодичной давности, тем более, что не силён в понимании текста ошибок (я тоже не гуру ни разу)?

В старой разве что правок, связанных с изменениями в процессе развития прошивки, не надо будет вносить, и всё тупо собирать по описанию в статье.

А от подмены файлика с раскладкой ножек это не избавит. В общем, хозяин - барин. Наверное, можно найти снимок marlin-2.0-bugfix по состоянию на конец 2018 года. если разобраться с git, и как из него вытянуть версию на определённую дату, на сайте же по умолчанию выкладывается свежая "ночная сборка".

14.05.2020 в 16:34
0

собирается, но отказывается работать, и так и так, на дисплей не отображает ничего, порт определяется но не подключается

14.05.2020 в 18:20
0

от какой даты нужен снимок репозитория?

14.05.2020 в 18:23
0

декабрь 2018, либо январь 19

14.05.2020 в 18:43
0

архив скачал

https://yadi.sk/d/FugPCldwF1XUIw

снапшот от Dec 18, 2018

сдесь оригинальня ссылка на репозиторий от этой даты

https://github.com/MarlinFirmware/Marlin/tree/fcaed685b28bb5b38c8377c21af47b2fcc0f8cce


сдесь получилось у чела под новый скомпилировать
https://3dtoday.ru/blogs/3dmaniack/32bit-with-your-hands-shield-rabps#comment-645608


14.05.2020 в 20:08
0

вот на этой версии прошивка собралась без проблем, но не работает дисплей SSD1306, 


https://drive.google.com/open?id=1F2s7UIk2_mSB7IuJryfpB1zz5zQJFdyq

14.05.2020 в 20:12
0

а порт I2C переключили на 2 в исходниках stm32


Дисплей OLED SSD1306 подключается к SCL2/SDA2/GND/+5V разъема EXP1, см. схему.

Для активации SCL2/SDA2, в последней строке в файле Wire.cpp

C:Users\.platformiopackagesframework-arduinoststm32STM32F1librariesWire

заменить 'TwoWire Wire(1);'

на 'TwoWire Wire(2);'

Configuration.h:

#define SDSUPPORT

#define ULTIPANEL

#define U8GLIB_SSD1306

14.05.2020 в 20:48
0

да, это всё точно проделал, но дисплей не загорается, подкинул старую прошивку - горит, на этой нет

15.05.2020 в 10:22
0

возможно что то поменялось в U8lib библиотеке

15.05.2020 в 10:25
0

раньше всё как то проще было чтоль

15.05.2020 в 13:57
0

Да, трава зеленее, бабы краше... Раз есть старая нормально работающая прошивка, то её копии записать в 100500 мест. Там всё равно ничего толком не выгадаешь из-за малого объёма флеша.

14.05.2020 в 11:40

Комментарий удалён

13.05.2020 в 21:03
0

Compiling .pio\build\bluepill\FrameworkArduino\usb_serial.cpp.o

Compiling .pio\build\bluepill\FrameworkArduino\wirish_analog.cpp.o

Compiling .pio\build\bluepill\FrameworkArduino\wirish_digital.cpp.o

Compiling .pio\build\bluepill\FrameworkArduino\wirish_math.cpp.o

Compiling .pio\build\bluepill\FrameworkArduino\wirish_shift.cpp.o

Compiling .pio\build\bluepill\FrameworkArduino\wirish_time.cpp.o

Archiving .pio\build\bluepill\libFrameworkArduino.a

Linking .pio\build\bluepill\firmware.elf

.pio/build/bluepill/src/src/MarlinCore.cpp.o: In function `minkill(bool)':

MarlinCore.cpp:(.text._Z7minkillb+0x44): undefined reference to `HAL_watchdog_refresh()'

.pio/build/bluepill/src/src/MarlinCore.cpp.o: In function `idle()':

MarlinCore.cpp:(.text._Z4idlev+0x12): undefined reference to `HAL_idletask()'

.pio/build/bluepill/src/src/MarlinCore.cpp.o: In function `setup()':

MarlinCore.cpp:(.text._Z5setupv+0x18): undefined reference to `HAL_init()'

MarlinCore.cpp:(.text._Z5setupv+0x20): undefined reference to `HAL_get_reset_source()'

MarlinCore.cpp:(.text._Z5setupv+0x58): undefined reference to `HAL_clear_reset_source()'

MarlinCore.cpp:(.text._Z5setupv+0xf6): undefined reference to `watchdog_init()'

.pio/build/bluepill/src/src/gcode/control/M42.cpp.o: In function `GcodeSuite::M42()':

M42.cpp:(.text._ZN10GcodeSuite3M42Ev+0xb6): undefined reference to `analogWrite(signed char, int)'

.pio/build/bluepill/src/src/gcode/control/M997.cpp.o: In function `GcodeSuite::M997()':

M997.cpp:(.text._ZN10GcodeSuite4M997Ev+0x10): undefined reference to `flashFirmware(short)'

.pio/build/bluepill/src/src/module/planner.cpp.o: In function `Stepper::wake_up()':

planner.cpp:(.text._ZN7Stepper7wake_upEv[_ZN7Stepper7wake_upEv]+0x4): undefined reference to `get_timer_dev(int)'

.pio/build/bluepill/src/src/module/planner.cpp.o: In function `Planner::check_axes_activity()':

planner.cpp:(.text._ZN7Planner19check_axes_activityEv+0x24): undefined reference to `analogWrite(signed char, int)'

.pio/build/bluepill/src/src/module/planner.cpp.o: In function `Planner::quick_stop()':

planner.cpp:(.text._ZN7Planner10quick_stopEv+0x4): undefined reference to `HAL_timer_interrupt_enabled(unsigned char)'

planner.cpp:(.text._ZN7Planner10quick_stopEv+0xe): undefined reference to `get_timer_dev(int)'

.pio/build/bluepill/src/src/module/stepper.cpp.o: In function `Stepper::suspend()':

stepper.cpp:(.text._ZN7Stepper7suspendEv[_ZN7Stepper7suspendEv]+0x4): undefined reference to `HAL_timer_interrupt_enabled(unsigned char)'

stepper.cpp:(.text._ZN7Stepper7suspendEv[_ZN7Stepper7suspendEv]+0xe): undefined reference to `get_timer_dev(int)'

.pio/build/bluepill/src/src/module/stepper.cpp.o: In function `Stepper::init()':

stepper.cpp:(.text._ZN7Stepper4initEv+0x26a): undefined reference to `HAL_timer_start(unsigned char, unsigned long)'

.pio/build/bluepill/src/src/module/temperature.cpp.o: In function `Temperature::updateTemperaturesFromRawValues()':

temperature.cpp:(.text._ZN11Temperature31updateTemperaturesFromRawValuesEv+0x10): undefined reference to `HAL_watchdog_refresh()'

.pio/build/bluepill/src/src/module/temperature.cpp.o: In function `Temperature::init()':

temperature.cpp:(.text._ZN11Temperature4initEv+0x30): undefined reference to `HAL_adc_init()'

temperature.cpp:(.text._ZN11Temperature4initEv+0x42): undefined reference to `HAL_timer_start(unsigned char, unsigned long)'

temperature.cpp:(.text._ZN11Temperature4initEv+0x48): undefined reference to `get_timer_dev(int)'

collect2.exe: error: ld returned 1 exit status

*** [.pio\build\bluepill\firmware.elf] Error 1

13.05.2020 в 21:16
0

без USE_WATCHDOG не компилится

14.05.2020 в 18:20
0

от какой даты нужен снимок репозитория?

12.05.2020 в 22:23
0

Исходники в корне диска должны быть, иначе тупая винда по швам трещит.

13.05.2020 в 00:19
0

Не должны. Там не винда трещит, там трещит среда разработки, которая не понимает путей с нелатинскими буквами. Пробел жрёт. Но тут, похоже, всё интересней. Автор пытается, наверное, применить скачанный platformio.ini к более свежим исходникам.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

DIY беспроводной электропривод для окна со штатным запиранием на рукоятку

эл. привод вертикальных штор

Longer 30

Заднее крыло для сяоката.

Эксперименты с печатью адресных табличек

RepRap 4ever