Git Product home page Git Product logo

rte's Introduction

YAPLC/RTE

This is YAPLC runtime environment project.

YAPLC/RTE can run user aplications made with YAPLC/IDE. It runs on bare metal without any OS. It is small and portable.

Contributors

Using stm32f4-discovery board

Target "yaplc" can be used to build and upload aplication to the board.

If you want to run it, then folow these steps:

  1. Build yaplc-runtime project and load it to the board (I do it with st-util on debug session start, I think OpenOCD may also be used).
  2. Create a project with "yaplc" target,
  3. build it,
  4. connect to your target (see https://github.com/nucleron/RTE/blob/master/src/bsp/nuc-227-dev/plc_config.h#L27 for details)
  5. and transfer aplication.
  6. Now you can program your discovery board with YAPLC/IDE.

And yes, to use YAPLC/IDE with stock discovery you should connect Boot0 and VDD pins with jumper just before pressing "Transfer PLC" button in YAPLC/IDE.

When aplication has been loaded - disconnect Boot0 from VDD.

Or alternatively, you can add "mosfet with memory capasitor" circuit switch Boot0 automatically (see https://github.com/nucleron/RTE/blob/master/src/bsp/nuc-227-dev/plc_hw.c#L54 and https://github.com/nucleron/RTE/blob/master/src/bsp/nuc-227-dev/plc_config.h#L44 for details)

rte's People

Contributors

nucleron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rte's Issues

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

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

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

Connecting to:COM28
<yaplcconnectors.YAPLC.YAPLCProto.GET_PLCIDTransaction 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.GET_PLCIDTransaction instance at 0x056861C0>Exception in PLC protocol : PLC protocol transaction error : Exception in PLC protocol : controller did not answer as expected!

Проблема с отладкой

Здравствуйте.
Проект собрался после того как в свойствах компилятора в проекте поменял значение -mcpu-ab на soft, также в библиотеке libopencm3\lib\stm32\F4 в maikfile FP_FLAGS = -mfloat-abi=soft. проект собрался и запустисля под отладчиком.
Возниккла такая проблема, программа доходит до строки 135 файла plc_tick.c и начинает выполняться сначала.
Как с этим бороться, Вы можете мне помочь?
В код программы никаких изменений не вносил.

error: 'plc_hw_status' undeclared

Hi there,

I am trying to build tye yaplc_runtime to flash the stm32f4discovery, as I can't use codeblocks to build the project, I am creating my own makefile, but when I try to build the compiler can't find the variable 'plc_hw_status'.

I am using the following bsp: RTE/src/bsp/stm32f4/

This variable apper to be defined in the file but as extern.

The definition PLC_HW_ERR_DEADLINE also appears not to be declared.

Do I need to implement my own sistick handler?

Thanks in advance..
The project is really fantastic...

Проблемы с COM-портом.

Добрый день!

Пытаюсь подключится из YAPLC-IDE к YAPLC-RTE, прошитой в STM32F4-discovery, не получается. Дошел до отладки связи по COM-порту.
На моем экземпляре discovery, похоже, убит uart1, используемый в RTE.
В RTE/src/bsp/stm32f4/plc_config.h меняю настройки DBG_USART на USART2, порты и прерывания, соответственно, тоже.
Тестирую Tx/Rx при помощи терминала на ПК.
Модифицирую программу RTE для циклической отправки байт, в терминале вижу нужные символы.
Тестирую Rx. Ставлю точку останова в обработчике прерывания USART, ввожу в терминале разные символы. Прерывание срабатывает не на все символы, например, "U" и "u" не работают, "Y" и "y" работают. В отладчике вижу принимаемые байты, они не соответствуют кодам символов, чаще всего это 0xF3, 0xF5, 0xFC.

Протестировал связь по COM-порту аналогичным образом на проекте из STM32CubeMX, там все прекрасно работает, т.е. проблемы с железом можно исключить.

Подскажите пожалуйста, в чем может быть дело?

STM32F429-DISC1 clock issues

Здравствуйте.
Пробовал запустить yaplc-runtime на отладочной плате STM32F429-DISC1, но столкнулся с несколькими проблемами.

  1. Скорость порта не соответствует исходному коду, а работает в два раза ниже.
    Предположительно связано с тем, что таргет yaplc делался для STM32F407VG, судя по линкерскрипту

    /* Linker script for ST STM32F4DISCOVERY (STM32F407VG, 1024K flash, 128K RAM). */

    Так вот, пришлось (найти, додуматься и) внести изменения в
    #define PLC_HSE_CONFIG rcc_hse_16mhz_3v3

    (поставить rcc_hse_8mhz_3v3), заодно поменяв GPIO для светодиодов LD3, LD4 (PG13, PG14). Но это полбеды.

  2. LSE Oscillator failed!
    На плате нету кварца 32.768кГц. Совсем. Соответственно при попытке задействовать LSE, время не идёт, и рантайм корректно валит предупреждение. Попробовал исправить переключением источника на LSI вручную в одном месте, оглядываясь на STM32CubeIDE HAL примеры. Примеров на libopencm3 не нашёл, поэтому спрашиваю у вас.

diff --git a/src/bsp/common/stm32/f4/plc_rtc.c b/src/bsp/common/stm32/f4/plc_rtc.c
index 996d3be..1576656 100644
--- a/src/bsp/common/stm32/f4/plc_rtc.c
+++ b/src/bsp/common/stm32/f4/plc_rtc.c
@@ -40,11 +40,15 @@ void plc_rtc_init(tm* time)
     pwr_disable_backup_domain_write_protect();
 
     PLC_BKP_RTC_IS_OK = 0;
-
+#if TARGET_LSE_AVAILABLE
     /* LSE oscillator clock used as the RTC clock */
     RCC_BDCR |= 0x00000100;
     RCC_BDCR |= RCC_BDCR_LSEON;
-
+#else
+    /* LSI RC used as the RTC clock */
+    RCC_BDCR |= 0x00000200;
+    RCC_CSR |= RCC_CSR_LSION;
+#endif
     rcc_periph_clock_enable( RCC_RTC );
 
     rtc_unlock();

Видимый эффект есть после перезашивки рантайма (приложение осталось), полного выключения (очистка регистров RTC) и подачи чистых 5V. При низком напряжении уплывает и начинает часто мигать обоими светодиодами.
gcc version 10.2.1 20201103 (release) (GNU Arm Embedded Toolchain 10-2020-q4-major)
CodeBlocks 17.12 (2016)
Linux Mint 19.3 (Ubuntu bionic)

Предлагаю добавить два коротких патча в README для варианта discovery.

Версия libopencm3 с которой происходила сборка YAPLC-RTE

Добрый день.
С последним релизом libopencm3 проект не собирается, ошибка в src\bsp\common\stm32\plc_wait_tmr.c: в структуре rcc_clock_scale нет поля power_save. От него избавились в 2018 году libopencm3/libopencm3@cc8c8a2

Для начала хочу собрать проект с тем релизом libopencm3, с которым собирали его последний раз. Можете сориентировать на дату или коммит?

upd: https://github.com/libopencm3/libopencm3-examples/tree/766f89c724ec2405a6b9dda0d65e67f5cb2d0f2e этот пока собрался без вопросов

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.