Вопросы по эсуд

Это оффтопик или флудилка или курилка
User avatar
Dron_Gus
contributor
contributor
Posts: 450
Joined: Wed Nov 13, 2013 1:11 pm
Location: S-Pb
Github Username: dron0gus

Re: Вопросы по эсуд

Post by Dron_Gus »

Мне кажется это чем-то напоминает преждевременную оптимизацию. Только наоборот, преждевременное усложнение. В чем проблема иметь несколько xxx-board.c файлов. С платформо-зависимой инициализацией. И несколько таргетов для сборки.
А то так и до прикручивания Device Tree недалеко.
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: Вопросы по эсуд

Post by AndreyB »

Dron_Gus wrote:Мне кажется это чем-то напоминает преждевременную оптимизацию. Только наоборот, преждевременное усложнение. В чем проблема иметь несколько xxx-board.c файлов. С платформо-зависимой инициализацией. И несколько таргетов для сборки.
+1

А в свете чудес github'а всё это особенно несложно.
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: Вопросы по эсуд

Post by andreika »

Dron_Gus wrote:В чем проблема иметь несколько xxx-board.c файлов. С платформо-зависимой инициализацией. И несколько таргетов для сборки.
Проблема в том, что нет этих файлов xxx-board.c. Я уже поднимал этот вопрос (почитайте эту ветку чуть ранее), мол, давайте выделим HAL-конфигурации board отдельно от конфигураций машин. Т.е. я вначале предложил этот более простой путь. Но Андрей тогда ответил, что это это сейчас не самое важное, и что непонятно, зачем такая гибкость на уровне исходников. Тогда я предложил хотя бы на уровне исходного кода убрать жёсткие привязки к железу - чтобы можно было потом легко создать конфиги для новых плат. Но Андрей сразу поставил вопрос ребром: мол, а как быть с инициализацией "голой" платы? Поэтому я вынужден был предлагать более сложные варианты, когда не нужно делать отдельных конфигураций для плат, а есть универсальная конфигурация, с автоопределением... Никто не хочет специально что-то усложнять. Лично моя цель - попытаться хоть как-то решить проблему платформо-зависимости - так, чтобы это устроило Андрея... :)
Универсальная конфигурация хороша тем, что она не ломает существующие юзер-настройки и нет риска сломать уже настроенный конфиг для какой-то машины. Но она сложнее, да.
Отдельные конфиги хороши тем, что они проще - это, по сути, просто рефакторинг уже имеющегося кода. Но мне сложнее сделать рефакторинг из-за ещё недостаточного знания структуры кода, и, получается, эта задача ложилась бы на плечи Андрея, что не хотелось бы... Вот такие проблемы! :mrgreen:

P.S. Выбор таргета для сборки всё равно понадобится независимо от проблемы пинаутов - при [скором] появлении плат на других MCU, т.к. в прошивке сейчас прописан только STM32F407.
User avatar
Dron_Gus
contributor
contributor
Posts: 450
Joined: Wed Nov 13, 2013 1:11 pm
Location: S-Pb
Github Username: dron0gus

Re: Вопросы по эсуд

Post by Dron_Gus »

Т.к. я пока исходники видет только через веб-морду гита, советовать больше ничего не буду. :)

З.Ы. Тюнер Студия умеет запрашивать у железяки доступные пины для функции или только берет из ini файла?

З.З.Ы. Три Андрея в треде. :)
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: Вопросы по эсуд

Post by AndreyB »

andreika wrote: Проблема в том, что нет этих файлов xxx-board.c... Лично моя цель - попытаться хоть как-то решить проблему платформо-зависимости - так, чтобы это устроило Андрея... :)

P.S. Выбор таргета для сборки всё равно понадобится независимо от проблемы пинаутов - при [скором] появлении плат на других MCU, т.к. в прошивке сейчас прописан только STM32F407.
Предлагаю проблемы решать по мере их поступления. Где твой топик про твою плату, в котором ты напишешь конкретный твой чип?
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: Вопросы по эсуд

Post by andreika »

Предлагаю для UART сделать пока необходимый минимум:
tunerstudio_binary_UART.patch
(6.13 KiB) Downloaded 697 times
Не знаю, рабочий патч или нет, но компилиться должен... :)
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: Вопросы по эсуд

Post by AndreyB »

andreika wrote:Предлагаю для UART сделать пока необходимый минимум
Патч хороший, но я пока не уверен, что этот код в таком виде нужен.

Сейчас мне реальнее кажется сделать вот так

Code: Select all

// todo: start using consoleSerialTxPin? Not sure
#ifndef EFI_CONSOLE_TX_PORT
#define EFI_CONSOLE_TX_PORT GPIOC
#endif
#ifndef EFI_CONSOLE_TX_PIN
#define EFI_CONSOLE_TX_PIN 10
#endif
// todo: start using consoleSerialRxPin? Not sure
#ifndef EFI_CONSOLE_RX_PORT
#define EFI_CONSOLE_RX_PORT GPIOC
#endif
#ifndef EFI_CONSOLE_RX_PIN
#define EFI_CONSOLE_RX_PIN 11
#endif
и начать компилировать, задавая личные значение из командной строки.

Т.е. ну вот есть у тебя другая плата с другими пинами, прошил ты прошивку. Как ты поменяешь настройки? Через внешний USB TTL временно на дефолтовых пинах?

С другой стороны, вреда огромного я тоже не вижу - так что давай сделаем.

Можно попросить рефаетиринг?
меня коробит i = 1; i<=6 - можно мы сделаем
enum uart_device_e
UART1 = 0,
UART2 = 1
и так далее

MAX_UART_INDEX = (int)UART6;

и будет делать
i = 0;i<=MAX_UART_INDEX

?
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: Вопросы по эсуд

Post by andreika »

russian wrote: Т.е. ну вот есть у тебя другая плата с другими пинами, прошил ты прошивку. Как ты поменяешь настройки? Через внешний USB TTL временно на дефолтовых пинах?
Поменяю очень просто - через engineType и файлы в config/engines/*:

Code: Select all

	engineConfiguration->binarySerialTxPin = GPIOC_10;
	engineConfiguration->binarySerialRxPin = GPIOC_11;
(Хотя логичнее было бы перенести их в boardConfiguration... Но это уже перфекционизм)
Т.е. пока у нас нет board HAL, мы всё задаём в config/engines/*. Пусть будет хотя бы такая возможность.
russian wrote: Можно попросить рефаетиринг?
enum uart_device_e
Да, конечно. Я выложил "минимальный" патч, без изысков. Но лучше сделать красивее.
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: Вопросы по эсуд

Post by andreika »

И ещё одна просьба:

Code: Select all

#ifndef DEFAULT_ENGINE_TYPE 
#define DEFAULT_ENGINE_TYPE CUSTOM_ENGINE
#endif
Тогда можно будет быстро и тупо задать -DDEFAULT_ENGINE_TYPE=ХХХ через Makefile...
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: Вопросы по эсуд

Post by AndreyB »

#ifndef DEFAULT_ENGINE_TYPE готово
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: Вопросы по эсуд

Post by puff »

О. Любопытно. То есть можно самому мейкфайл заготовить и с его помощью собирать обновленный код сразу со своим мотором? Еще бы знать, что этот мейкфайл не сломается с выходом нового кода..
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: Вопросы по эсуд

Post by andreika »

puff wrote:Еще бы знать, что этот мейкфайл не сломается с выходом нового кода..
Вся прелесть в том, что мейкфайл даже трогать не нужно! Достаточно вызвать его со своим параметром:

Code: Select all

make EXTRA_PARAMS='-DDEFAULT_ENGINE_TYPE=XXX'
Т.е. нужно создать свой .bat-файл по примеру clean_compile_two_versions.bat и всё! 8-)
russian wrote:#ifndef DEFAULT_ENGINE_TYPE готово
Спасибо! Надеюсь, и по UART тоже всё получится!
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: Вопросы по эсуд

Post by AndreyB »

puff wrote:О. Любопытно. То есть можно самому мейкфайл заготовить и с его помощью собирать обновленный код сразу со своим мотором?
Намного интереснее потенциал git'а - можно сделать свой форк, со своими публичными обновлениями - и накатывать основные изменения в свои изменения.
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: Вопросы по эсуд

Post by puff »

Это для andreika интереснее :-) я, увы, не умею свои обновления обновлять. Да и основная идея, кмк, сводится к тому, чтобы просто минимизировать число настроек.
Про бат файлы - не понимаю нужды в еще одной оболочке в своем случае. Какая разница, прописывать в мейкфайле или в ключе - для сборки под один отдельный мотор. Кстати, там просто указывается номер мотора, который в set engine type?

Sent from my XT1058 using Tapatalk
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: Вопросы по эсуд

Post by andreika »

russian wrote:С другой стороны, вреда огромного я тоже не вижу - так что давай сделаем.
Пока кипит работа над внедрением патча UART, ;) предлагаю также сделать следующее:
patch-custom-board-makefile.patch
(1.06 KiB) Downloaded 701 times
Мне кажется, такой вариант будет даже поинтереснее, чем пытаться всё перенести через DEFAULT_ENGINE_TYPE в engines/конфиги. Ведь можно внедрить свой кастом board.mk, который может:
- переназначить LDSCRIPT;
- с помощью BOARDINC перехватить все включения config/stm32f4ems/efifeatures.h на свой кастом efifeatures.h, и там, с помощью #undef+#define, изменить отдельные дефайны по своему усмотрению. В том числе, светодиоды и т.п. - и основной код не пострадает! :)

Но нужно ещё разобраться с:

Code: Select all

#define STM32F407xx
#define STM32F40_41xxx
Это добро сидит в файлах hw_layer/stm32f4/stm32f4xx_hal_flash*. Надо бы его вынести оттуда куда-то на уровень мейкфайла или board HAL (config/*.h)...
puff wrote:Это для andreika интереснее :-) я, увы, не умею свои обновления обновлять.
Вариант с постоянным автомерджем в свой форк лично для меня не такой интересный. Это может рассматриваться лишь как крайняя мера - ведь придётся каждый раз следить, не сломаются ли свои изменения при очередном коммите базовой прошивки. Наиболее интересный вариант - предлагать патчи и пулл реквесты в основной общий код, чтобы развивать проект для всех, а не только для себя. Ведь основной код и так уже довольно универсальный - остаётся лишь чуточку его улучшить.
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: Вопросы по эсуд

Post by AndreyB »

Красота!

А можно patch-custom-board-makefile.patch в виде PR на github? Чисто для отладки процесса.

svnversion.h скорее не надо, чем надо - оно при компиляции автоматически его пересоздаёт (правда не обновляет в репозитории - но это особо и не нужно)
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: Вопросы по эсуд

Post by andreika »

russian wrote:А можно patch-custom-board-makefile.patch в виде PR на github? Чисто для отладки процесса.
Окей, попробовал сделать... Только я не умею это делать быстро - только через fork + кучу команд... :(
russian wrote:svnversion.h скорее не надо, чем надо - оно при компиляции автоматически его пересоздаёт (правда не обновляет в репозитории - но это особо и не нужно)
Пардон, я сам не знаю, зачем оно туда добавилось - на всякий случай оставил, но теперь буду знать :lol:
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: Вопросы по эсуд

Post by AndreyB »

Merged.
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: Вопросы по эсуд

Post by andreika »

Спасибо!

Мне продолжать в том же духе - готовить сразу пулл-реквесты? :roll:
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: Вопросы по эсуд

Post by AndreyB »

Угу
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: Вопросы по эсуд

Post by andreika »

Создал крошечный pull-request... ;)
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: Вопросы по эсуд

Post by andreika »

(далее следуют просто размышления вслух, и не более...)

У меня в голове вертятся мысли по поводу flash memory map...
Image

Сейчас прошивка сидит в sector 0 и далее (0x08000000), а persistent-данные - в sector 11 (0x080E0000). Текущий размер этих данных - чуть меньше 16 кб (наверное, это связано со страницами TS?)... Так вот, получается, что для записи persistent-данных требуется стереть весь 11-й сектор, т.е. 128 кб. И время тратится на это > 1-2 секунд, согласно даташиту (tERASE128KB).
Но если бы persistent-данные сидели в начальных 16-кбайтных секторах, то время на стирание занимало бы всего 0.3 сек. Может быть, даже двигатель не успел бы заглохнуть...
Рассуждая так, мы получим следующий маппинг памяти:
1) Поскольку код начинает выполняться с 0-го сектора, то туда можно было бы засунуть наш простенький бутлоадер.
2) А 1-3 сектора отвести под persistent-данные (48 кбайт нам хватит? Если нет, то есть 4-й сектор, +64 кб).
3) А уже с 4-го/5-го сектора - пишем основной код прошивки...
При этом, получаем возможность реализации онлайн-обновления прошивки на лету без всяких фокусов с банками памяти и т.п.: бутлоадер обновляет прошивку (а себя не трогает), а прошивка - при необходимости - бутлоадер.
Кроме того, бутлоадеру можно будет дописывать разные опциональные фичи, например: сканировать карту памяти на предмет наличия файлов firmware_update.bin или persistent_config.bin и обновлять прошивку с карты памяти (А основная прошивка будет удалять эти файлы, если увидит). Это позволило бы в походных условиях восстановить слетевшую прошивку или неудачно записанный конфиг без помощи ноута, с резервной карты памяти...
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: Вопросы по эсуд

Post by AndreyB »

andreika wrote:а persistent-данные - в sector 11 (0x080E0000). Текущий размер этих данных - чуть меньше 16 кб (наверное, это связано со страницами TS?)...
нет, просто совпало. росло, росло и вот сейчас пока остановилось на 16376=16Kb-8b. В любой момент может перевалить за 16Kb.

Я ради снижения частоты несовместимых изменений всегда в конце выделяю этак 400 байт для последующих изменений. сейчас есть int[53] unused для будущих настроек, потом будем +400 байт.
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: Вопросы по эсуд

Post by andreika »

Как-то странно получается с ADC:
- с одной стороны у нас sensor.hwChannel, addChannel() и enableChannelAndPin() - всё гибко и красиво;
- с другой стороны, есть adcgrpcfgSlow и adcgrpcfg_fast, в которых жёстко прописаны все эти ADC_SAMPLING_SLOW и ADC_SAMPLING_FAST для конкретных (!) каналов...
Как оно уживается вместе?
На Frankenso, конечно, они совпадают, и ADC_SMPR2_SMP_AN0(ADC_SAMPLING_FAST) как раз подходит для назначенного MAP на AN0, но на других платах, на том же Франкенштейне (MAP = PA1 = ADC_IN1), оно уже будет не так красиво? Или я что-то пропустил?... :?
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: Вопросы по эсуд

Post by AndreyB »

andreika wrote:для конкретных (!) каналов...
обрати внимание на комментарий в коде todo: IS SOMETHING MISSING HERE?

это ты похоже нашёл такой bug/defect :)

по задумке должно было как выше

Code: Select all

/**
 * here we configure all possible channels for slow mode. Some channels would not actually
 * be used hopefully that's fine to configure all possible channels.
 */
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: Вопросы по эсуд

Post by andreika »

russian wrote:это ты похоже нашёл такой bug/defect :)
Спасибо за fix!
Плюс, я ещё маленький pull request выложил...
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: Вопросы по эсуд

Post by andreika »

Выложил ещё один pull request, для улучшения compatibility разных конфигураций.

Также очень прошу обновить эти файлы в ChibiOs:

Code: Select all

hal_lld.c 
hal_lld.h 
stm32_registry.h
На более новые, от свежей версии:
ChibiOS3_newest_hal_files_for_469.zip
(17 KiB) Downloaded 369 times
Они полностью совместимы с текущей версией ChibiOs в rusEFI (3.x), компилируются без ошибок, и, по идее, не должны ничего сломать. Даже наоборот, там есть парочка полезных правок и добавлений (для более свежих версий процов STM32F4 ;) ).
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: Вопросы по эсуд

Post by AndreyB »

Более правильно всё-таки правильно обновить весь наш ChibiOS, а не файлы подкладывать :(
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: Вопросы по эсуд

Post by andreika »

russian wrote:Более правильно всё-таки правильно обновить весь наш ChibiOS, а не файлы подкладывать :(
Да, я понимаю, сам не люблю "костыли"... Но я не владею ChibiOS настолько, чтобы вслепую, без проверки на железе, проапгрейдить его. Я так понимаю, что если бы это было просто, то вы с fpoussin сразу бы перескочили на последнюю версию?.. :?
Я, когда свою плату получу и соберу, буду пока запускаться на том, что есть, с костылями. Базовые файлы конфига для Прометея я уже подготовил.
А потом, если заведётся, попробую проапдейтить OS уже нормально (если это будет актуально)...
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: Вопросы по эсуд

Post by AndreyB »

andreika wrote:Я так понимаю, что если бы это было просто, то вы с fpoussin сразу бы перескочили на последнюю версию?
Текущая версия была последней в тот момент, а сейчас она уже не последняя. Но т.к. ChibiOS сейчас идёт модным модулем, утверждается что можно и обновить минорно очень просто. Попинай пожалуйста @, это бы мне помогло бы :)
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