nucleron / RTE

55 stars 40 forks source link

YAPLC IDE не видит stm32f4-discovery #3

Closed elSapito closed 6 years ago

elSapito commented 6 years ago

Проблема коротко

Скачиваю YAPLC-RTE, собираю, прошиваю в stm32f4-discovery, при помощи конвертера USB — UART TTL подключаю discovery к ПК. Далее, в YAPLC-IDE нажимаю «Подключится к целевому ПЛК», получаю сообщение:

_Connecting to:COM28 <yaplcconnectors.YAPLC.YAPLCProto.GETPLCIDTransaction instance at 0x057D38C8>Exception in PLC protocol : PLC protocol transaction error : Exception in PLC protocol : controller did not answer as expected!

Подробнее

Дело происходит на ПК с Windows 7 32. До этого я ими никогда не пользовался этими инструментами, поэтому могу совершать очевидные ошибки (в смысле, не ПК с Windows, а тем, что описано ниже). Устанавливаю Code::Blocks 17.12. Устанавливаю GNU Arm Embedded Toolchain. Выбираю GNU Arm Embedded Toolchain компилятором по умолчанию, указывая Toolchain Executables. Скачиваю libopencm3, собираю по инструкции: В инструкции, в разделе Fine-tuning the build, сказано, что можно менять настройки, касающиеся плавающей точки, ничего этого не делал. Скачиваю matiec. Скачиваю и настраиваю Open OCD. Скачиваю проект YAPLC-RTE Открываю файл проект yaplc-runtime.cbp в Code::Blocks и пытаюсь собрать. Проект не видит компилятора. В Project-Build options выбираю компилятор GNU Arm Embedded Toolchain. Во вкладке Compiler Settings выбираю Policy: Use Project options only. После этого получаю следующую ошибку:

_f:/work_yaplc/armgnu/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld.exe: error: bin\Debug\yaplc_runtime.elf uses VFP register arguments, f:/work_yaplc/armgnu/bin/../lib/gcc/arm-none-eabi/7.2.1\libgcc.a(udivmoddi4.o) does not

Насколько я понимаю, это ошибка линковщика. Далее, начинаю поиск решения этой в интернете, помогает совет добавить опцию линкера -mfpu=fpv4-sp-d16, (отсюда). После этого, проект собирается. Прошиваю его в STM32F4-DISCOVERY, сообщений об ошибках не вижу.

На всякий случай, логи

Подключаю выходы выводы Rx и Tx преобразователя USB-UART-TTL к портам discovery PA9 PA10. Преобразователь втыкаю в ПК, COM-порт на всякий случай, переименовываю в COM28. В Beremiz пытаюсь подключится к целевому ПЛК, и получаю сообщения вида:

_<yaplcconnectors.YAPLC.YAPLCProto.GETPLCIDTransaction instance at 0x056861C0>Exception in PLC protocol : PLC protocol transaction error : Exception in PLC protocol : controller did not answer as expected!

nucleron commented 6 years ago

Проблема с линковкой - общеизвестная.

Проблема с ком портом - скорее всего из-за частоты кварца, смотреть тут: https://github.com/nucleron/RTE/blob/master/src/bsp/nuc-227-dev/plc_config.h#L21

nucleron commented 6 years ago

Долго нет обратной связи.