Page 4 of 13

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

Posted: Wed May 24, 2017 11:59 am
by puff
на прошивке от andreika у меня порт усб даже не появился... как так?

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

Posted: Wed May 24, 2017 12:01 pm
by AndreyB
puff wrote:на прошивке от andreika у меня порт усб даже не появился... как так?
надо его как-то заставить купить stm32f4discovery, но как? у нас же всё добровольно! :(

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

Posted: Wed May 24, 2017 12:05 pm
by andreika
puff wrote:на прошивке от andreika у меня порт усб даже не появился... как так?
Та прошивка, что я выкладывал, не заработает, т.к. тогда мы ещё не знали про конфликт DMA UART и SPI. Нужно обновить текущую версию прошивки, включить в ней UART-DMA, затем отключить SPI2, затем скомпилировать её, и тогда проверять.

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

Posted: Wed May 24, 2017 12:20 pm
by puff
ок, вечером попробую собрать из исходников.
кто бы тем временем разжевал как делается дебажная версия, и как финальная? (отличия только в ключах в мейкфайле или еще что-то?) и какую версию дает билдсервер?

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

Posted: Wed May 24, 2017 3:34 pm
by puff
и кстати, а какой строчкой отключать spi2?

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

Posted: Wed May 24, 2017 3:58 pm
by andreika
puff wrote:и кстати, а какой строчкой отключать spi2?
Я же писал пару сообщений назад... :(

Code: Select all

boardConfiguration->is_enabled_spi_2 = false;
Только не забыть сбросить настройки прошивки.

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

Posted: Wed May 24, 2017 4:01 pm
by puff
а. в конфиге машины? сейчас попробую разобраться.

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

Posted: Wed May 24, 2017 8:37 pm
by puff
стоп. в конфиге моей машины - так я с твоей прошивкой (перед прошивкой делал st-flash erase) даже до выбора мотора не добрался...
короче, нужны инструкции, куда запихнуть
boardConfiguration->is_enabled_spi_2 = false;

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

Posted: Wed May 24, 2017 9:24 pm
by andreika
puff wrote:стоп. в конфиге моей машины
Нет, конечно, не в конфиге твоей машины. Прежде всего, нужно в файле HIP9011 поменять строки:

Code: Select all

boardConfiguration->isHip9011Enabled = false/*true*/;
boardConfiguration->is_enabled_spi_2 = false/*true*/;
Либо сделать "#define EFI_HIP_9011 FALSE" и "#define EFI_CJ125 FALSE" вместо TRUE. Плюс, можно попробовать и #define STM32_SPI_USE_SPI2 FALSE вместо TRUE. (нужно заменить там, где эти строчки есть в efifeatures.h и mcuconf.h) Вообще, такие вещи лучше Андрей подскажет, я ещё плохо знаю, где и как лучше ломать код :P

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

Posted: Wed May 24, 2017 9:40 pm
by puff
пока слишком сложно)
с дефайнами выглядит как будто правильнее. останется найти эти efifeatures.h и mcuconf.h (кстати, а почему сразу в двух файлах?)
и еще, совсем недавно порадовался работе sd-карты- и чего, она перестанет работать? (если не путаю, оно было на 2 spi)

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

Posted: Wed May 24, 2017 10:09 pm
by andreika
puff wrote:пока слишком сложно)
Если это слишком сложно :shock:, то тогда лучше не надо экспериментировать, и лучше дождаться, пока Андрей всё для нас быстренько починит, и мы уже запустим готовую безглючную прошивку!
puff wrote:с дефайнами выглядит как будто правильнее. останется найти эти efifeatures.h и mcuconf.h (кстати, а почему сразу в двух файлах?)
Файлы здесь:
firmware/config/stm32f4ems/efifeatures.h
firmware/config/stm32f4ems/mcuconf.h
puff wrote:и еще, совсем недавно порадовался работе sd-карты- и чего, она перестанет работать? (если не путаю, оно было на 2 spi)
Во-первых, речь идёт всего лишь о разовом эксперименте, и какая разница, будет ли во время теста UART работать карта памяти? Во-вторых, карта памяти в стандартной прошивке сидит на SPI3 и не имеет отношения к обсуждаемым вопросам.

P.S. По-моему, лучше переместить обсуждение стардартной платы в соответствующую ветку... :roll: :oops:

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

Posted: Thu May 25, 2017 10:46 am
by andreika
andreika wrote:2) При запуске эмулятора (что встроенного self_stimulator, что внешнего аппаратного на Ардуино) - куча ошибок
Обороты показываются нормально до 3000, а выше - с проблемами (скачут сильно). А на 7000 оборотах прошивка вообще зависает и связь рвётся.
Пора исследовать проблему ошибок на 60-2. Сейчас на высоких оборотах прошивка уже не виснет (релиз-версия), но и обороты высокие не работают.
На внешнем сигнале ДПКВ (Ардуино-эмулятор) стабильные обороты только до 5700, но при подаче сигнала разово вылазит куча ошибок. Но на 6000-6100 обороты показывает уже нестабильно, и ошибки начинают писаться в лог непрерывно. :( А на 7000 показания и вовсе постоянно хаотично меняются (прыгает 140, 3000, 450, 3800 и т.д.), правильного значения вообще не показывает, и ошибки валят как при конце света. Поднимаем обороты выше - начиная с 7500 начинают снова показываться правильные обороты, но нестабильно - примерно как при 6200. Поднимаю ещё выше, до 8200-8500 - RPM показывает почти стабильный, как при 6000! :o
На встроенном программном self_stimulator (без проводка) ситуация похуже: всё стабильно и красиво только до 4700 оборотов (и те же ошибки в начале, при запуске симулятора).

Такое ощущение, что это всё из-за избыточных локов, которые мешают ICU. Нужно попробовать убрать глобальные локи из логгера (лок->ошибка->пишем в лог->больше локов->больше ошибок ?) и пофиксить парочку других моментов, с ними связанных. Буду копать дальше...

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

Posted: Thu May 25, 2017 11:51 am
by AndreyB
А что прошивка вообще логгирует на таких оборотах?

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

Posted: Thu May 25, 2017 12:09 pm
by andreika
russian wrote:А что прошивка вообще логгирует на таких оборотах?
На 99% вот такое:

Code: Select all

EngineState: 192: gap=1.02/1.00/1.00 @ 225 while expected 2.25/3.75 and 0.00/100000.00 error=1
EngineState: 192: gap=0.94/1.02/1.00 @ 227 while expected 2.25/3.75 and 0.00/100000.00 error=1
EngineState: 192: gap=2.94/0.94/1.02 @ 229 while expected 2.25/3.75 and 0.00/100000.00 error=1
EngineState: error: synchronizationPoint @ index 229 expected 116/0/0 got 230/0/0
EngineState: 192: gap=0.47/2.94/0.94 @ 0 while expected 2.25/3.75 and 0.00/100000.00 error=1
EngineState: 192: gap=0.57/0.47/2.94 @ 2 while expected 2.25/3.75 and 0.00/100000.00 error=1
EngineState: 192: gap=1.42/0.57/0.47 @ 5 while expected 2.25/3.75 and 0.00/100000.00 error=1
EngineState: 192: gap=0.75/1.42/0.57 @ 7 while expected 2.25/3.75 and 0.00/100000.00 error=1
EngineState: 192: gap=1.17/0.75/1.42 @ 9 while expected 2.25/3.75 and 0.00/100000.00 error=1
Бывает, редко попадается и такое:

Code: Select all

EngineState: WARNING: sync error: index #116 above total size 116
P.S. Новый код DMA-UART просто зверь! Нет потерь байт даже при maxPrecisionCallbackDuration=2626564 (2.6 млн, да, было и такое!) 8-)

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

Posted: Thu May 25, 2017 12:30 pm
by AndreyB
т.е. ошибки триггера из-за логгирования ошибок тригерра? так не может быть наверное? :)

только что добавил silentTriggerError. давай сделаем у тебя silentTriggerError=true и заново попробуем? логгирования ошибок триггера не будет. engine sniffer & sensor sniffer ведь выключены на этих оборотах, там *rpmthreshold переменные есть?

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

Posted: Thu May 25, 2017 4:36 pm
by andreika
russian wrote:давай сделаем у тебя silentTriggerError=true и заново попробуем?
Попробовал. Но стало лучше только чуть-чуть, на сотню оборотов, не более... Тогда я психанул, и поотрубал и поисправлял вообще всё, что только можно, и что связано с локами! :twisted: И оно заработало! 10000 оборотов - вообще без проблем! И на self_stimulator, и на аппаратном эмуляторе через MA9986 - жарит десять тысяч, аж пыль летит! :D
Правда, для таких чудес пришлось немного уменьшить фильтрующую ёмкость на входных цепях ДПКВ (510p вместо 1n), и на реальном датчике на машине ещё придётся повозиться...
Теперь осталось разобрать, чего же я там такого поотключал (АЦП, прежде всего) и наисправлял, и что именно повлияло...

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

Posted: Thu May 25, 2017 5:20 pm
by AndreyB
andreika wrote:Теперь осталось разобрать, чего же я там такого поотключал (АЦП, прежде всего) и наисправлял, и что именно повлияло...
Это очень полезные усилия, спасибо заранее!

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

Posted: Thu May 25, 2017 11:27 pm
by andreika
russian wrote:Это очень полезные усилия, спасибо заранее!
В общем, дело оказалось несколько запутано.
Прежде всего, нужно очень чётко разделять три режима: 1) self-stimulator; 2) arduino-emulator; 3) triggerSimulatorPins[0] + wire. У каждого режима оказались свои разные проблемы!
1) self-stimulator'у для нормальной работы оказалось достаточно silentTriggerError = true и обязательно релизной прошивки. Причём, вредят вовсе на локи, как я думал, а слишком медленная функция vappendPrintf() внутри scheduleMsg(). Похоже, что для обработчика прерывания ICU строковое форматирование - слишком большая роскошь.
2) Для arduino-emulator оказалось достаточно просто уменьшить ёмкость фильтра на входе MAX9926. Первичное значение я брал из схемы Frankenso, если что... Его сигнал стал стабильнее, чем у self-stimulator и, видимо, поэтому он может сносно работать даже без silentTriggerError, т.к. сам по себе почти не даёт ошибок. (поэтому я в начале думал, что silentTriggerError мало помогает - т.к. нужно было ещё перепаять конденсатор).
3) triggerSimulatorPins работает хуже остальных двух. То ли потому что выход 3-вольтовый, а порог 2.5В, то ли дополнительные задержки какие-то - не знаю... Склоняюсь к мнению, что на 60-2 он не очень подходит для теста высоких оборотов.
По итогам, вариант arduino-emulator работает лучше всего (если кому-то интересно, использовал проект ardustim). Но всё же нужно что-то делать с проблемой silentTriggerError.
В идеале, все ошибки писать в виде числовых параметров и кодов ошибок в FIFO-буфер, который уже превращать в текст в обычном потоке.
А пока, для простоты, можно просто не флудить повторяющиеся ошибки (флаги) - это лучше чем вовсе прятать ошибки, пусть и только для высоких оборотов... Плюс, остаётся ещё проблема начальных ошибок при старте "двигателя". Анти-флуд ошибок эту проблему решит.
Ещё, мне показалось, прошивка плохо видела низкие обороты (<200) в режиме arduino-emulator. Но это ещё нужно проверять...

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

Posted: Thu May 25, 2017 11:46 pm
by puff
прямо настоящий детектив.
любопытно, а при обычных оборотах эта проблема просто глазу не заметна, но тем не менее остается? (ведь по идее ресурсы точно так же сжираются, просто межу критичными событиями больше свободного времени для выполнения задач типа vappendPrintf)

ардуино емулятор создает сигнал переменного тока на входе в max9926?

интересно, чем отличается triggerSimulatorPins от self-stimulator "под капотом" - плохо понимаю, как там может влиять 3В сигнал и 2,5В порог - ведь при более низких оборотах все ок, стало быть, задержки с включением пинов.

ЗЫ на каких пинах висел trigger-pin, видел ли ты https://github.com/rusefi/rusefi/commit/3e9ff64c8d7f4198bbd7f699f3a19820604cf316 - в твоем коде ошибка пофикшена?

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

Posted: Fri May 26, 2017 12:17 am
by andreika
puff wrote:любопытно, а при обычных оборотах эта проблема просто глазу не заметна, но тем не менее остается?
Ну, как-бы да. Но если проблема никак себя не проявляет, то её и нет :) Тем более, что это актуально не просто для высоких оборотов, а только для многозубых шкивов на высоких оборотах. На 7500 оборотах время на input capture порядка 70-140 мкс для шкива 60-2 (смотря как учитывать фронты).
puff wrote:ардуино емулятор создает сигнал переменного тока на входе в max9926?
Нет, к сожалению, только цифровой сигнал (меандр).
puff wrote:как там может влиять 3В сигнал и 2,5В порог - ведь при более низких оборотах все ок, стало быть, задержки с включением пинов.
Влиять может из-за входного RC-фильтра у MAX9926 - он делает более пологие фронты, и это меняет скважность сигнала, поскольку пороги переключения не по центру.
puff wrote:ЗЫ на каких пинах висел trigger-pin
Тут всё ок, PA5, TIM2_CH1.

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

Posted: Fri May 26, 2017 12:40 am
by andreika
Вдогонку: есть подозрение, что низкие обороты прошивка давит сама, вот так: "templog rpm=0 since not running" (встречаются эти ошибки).. Т.е. RpmCalculator::isRunning() почему-то недоволен (мы же понимаем, что при <60 RPM "за последнюю секунду" никак не может быть 1 полный оборот), или оно вообще не хочет на этих оборотах синхронизироваться, что ли? :? С этим ещё нужно будет разобраться...

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

Posted: Fri May 26, 2017 3:26 am
by AndreyB

Code: Select all

	bool result = nowNt - lastRpmEventTimeNt < US2NT(US_PER_SECOND_LL); // Anything below 60 rpm is not running

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

Posted: Fri May 26, 2017 3:34 am
by AndreyB
Немножко потыкался - вряд ли что-то улучшил, но в паре мест вставил микро-оптимизации. Замеров у меня нет, так что вряд ли что-то улучшил :)

А больше всего меня смутило CH_DBG_STATISTICS - выключил её. Оно там в методах lock/unlock торчало кажется, а мы эти методы часто вызываем.

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

Posted: Fri May 26, 2017 10:37 am
by andreika
russian wrote:// Anything below 60 rpm is not running
К сожалению, это не совсем так. Я измерил реальный порог отключения running = 120 rpm. Т.е. ровно 2 секунды на период. И это нужно бы исправить.
russian wrote:вряд ли что-то улучшил ... CH_DBG_STATISTICS - выключил её.
Спасибо! Ситуацию это всё же немного улучшило, и отодвинуло порог ошибок для self_stimulator с 7500 на 8500. Считаю, что с этим пока можно жить.

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

Posted: Fri May 26, 2017 12:48 pm
by AndreyB

Code: Select all

	bool result = nowNt - lastRpmEventTimeNt < US2NT(2 * US_PER_SECOND_LL); // Anything below 60 rpm is not running

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

Posted: Fri May 26, 2017 1:23 pm
by puff
не знаю насколько в тему
http://we.easyelectronics.ru/STM32/stm32f4-usb-hs-dma-hal-kak-eto-bylo.html#cut

или стек usb в chibios полностью свой?

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

Posted: Fri May 26, 2017 9:52 pm
by andreika
russian wrote:bool result = nowNt - lastRpmEventTimeNt < US2NT(2 * US_PER_SECOND_LL); // Anything below 60 rpm is not running
О, теперь всё работает чётко от 60 оборотов! Я доволен, спасибо! :D

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

Posted: Tue May 30, 2017 5:10 pm
by andreika
После пропадания на несколько дней, возвращаюсь к нашим делам! :)
Написал простенький бутлоадер для rusEFI. И он даже работает! :D
На первое время он вполне сгодится, как мне кажется, а потом его можно будет дорабатывать.

Пару слов о том, что он делает. Пока всего два пункта:
1) Запускает основную прошивку;
2) Умеет коннектиться к компу по Serial-порту и эмулировать протокол DFU, чтобы софт думал, что это родной бутлоадер. 8-)
При этом он не сидит и не ждёт долго при запуске, т.е. не замедляет старт основной прошивки (настраиваемая задержка порядка 0.1 секунды или меньше).
Я опробовал его со стандартным софтом FLASHER-STM32 ("STMFlashLoader Demo"):
- версии проца и бутлоадера правильно опознаются, набор поддерживаемых команд передаётся;
- работают режимы: посекторного стирания памяти, чтения и записи прошивки (с верификацией), а также автостарта прошивки после записи.
На данный момент бутлоадер умеет обновлять только основную часть прошивки, но не себя самого. Но софт этого не замечает, и считает, что всё в порядке ;)
Для обновления бутлоадера пока по-прежнему нужен программатор или встроенный STM-бутлоадер (у кого он есть).

Сейчас мне надо разрезать его на серию небольших PR, как любит Андрей, и, вероятно, выкладывать... По умолчанию бутлоадер отключён и не влияет на работу прошивки (включается по USE_BOOTLOADER=yes через мейкфайл).

В будущих версиях можно будет добавить в него поддержку карты памяти.
А также спец.протокола для обновления прошивки через TunerStudio. К сожалению, про этот протокол инфы очень мало, надо копать...

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

Posted: Tue May 30, 2017 7:39 pm
by AndreyB
Пока не прочитал всё, но вижу несколько PR

с PR есть сложность - кажлый последующий включает в себя все прошлые. например https://github.com/rusefi/rusefi/pull/433/commits

т.е. у нас не 4 разных PR, а первый, первый+второй, первый+второй+третий :(

У меня у самого так было аналогично, когда я пытался куда-то делать PR. Я не знаю, как правильно :(

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

Posted: Tue May 30, 2017 7:57 pm
by andreika
russian wrote:т.е. у нас не 4 разных PR, а первый, первый+второй, первый+второй+третий :(
У меня у самого так было аналогично, когда я пытался куда-то делать PR. Я не знаю, как правильно :(
Понял, учтём, спасибо. Видимо, нужно делать бранчи не последовательно одну из другой, а каждый раз чекаутить мастер и возвращаться к нему, и поверх него делать бранч "в сторону"...

P.S. Я пофиксил PR #433 или нет?