[rusEfi] ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
- Dron_Gus
- contributor
- Posts: 460
- Joined: Wed Nov 13, 2013 1:11 pm
- Location: S-Pb
- Github Username: dron0gus
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Можно 5 дилетантских копеек?
UART на прерываниях без fifo даже на скорости 38400 это 5k прерываний в секунду. Это только на прием. Это слишком.
DMA на пару байт в этом случае не лучше.
Использование Чибиосовской обертки при работе с этим портом в бинарном режиме - лишний overhead.
Простой вариант это DMA заряженный на весь буфер и полинг раз 100 в секунду текущего положения указателя записи. Если приняли пакет - обрабатывать, нет - спим.
Сложный вариант - это гибрид IRQ + DMA + перенос части разбора протокола в IRQ. Стартуем в IRQ режиме, ждем заголовка. Как только получаем размер пакета - заряжаем DMA на остаток пакета и таймер на таймаут приема.
UART на прерываниях без fifo даже на скорости 38400 это 5k прерываний в секунду. Это только на прием. Это слишком.
DMA на пару байт в этом случае не лучше.
Использование Чибиосовской обертки при работе с этим портом в бинарном режиме - лишний overhead.
Простой вариант это DMA заряженный на весь буфер и полинг раз 100 в секунду текущего положения указателя записи. Если приняли пакет - обрабатывать, нет - спим.
Сложный вариант - это гибрид IRQ + DMA + перенос части разбора протокола в IRQ. Стартуем в IRQ режиме, ждем заголовка. Как только получаем размер пакета - заряжаем DMA на остаток пакета и таймер на таймаут приема.
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Согласен с 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. Спасибо за интерес к теме!
Что касается конкретных вариантов реализации, то я склоняюсь к более интересному варианту: использовать связку прерываний half (DMA_SxCR_HTIE) + idle (USART_CR1_IDLEIE). Первое нужно для приёма больших потоковых пакетов, а второе уменьшит задержку ожидания по сравнению с тупым поллингом (мои тесты показали, что это критично для протокола plain-TS с множеством однобайтных команд). При этом, логику парсинга пакетов мы не трогаем, и всё должно вписаться аккуратно вместо моего dma-v1.0. Единственный минус, о котором я уже писал ранее - придётся зацепить код ядра - это несколько остужает мой энтузиазм С другой стороны, писать свой отдельный драйвер UART тоже как-то не хочется - всё же проще минимально пропатчить чибисовский драйвер dma, добавив туда поддержку для прерываний idle и half, просто с вызовом внешних хэндлеров... Так или иначе, по идее, всё будет гуд!
P.S. Спасибо за интерес к теме!
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Fixed! Спасибо Андрею за мердж моего PR!andreika wrote:1) Перезапуск COM-порта Консолью через каждые 20 секунд при нулевых оборотах - остался. Причину пока так и не выяснил. Может, кто-то что-то знает про это?
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
а в чем был затык?
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Когда в прошивке ничего не происходит и обороты нулевые, то она по запросам с Консоли (GET_TEXT) возвращает только пустые строки (и это правильно). А парсер этих строк не реагирует на них до конца, и не вызывает сброс сторожевого таймера (такая себе "кнопка мертвеца" для COM-порта). Также приходят и другие данные - Output (датчики), но на них тоже нет сброса таймера. Поэтому сторожевой таймер досчитывал до 20 секунд, и COM-порт отваливался. Мы это пофиксили, добавив сброс сторожа по данным output, и теперь коннект стабильный и держится долго! (если нет проблем связи)puff wrote:а в чем был затык?
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
А ты на эту тему не хочешь спросить чиби-форум? Что считает официальная политика их партии по этому вопросу?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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Я там даже не зарегистрирован... Я хочу сначала написать свой код, проверить его работоспособность и доказать эффективность, и тогда уже можно обратиться на чиби-форум в плане "официального" PR и т.п. В крайнем случае, я примерно вижу альтернативный способ, как можно добиться желаемого и без правок ядра, но это уже не так красиво...russian wrote:А ты на эту тему не хочешь спросить чиби-форум? Что считает официальная политика их партии по этому вопросу?
P.S. Я нашёл у них на форуме похожую тему:
http://www.chibios.com/forum/viewtopic.php?f=25&t=3441&start=10
Там человек как раз добавил поддержку для Idle-прерывания, но для STM32F7. Нам этот код напрямую не подходит (у нас в F4 нет USART_CR1_RTOIE), и кроме того, этот код не вошёл в используемую нами stable-ветку, но зато он был добавлен в latest-ветку... Я его семантику частично использую и перенесу к нам, чтобы сохранить преемственность и всё вписать красиво.
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Написал новый код работы по DMA с IDLE/HALF-IRQ (кодовое название v.2.0)!
Вот патч для ядра, который нужен для работы нового кода: Просьба добавить его сейчас в master-ветку (ChibiOS3), т.к. я с этими submodules запутаюсь, пока буду пытаться сделать PR...
Код безобидный, и никак не затронет работу прошивки. В нём также частично использована пара фрагментов кода от аналогичного патча для STM32F7 (всё, что связано со словом "timeout").
После того как ядро будет пропатчено, я выложу основной PR для rusEFI-dma и расскажу всё подробно!
Вот патч для ядра, который нужен для работы нового кода: Просьба добавить его сейчас в master-ветку (ChibiOS3), т.к. я с этими submodules запутаюсь, пока буду пытаться сделать PR...
Код безобидный, и никак не затронет работу прошивки. В нём также частично использована пара фрагментов кода от аналогичного патча для STM32F7 (всё, что связано со словом "timeout").
После того как ядро будет пропатчено, я выложу основной PR для rusEFI-dma и расскажу всё подробно!
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Я сделаю чуть попозже, но если ты хочешь PR сделать то вот какandreika wrote:Вот патч для ядра, который нужен для работы нового кода:
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Очень хочется всё-таки заводить топик на чиби-форуме и начать наш патч им предлагать. Мне стрёмно уходить дальше и дальше от оригинальной Чиби, нужна какая-то надежда, что они этот патч рано или поздно примут. Регистрируйся пожалуйста там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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Создал PR для ядра, для ускорения процесса!
Зарегистрировался. Да, нужно будет потом заняться продвижением нашего патча в официальные ветки, после того как внедрим его у себя.russian wrote:Регистрируйся пожалуйста там
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Итак, благодаря Андрею @Russian и @mobyfab, мы пропатчили ядро ChibiOS, и это открыло дорогу к реализации полноценного DMA-UART для бинарного протокола rusEFI!
И у нас получилось!
Преимущества новой реализации:
1. Не требует высоких приоритетов прерываний IRQ, не мешает работе таймеров Precise/ICU и совершенно не чувствителен к таймингам вызова своих прерываний.
2. Прекрасно работает даже на дебажном варианте прошивки по умолчанию, без всяких оптимизаций! Запас "прочности" определяется размером буфера!
3. Не вносит дополнительных задержек при приёме данных и может работать на очень высоких битрейтах!
4. Прерывания вызываются редко (всего два раза на размер DMA-буфера плюс 1 раз в конце приёма данных) и дают минимальную вычислительную нагрузку.
5. Не вмешивается в протокольный парсинг и почти не требует рефакторинга высокоуровневого кода.
Я потестировал его как на Консоли со включённой эмуляцией ДПКВ (внешней и внутренней), так и на ТюнерСтудио.
И даже написал для него юнит-тест для проверки на искусственных данных. Гонял его в хвост и в гриву - работает просто неубиваемо!
Ни единого сбоя в принимаемых данных, даже на переходных режимах запуска, при флуде ошибок синхронизации и т.п.
Тем не менее, в PR я пока оставляю его отключенным по умолчанию. Если Андрей @Russian сочтёт нужным, он сам изменит эту настройку. Так что если вы хотите попробовать у себя новый драйвер, то нужно пересобрать прошивку вот так:
Для платы Прометея я оверрайдю эту настройку в своём конфиге.
И у нас получилось!
Преимущества новой реализации:
1. Не требует высоких приоритетов прерываний IRQ, не мешает работе таймеров Precise/ICU и совершенно не чувствителен к таймингам вызова своих прерываний.
2. Прекрасно работает даже на дебажном варианте прошивки по умолчанию, без всяких оптимизаций! Запас "прочности" определяется размером буфера!
3. Не вносит дополнительных задержек при приёме данных и может работать на очень высоких битрейтах!
4. Прерывания вызываются редко (всего два раза на размер DMA-буфера плюс 1 раз в конце приёма данных) и дают минимальную вычислительную нагрузку.
5. Не вмешивается в протокольный парсинг и почти не требует рефакторинга высокоуровневого кода.
Я потестировал его как на Консоли со включённой эмуляцией ДПКВ (внешней и внутренней), так и на ТюнерСтудио.
И даже написал для него юнит-тест для проверки на искусственных данных. Гонял его в хвост и в гриву - работает просто неубиваемо!
Ни единого сбоя в принимаемых данных, даже на переходных режимах запуска, при флуде ошибок синхронизации и т.п.
Тем не менее, в PR я пока оставляю его отключенным по умолчанию. Если Андрей @Russian сочтёт нужным, он сам изменит эту настройку. Так что если вы хотите попробовать у себя новый драйвер, то нужно пересобрать прошивку вот так:
Code: Select all
// config/stm32f4ems/efifeatures.h
#define TS_UART_DMA_MODE TRUE
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Как выглядит оверрайдинг в своём конфиге? В смысле вот эту строчку при сборке каждый раз и вставляешь?
Надо будет завтра попробовать...
Надо будет завтра попробовать...
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
нет - всё это в основной ветке включено по-умолчанию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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Разве? В основной ветке DMA сейчас выключен:russian wrote:нет - всё это в основной ветке включено по-умолчанию
Code: Select all
// Use 'UART' DMA-mode driver instead of 'SERIAL'
#define TS_UART_DMA_MODE FALSE
Вот, puff, собрал для тебя версию прошивки с UART-DMA:
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
спасибо! про выключенность сам проверил - не очень понял слова russian
собирался завтра сам откомпилить и попробовать - вдруг еще и мой баг по ходу починили) - а теперь даже компилить не надо)
собирался завтра сам откомпилить и попробовать - вдруг еще и мой баг по ходу починили) - а теперь даже компилить не надо)
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
хм. тут сейчас мой пул-реквест приняли
решил попробовать собрать. сначала синхронизировался
https://help.github.com/articles/syncing-a-fork/
после этого переставляю
решил попробовать собрать. сначала синхронизировался
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
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Там как раз мой маленький PR сейчас лежит, дожидается - если Андрей его мерджанёт, и ты обновишь репозиторий, то всё починится!puff wrote:это что-то где-то сломалось?
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
хм.
./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
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Обнови ядро (git submodule update) - см. шпаргалку Андрея.puff wrote:./console/binary/tunerstudio_io.cpp:73:1: error: too many initializers for 'UARTConfig'
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
https://github.com/rusefi/rusefi/blob/master/misc/git_cheat_sheet.txtpuff wrote:хм.
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Мне кажется, что на 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
угу. помогло.
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
но вот, например.
381 120 Б
против
284 976 Б
хотя для hex файлов оно вывело полотно кода, без слов differ... но и hex файлы отличаются размером на 300 кб...
да даже размером: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 кб...
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Похоже на разницу в размерах между релизной и дебажной версиями. Если ты сравниваешь с той версией, что я дал, и она меньше той, что ты скомпилил, то это из-за того, что я тебе дал релизную с оптимизациями (и советую тебе пробовать именно её, если у тебя были проблемы со связью), а ты, вероятно, собрал обычную, дебажную...puff wrote:да даже размером: 381 120 Б против 284 976 Б
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Вдогонку: puff, Андрей обнаружил несовместимость нового UART-DMA с SPI2, которую я не заметил (на Прометее нет spi2). Поэтому чтобы прошивка заработала, придётся либо подождать до завтра, когда мы это исправим, либо в конфиге твоей машины временно отключить SPI2:
Это отключит HIP9011 и CJ125, но даст возможность временно потестировать UART-DMA.
Code: Select all
boardConfiguration->is_enabled_spi_2 = false;
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
В ближайшее время мы это не исправим: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 и останется отключенным по умолчанию, до лучших времён...
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
А на какой странице 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Таблица 42, страница 307. Для USART3_TX есть только два варианта - Stream 3 или Stream 4. И оба стрима нужны для работы SPI2. А вот для USART3_TX нужен Stream 1, и там вроде ничего плохого нет.russian wrote:А на какой странице?
Каналы-то разные. Но стримы (по которым данные передаются) - те же...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. Я буду счастлив ошибиться...
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977)
Печаль 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute