[rusEfi] ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

User avatar
Dron_Gus
contributor
contributor
Posts: 450
Joined: Wed Nov 13, 2013 1:11 pm
Location: S-Pb
Github Username: dron0gus

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by Dron_Gus »

Можно 5 дилетантских копеек?
UART на прерываниях без fifo даже на скорости 38400 это 5k прерываний в секунду. Это только на прием. Это слишком.
DMA на пару байт в этом случае не лучше.
Использование Чибиосовской обертки при работе с этим портом в бинарном режиме - лишний overhead.
Простой вариант это DMA заряженный на весь буфер и полинг раз 100 в секунду текущего положения указателя записи. Если приняли пакет - обрабатывать, нет - спим.
Сложный вариант - это гибрид IRQ + DMA + перенос части разбора протокола в IRQ. Стартуем в IRQ режиме, ждем заголовка. Как только получаем размер пакета - заряжаем DMA на остаток пакета и таймер на таймаут приема.
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

Согласен с Dron_Gus по сути замечания. Да, всё к этому и идёт. Просто хотелось вначале попробовать самый простой побайтовый вариант - учитывая, что с ним на 98% уже нет потерь данных (в релизном варианте прошивки). Конечно, этот простейший DMA-вариант (v1.0, как я его называю) был нужен лишь как проверочный, поэтому я и не давал его как Pull Request Андрею @Russian. По результатам моих тестов (изучения влияния более приоритетных прерываний и фризов прошивки) я напишу уже правильный вариант.
Что касается конкретных вариантов реализации, то я склоняюсь к более интересному варианту: использовать связку прерываний half (DMA_SxCR_HTIE) + idle (USART_CR1_IDLEIE). Первое нужно для приёма больших потоковых пакетов, а второе уменьшит задержку ожидания по сравнению с тупым поллингом (мои тесты показали, что это критично для протокола plain-TS с множеством однобайтных команд). При этом, логику парсинга пакетов мы не трогаем, и всё должно вписаться аккуратно вместо моего dma-v1.0. Единственный минус, о котором я уже писал ранее - придётся зацепить код ядра - это несколько остужает мой энтузиазм :( С другой стороны, писать свой отдельный драйвер UART тоже как-то не хочется - всё же проще минимально пропатчить чибисовский драйвер dma, добавив туда поддержку для прерываний idle и half, просто с вызовом внешних хэндлеров... Так или иначе, по идее, всё будет гуд! :)

P.S. Спасибо за интерес к теме!
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

andreika wrote:1) Перезапуск COM-порта Консолью через каждые 20 секунд при нулевых оборотах - остался. Причину пока так и не выяснил. Может, кто-то что-то знает про это?
Fixed! Спасибо Андрею за мердж моего PR! :D
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by puff »

а в чем был затык?
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

puff wrote:а в чем был затык?
Когда в прошивке ничего не происходит и обороты нулевые, то она по запросам с Консоли (GET_TEXT) возвращает только пустые строки (и это правильно). А парсер этих строк не реагирует на них до конца, и не вызывает сброс сторожевого таймера (такая себе "кнопка мертвеца" для COM-порта). Также приходят и другие данные - Output (датчики), но на них тоже нет сброса таймера. Поэтому сторожевой таймер досчитывал до 20 секунд, и COM-порт отваливался. Мы это пофиксили, добавив сброс сторожа по данным output, и теперь коннект стабильный и держится долго! (если нет проблем связи)
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by AndreyB »

andreika wrote:С другой стороны, писать свой отдельный драйвер UART тоже как-то не хочется - всё же проще минимально пропатчить чибисовский драйвер dma, добавив туда поддержку для прерываний idle и half, просто с вызовом внешних хэндлеров...
А ты на эту тему не хочешь спросить чиби-форум? Что считает официальная политика их партии по этому вопросу?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

russian wrote:А ты на эту тему не хочешь спросить чиби-форум? Что считает официальная политика их партии по этому вопросу?
Я там даже не зарегистрирован... :oops: Я хочу сначала написать свой код, проверить его работоспособность и доказать эффективность, и тогда уже можно обратиться на чиби-форум в плане "официального" PR и т.п. В крайнем случае, я примерно вижу альтернативный способ, как можно добиться желаемого и без правок ядра, но это уже не так красиво...

P.S. Я нашёл у них на форуме похожую тему:
http://www.chibios.com/forum/viewtopic.php?f=25&t=3441&start=10
Там человек как раз добавил поддержку для Idle-прерывания, но для STM32F7. Нам этот код напрямую не подходит (у нас в F4 нет USART_CR1_RTOIE), и кроме того, этот код не вошёл в используемую нами stable-ветку, но зато он был добавлен в latest-ветку... Я его семантику частично использую и перенесу к нам, чтобы сохранить преемственность и всё вписать красиво. :roll:
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

Написал новый код работы по DMA с IDLE/HALF-IRQ (кодовое название v.2.0)!

Вот патч для ядра, который нужен для работы нового кода:
chibios-dma-uart-idle-half.patch
(7.33 KiB) Downloaded 788 times
Просьба добавить его сейчас в master-ветку (ChibiOS3), т.к. я с этими submodules запутаюсь, пока буду пытаться сделать PR... :oops:
Код безобидный, и никак не затронет работу прошивки. В нём также частично использована пара фрагментов кода от аналогичного патча для STM32F7 (всё, что связано со словом "timeout").
После того как ядро будет пропатчено, я выложу основной PR для rusEFI-dma и расскажу всё подробно!
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by AndreyB »

andreika wrote:Вот патч для ядра, который нужен для работы нового кода:
chibios-dma-uart-idle-half.patch
Я сделаю чуть попозже, но если ты хочешь PR сделать то вот как
1) сначала ты fork https://github.com/rusefi/ChibiOS - именно rusefi/ChibiOS - аналогично тому, как ты fork rusefi/rusefi
2) потом ты в своём fork переключаешься на ветку https://github.com/rusefi/ChibiOS/tree/stable_rusefi
3) потом ты делаешь PR в https://github.com/rusefi/ChibiOS/tree/stable_rusefi точно так же, как ты делаешь это в rusefi/rusefi
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by AndreyB »

andreika wrote:Там человек как раз добавил поддержку для Idle-прерывания, но для STM32F7. Нам этот код напрямую не подходит (у нас в F4 нет USART_CR1_RTOIE), и кроме того, этот код не вошёл в используемую нами stable-ветку, но зато он был добавлен в latest-ветку...
Очень хочется всё-таки заводить топик на чиби-форуме и начать наш патч им предлагать. Мне стрёмно уходить дальше и дальше от оригинальной Чиби, нужна какая-то надежда, что они этот патч рано или поздно примут. Регистрируйся пожалуйста там :)
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

Создал PR для ядра, для ускорения процесса! ;)
russian wrote:Регистрируйся пожалуйста там
Зарегистрировался. Да, нужно будет потом заняться продвижением нашего патча в официальные ветки, после того как внедрим его у себя.
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

Итак, благодаря Андрею @Russian и @mobyfab, мы пропатчили ядро ChibiOS, и это открыло дорогу к реализации полноценного DMA-UART для бинарного протокола rusEFI!

И у нас получилось! 8-)
Преимущества новой реализации:
1. Не требует высоких приоритетов прерываний IRQ, не мешает работе таймеров Precise/ICU и совершенно не чувствителен к таймингам вызова своих прерываний.
2. Прекрасно работает даже на дебажном варианте прошивки по умолчанию, без всяких оптимизаций! Запас "прочности" определяется размером буфера!
3. Не вносит дополнительных задержек при приёме данных и может работать на очень высоких битрейтах!
4. Прерывания вызываются редко (всего два раза на размер DMA-буфера плюс 1 раз в конце приёма данных) и дают минимальную вычислительную нагрузку.
5. Не вмешивается в протокольный парсинг и почти не требует рефакторинга высокоуровневого кода.

Я потестировал его как на Консоли со включённой эмуляцией ДПКВ (внешней и внутренней), так и на ТюнерСтудио.
И даже написал для него юнит-тест для проверки на искусственных данных. Гонял его в хвост и в гриву - работает просто неубиваемо! :D
Ни единого сбоя в принимаемых данных, даже на переходных режимах запуска, при флуде ошибок синхронизации и т.п.

Тем не менее, в PR я пока оставляю его отключенным по умолчанию. Если Андрей @Russian сочтёт нужным, он сам изменит эту настройку. Так что если вы хотите попробовать у себя новый драйвер, то нужно пересобрать прошивку вот так:

Code: Select all

// config/stm32f4ems/efifeatures.h 
#define TS_UART_DMA_MODE TRUE
Для платы Прометея я оверрайдю эту настройку в своём конфиге.
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by puff »

Как выглядит оверрайдинг в своём конфиге? В смысле вот эту строчку при сборке каждый раз и вставляешь?
Надо будет завтра попробовать...
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by AndreyB »

puff wrote:Как выглядит оверрайдинг в своём конфиге? В смысле вот эту строчку при сборке каждый раз и вставляешь?
нет - всё это в основной ветке включено по-умолчанию
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

russian wrote:нет - всё это в основной ветке включено по-умолчанию
Разве? В основной ветке DMA сейчас выключен:

Code: Select all

// Use 'UART' DMA-mode driver instead of 'SERIAL'
#define TS_UART_DMA_MODE FALSE

Вот, puff, собрал для тебя версию прошивки с UART-DMA:
rusefi-uart-dma-build.zip
(431.6 KiB) Downloaded 363 times
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by puff »

спасибо! про выключенность сам проверил - не очень понял слова russian
собирался завтра сам откомпилить и попробовать - вдруг еще и мой баг по ходу починили) - а теперь даже компилить не надо)
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by puff »

хм. тут сейчас мой пул-реквест приняли
решил попробовать собрать. сначала синхронизировался
https://help.github.com/articles/syncing-a-fork/

Code: Select all

git fetch upstream
remote: Counting objects: 273, done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 273 (delta 195), reused 207 (delta 188), pack-reused 59
Receiving objects: 100% (273/273), 56.08 KiB | 0 bytes/s, done.
Resolving deltas: 100% (199/199), completed with 60 local objects.
From https://github.com/rusefi/rusefi
   807df4b..3ff5a8f  master     -> upstream/master
Fetching submodule firmware/ChibiOS3
remote: Counting objects: 13, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 13 (delta 10), reused 13 (delta 10), pack-reused 0
Unpacking objects: 100% (13/13), done.
From https://github.com/rusefi/ChibiOS
   fa141e2..14c0a4d  stable_rusefi -> origin/stable_rusefi
iMac:rusefi yura$ git checkout master
M	firmware/ChibiOS-Contrib
M	firmware/ChibiOS3
M	firmware/Makefile
Already on 'master'
Your branch is up-to-date with 'origin/master'.
iMac:rusefi yura$ git merge upstream/master
Updating 1d28418..3ff5a8f
Fast-forward
 firmware/.cproject                                 |   2 +-
 firmware/ChibiOS3                                  |   2 +-
 firmware/config/engines/mazda_miata_vvt.cpp        |  12 +-
 firmware/config/stm32f4ems/efifeatures.h           |  10 +-
 firmware/config/stm32f4ems/halconf.h               |  15 ++
 firmware/config/stm32f4ems/mcuconf.h               |  17 ++-
 firmware/console/binary/tunerstudio.cpp            | 109 ++++++---------
 firmware/console/binary/tunerstudio_io.cpp         | 155 ++++++++++++++++-----
 firmware/console/binary/tunerstudio_io.h           |  38 +++--
 firmware/console/console_io.cpp                    |  14 +-
 firmware/console/console_io.h                      |   2 +-
 firmware/console/status_loop.cpp                   |  12 +-
 firmware/controllers/algo/engine.cpp               |   2 +-
 firmware/controllers/algo/engine.h                 |   2 +-
 firmware/controllers/algo/rusefi_enums.h           |   6 +-
 firmware/controllers/algo/rusefi_generated.h       |   7 +-
 firmware/controllers/alternatorController.h        |   2 +
 firmware/controllers/electronic_throttle.cpp       |   4 +
 firmware/controllers/idle_thread.cpp               |  59 +++++---
 firmware/controllers/idle_thread.h                 |   1 +
 firmware/controllers/math/pid.h                    |   4 +-
 firmware/controllers/settings.cpp                  |   5 +-
 firmware/controllers/trigger/trigger_decoder.cpp   |   4 +-
 firmware/hw_layer/can_hw.cpp                       |   2 +-
 firmware/hw_layer/vehicle_speed.cpp                |   4 +-
 firmware/integration/rusefi_config.txt             |   9 +-
 firmware/rusefi.cpp                                |   2 +-
 firmware/svnversion.h                              |   4 +-
 .../docs/{28 - Cranking.png => 28-Cranking.png}    | Bin
 ...png => 29-Cranging_Coolant_Temp_Multiplier.png} | Bin
 ...ier.png => 31-Cranking_Duration_Multiplier.png} | Bin
 firmware/tunerstudio/rusefi.ini                    |  32 +++--
 firmware/tunerstudio/rusefi.input                  |  28 ++--
 .../.idea/inspectionProfiles/Project_Default.xml   |  19 ---
 java_console/.idea/vcs.xml                         |   4 +-
 .../com/rusefi/binaryprotocol/BinaryProtocol.java  |  10 +-
 .../models/src/com/rusefi/AverageAngles.java       |   5 +-
 .../models/src/com/rusefi/config/Fields.java       |   9 +-
 java_console/ui/src/com/rusefi/Launcher.java       |   6 +-
 .../ui/src/com/rusefi/SensorSnifferPane.java       |   9 +-
 misc/git_cheat_sheet.txt                           |   1 +
 simulator/simulator/efifeatures.h                  |   1 +
 simulator/simulator/rusEfiFunctionalTest.cpp       |   4 +-
 43 files changed, 406 insertions(+), 227 deletions(-)
 rename firmware/tunerstudio/docs/{28 - Cranking.png => 28-Cranking.png} (100%)
 rename firmware/tunerstudio/docs/{29 - Cranging Coolant Temp Multiplier.png => 29-Cranging_Coolant_Temp_Multiplier.png} (100%)
 rename firmware/tunerstudio/docs/{31 - Cranking Duration Multiplier.png => 31-Cranking_Duration_Multiplier.png} (100%)
 delete mode 100644 java_console/.idea/inspectionProfiles/Project_Default.xml
после этого переставляю
#define TS_UART_DMA_MODE TRUE
пробую собрать и вот такая ошибка:
iMac:firmware yura$ time make
Compiling hal.c
In file included from config/stm32f4ems/mcuconf.h:20:0,
from config/stm32f4ems/halconf.h:31,
from ChibiOS3/os/hal/include/hal.h:30,
from ChibiOS3/os/hal/src/hal.c:25:
config/stm32f4ems/efifeatures.h:254:0: error: "EFI_UART_GPS" redefined [-Werror]
#define EFI_UART_GPS FALSE

config/stm32f4ems/efifeatures.h:176:0: note: this is the location of the previous definition
#define EFI_UART_GPS TRUE

cc1: all warnings being treated as errors
make: *** [build/obj/hal.o] Error 1

real 0m6.891s
user 0m2.399s
sys 0m0.174s
это что-то где-то сломалось?
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

puff wrote:это что-то где-то сломалось?
Там как раз мой маленький PR сейчас лежит, дожидается - если Андрей его мерджанёт, и ты обновишь репозиторий, то всё починится! :)
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by puff »

хм.
./hw_layer/sensors/CJ125.cpp:71:22: warning: 'state' defined but not used [-Wunused-variable]
static cj125_state_e state = CJ125_IDLE;
^~~~~
Compiling tunerstudio_io.cpp
./console/binary/tunerstudio_io.cpp:73:1: error: too many initializers for 'UARTConfig'
};
^
make: *** [build/obj/tunerstudio_io.o] Error 1

real 4m33.366s
user 3m35.268s
sys 0m23.901s
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

puff wrote:./console/binary/tunerstudio_io.cpp:73:1: error: too many initializers for 'UARTConfig'
Обнови ядро (git submodule update) - см. шпаргалку Андрея.
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by AndreyB »

puff wrote:хм.
https://github.com/rusefi/rusefi/blob/master/misc/git_cheat_sheet.txt
Refresh submodules:

git submodule update --recursive --remote
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by AndreyB »

Мне кажется, что на GPS ты набросился зря: https://github.com/rusefi/rusefi/commit/39ac59b5b65d2e79b262318c68f12507539984a1
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by puff »

угу. помогло.
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by puff »

но вот, например.
diff /Users/yura/Desktop/rusefi-uart-dma-build/rusefi.bin build/rusefi.bin
Binary files /Users/yura/Desktop/rusefi-uart-dma-build/rusefi.bin and build/rusefi.bin differ
да даже размером:
381 120 Б
против
284 976 Б

хотя для hex файлов оно вывело полотно кода, без слов differ... но и hex файлы отличаются размером на 300 кб...
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

puff wrote:да даже размером: 381 120 Б против 284 976 Б
Похоже на разницу в размерах между релизной и дебажной версиями. Если ты сравниваешь с той версией, что я дал, и она меньше той, что ты скомпилил, то это из-за того, что я тебе дал релизную с оптимизациями (и советую тебе пробовать именно её, если у тебя были проблемы со связью), а ты, вероятно, собрал обычную, дебажную...
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

Вдогонку: puff, Андрей обнаружил несовместимость нового UART-DMA с SPI2, которую я не заметил (на Прометее нет spi2). Поэтому чтобы прошивка заработала, придётся либо подождать до завтра, когда мы это исправим, либо в конфиге твоей машины временно отключить SPI2:

Code: Select all

boardConfiguration->is_enabled_spi_2 = false;
Это отключит HIP9011 и CJ125, но даст возможность временно потестировать UART-DMA.
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

andreika wrote:придётся либо подождать до завтра, когда мы это исправим, либо в конфиге твоей машины временно отключить SPI2
В ближайшее время мы это не исправим: :(
https://github.com/rusefi/rusefi/issues/421#issuecomment-303669996
По-хорошему, надо сливать два драйвера (Uart и Serial) в один универсальный, с гибкой настройкой комбинаций DMA/Interrupt, и старые API сделать обёртками к новому драйверу...
Но это целый кусок работы, поэтому пока просьба к @puff вначале проверить текущий код UART-DMA с отключенным SPI2 - чтобы понять в принципе, решает ли это проблему с его багом или нет. Если да, то тогда можно будет подумать, что с этим делать... Если нет, то TS_UART_DMA_MODE будет использоваться пока только для UART4 и останется отключенным по умолчанию, до лучших времён...
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by AndreyB »

А на какой странице DM00031020.pdf опции SPI2 и UART3 озвучены? А то http://www.chibios.com/forum/viewtopic.php?t=1240#p11334 говорит "I took a quick look into the reference manual and as it looks it should be possible to use them both at the same time when you use SPI2 on channel 0 and USART3 on channel 4."
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by andreika »

russian wrote:А на какой странице?
Таблица 42, страница 307. Для USART3_TX есть только два варианта - Stream 3 или Stream 4. И оба стрима нужны для работы SPI2. А вот для USART3_TX нужен Stream 1, и там вроде ничего плохого нет.
russian wrote:it should be possible to use them both at the same time when you use SPI2 on channel 0 and USART3 on channel 4."
Каналы-то разные. Но стримы (по которым данные передаются) - те же...

P.S. Я буду счастлив ошибиться...
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)

Post by AndreyB »

Печаль :( stm32f4 - битва головой в ограничения железа :(
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Post Reply