Вопросы по эсуд
- Dron_Gus
- contributor
- Posts: 459
- Joined: Wed Nov 13, 2013 1:11 pm
- Location: S-Pb
- Github Username: dron0gus
Re: Вопросы по эсуд
Мне кажется это чем-то напоминает преждевременную оптимизацию. Только наоборот, преждевременное усложнение. В чем проблема иметь несколько xxx-board.c файлов. С платформо-зависимой инициализацией. И несколько таргетов для сборки.
А то так и до прикручивания Device Tree недалеко.
А то так и до прикручивания Device Tree недалеко.
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
+1Dron_Gus wrote:Мне кажется это чем-то напоминает преждевременную оптимизацию. Только наоборот, преждевременное усложнение. В чем проблема иметь несколько xxx-board.c файлов. С платформо-зависимой инициализацией. И несколько таргетов для сборки.
А в свете чудес 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Вопросы по эсуд
Проблема в том, что нет этих файлов xxx-board.c. Я уже поднимал этот вопрос (почитайте эту ветку чуть ранее), мол, давайте выделим HAL-конфигурации board отдельно от конфигураций машин. Т.е. я вначале предложил этот более простой путь. Но Андрей тогда ответил, что это это сейчас не самое важное, и что непонятно, зачем такая гибкость на уровне исходников. Тогда я предложил хотя бы на уровне исходного кода убрать жёсткие привязки к железу - чтобы можно было потом легко создать конфиги для новых плат. Но Андрей сразу поставил вопрос ребром: мол, а как быть с инициализацией "голой" платы? Поэтому я вынужден был предлагать более сложные варианты, когда не нужно делать отдельных конфигураций для плат, а есть универсальная конфигурация, с автоопределением... Никто не хочет специально что-то усложнять. Лично моя цель - попытаться хоть как-то решить проблему платформо-зависимости - так, чтобы это устроило Андрея...Dron_Gus wrote:В чем проблема иметь несколько xxx-board.c файлов. С платформо-зависимой инициализацией. И несколько таргетов для сборки.
Универсальная конфигурация хороша тем, что она не ломает существующие юзер-настройки и нет риска сломать уже настроенный конфиг для какой-то машины. Но она сложнее, да.
Отдельные конфиги хороши тем, что они проще - это, по сути, просто рефакторинг уже имеющегося кода. Но мне сложнее сделать рефакторинг из-за ещё недостаточного знания структуры кода, и, получается, эта задача ложилась бы на плечи Андрея, что не хотелось бы... Вот такие проблемы!
P.S. Выбор таргета для сборки всё равно понадобится независимо от проблемы пинаутов - при [скором] появлении плат на других MCU, т.к. в прошивке сейчас прописан только STM32F407.
- Dron_Gus
- contributor
- Posts: 459
- Joined: Wed Nov 13, 2013 1:11 pm
- Location: S-Pb
- Github Username: dron0gus
Re: Вопросы по эсуд
Т.к. я пока исходники видет только через веб-морду гита, советовать больше ничего не буду.
З.Ы. Тюнер Студия умеет запрашивать у железяки доступные пины для функции или только берет из ini файла?
З.З.Ы. Три Андрея в треде.
З.Ы. Тюнер Студия умеет запрашивать у железяки доступные пины для функции или только берет из ini файла?
З.З.Ы. Три Андрея в треде.
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
Предлагаю проблемы решать по мере их поступления. Где твой топик про твою плату, в котором ты напишешь конкретный твой чип?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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Вопросы по эсуд
Предлагаю для UART сделать пока необходимый минимум:
Не знаю, рабочий патч или нет, но компилиться должен... - AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
Патч хороший, но я пока не уверен, что этот код в таком виде нужен.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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Вопросы по эсуд
Поменяю очень просто - через engineType и файлы в config/engines/*:russian wrote: Т.е. ну вот есть у тебя другая плата с другими пинами, прошил ты прошивку. Как ты поменяешь настройки? Через внешний USB TTL временно на дефолтовых пинах?
Code: Select all
engineConfiguration->binarySerialTxPin = GPIOC_10;
engineConfiguration->binarySerialRxPin = GPIOC_11;
Т.е. пока у нас нет board HAL, мы всё задаём в config/engines/*. Пусть будет хотя бы такая возможность.
Да, конечно. Я выложил "минимальный" патч, без изысков. Но лучше сделать красивее.russian wrote: Можно попросить рефаетиринг?
enum uart_device_e
Re: Вопросы по эсуд
И ещё одна просьба:
Тогда можно будет быстро и тупо задать -DDEFAULT_ENGINE_TYPE=ХХХ через Makefile...
Code: Select all
#ifndef DEFAULT_ENGINE_TYPE
#define DEFAULT_ENGINE_TYPE CUSTOM_ENGINE
#endif
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
#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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Вопросы по эсуд
О. Любопытно. То есть можно самому мейкфайл заготовить и с его помощью собирать обновленный код сразу со своим мотором? Еще бы знать, что этот мейкфайл не сломается с выходом нового кода..
Re: Вопросы по эсуд
Вся прелесть в том, что мейкфайл даже трогать не нужно! Достаточно вызвать его со своим параметром:puff wrote:Еще бы знать, что этот мейкфайл не сломается с выходом нового кода..
Code: Select all
make EXTRA_PARAMS='-DDEFAULT_ENGINE_TYPE=XXX'
Спасибо! Надеюсь, и по UART тоже всё получится!russian wrote:#ifndef DEFAULT_ENGINE_TYPE готово
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
Намного интереснее потенциал git'а - можно сделать свой форк, со своими публичными обновлениями - и накатывать основные изменения в свои изменения.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: Вопросы по эсуд
Это для andreika интереснее я, увы, не умею свои обновления обновлять. Да и основная идея, кмк, сводится к тому, чтобы просто минимизировать число настроек.
Про бат файлы - не понимаю нужды в еще одной оболочке в своем случае. Какая разница, прописывать в мейкфайле или в ключе - для сборки под один отдельный мотор. Кстати, там просто указывается номер мотора, который в set engine type?
Sent from my XT1058 using Tapatalk
Про бат файлы - не понимаю нужды в еще одной оболочке в своем случае. Какая разница, прописывать в мейкфайле или в ключе - для сборки под один отдельный мотор. Кстати, там просто указывается номер мотора, который в set engine type?
Sent from my XT1058 using Tapatalk
Re: Вопросы по эсуд
Пока кипит работа над внедрением патча UART, предлагаю также сделать следующее:russian wrote:С другой стороны, вреда огромного я тоже не вижу - так что давай сделаем.
Мне кажется, такой вариант будет даже поинтереснее, чем пытаться всё перенести через DEFAULT_ENGINE_TYPE в engines/конфиги. Ведь можно внедрить свой кастом board.mk, который может:
- переназначить LDSCRIPT;
- с помощью BOARDINC перехватить все включения config/stm32f4ems/efifeatures.h на свой кастом efifeatures.h, и там, с помощью #undef+#define, изменить отдельные дефайны по своему усмотрению. В том числе, светодиоды и т.п. - и основной код не пострадает!
Но нужно ещё разобраться с:
Code: Select all
#define STM32F407xx
#define STM32F40_41xxx
Вариант с постоянным автомерджем в свой форк лично для меня не такой интересный. Это может рассматриваться лишь как крайняя мера - ведь придётся каждый раз следить, не сломаются ли свои изменения при очередном коммите базовой прошивки. Наиболее интересный вариант - предлагать патчи и пулл реквесты в основной общий код, чтобы развивать проект для всех, а не только для себя. Ведь основной код и так уже довольно универсальный - остаётся лишь чуточку его улучшить.puff wrote:Это для andreika интереснее я, увы, не умею свои обновления обновлять.
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
Красота!
А можно patch-custom-board-makefile.patch в виде PR на github? Чисто для отладки процесса.
svnversion.h скорее не надо, чем надо - оно при компиляции автоматически его пересоздаёт (правда не обновляет в репозитории - но это особо и не нужно)
А можно 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Вопросы по эсуд
Окей, попробовал сделать... Только я не умею это делать быстро - только через fork + кучу команд...russian wrote:А можно patch-custom-board-makefile.patch в виде PR на github? Чисто для отладки процесса.
Пардон, я сам не знаю, зачем оно туда добавилось - на всякий случай оставил, но теперь буду знатьrussian wrote:svnversion.h скорее не надо, чем надо - оно при компиляции автоматически его пересоздаёт (правда не обновляет в репозитории - но это особо и не нужно)
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Вопросы по эсуд
Спасибо!
Мне продолжать в том же духе - готовить сразу пулл-реквесты?
Мне продолжать в том же духе - готовить сразу пулл-реквесты?
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
Угу
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: Вопросы по эсуд
Создал крошечный pull-request...
Re: Вопросы по эсуд
(далее следуют просто размышления вслух, и не более...)
У меня в голове вертятся мысли по поводу flash memory map...
Сейчас прошивка сидит в 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 и обновлять прошивку с карты памяти (А основная прошивка будет удалять эти файлы, если увидит). Это позволило бы в походных условиях восстановить слетевшую прошивку или неудачно записанный конфиг без помощи ноута, с резервной карты памяти...
У меня в голове вертятся мысли по поводу flash memory map...
Сейчас прошивка сидит в 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 и обновлять прошивку с карты памяти (А основная прошивка будет удалять эти файлы, если увидит). Это позволило бы в походных условиях восстановить слетевшую прошивку или неудачно записанный конфиг без помощи ноута, с резервной карты памяти...
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
нет, просто совпало. росло, росло и вот сейчас пока остановилось на 16376=16Kb-8b. В любой момент может перевалить за 16Kb.andreika wrote:а persistent-данные - в sector 11 (0x080E0000). Текущий размер этих данных - чуть меньше 16 кб (наверное, это связано со страницами TS?)...
Я ради снижения частоты несовместимых изменений всегда в конце выделяю этак 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Вопросы по эсуд
Как-то странно получается с 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), оно уже будет не так красиво? Или я что-то пропустил?...
- с одной стороны у нас 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), оно уже будет не так красиво? Или я что-то пропустил?...
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
обрати внимание на комментарий в коде todo: IS SOMETHING MISSING HERE?andreika wrote:для конкретных (!) каналов...
это ты похоже нашёл такой 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Вопросы по эсуд
Спасибо за fix!russian wrote:это ты похоже нашёл такой bug/defect
Плюс, я ещё маленький pull request выложил...
Re: Вопросы по эсуд
Выложил ещё один pull request, для улучшения compatibility разных конфигураций.
Также очень прошу обновить эти файлы в ChibiOs:
На более новые, от свежей версии:
Они полностью совместимы с текущей версией ChibiOs в rusEFI (3.x), компилируются без ошибок, и, по идее, не должны ничего сломать. Даже наоборот, там есть парочка полезных правок и добавлений (для более свежих версий процов STM32F4 ).
Также очень прошу обновить эти файлы в ChibiOs:
Code: Select all
hal_lld.c
hal_lld.h
stm32_registry.h
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
Более правильно всё-таки правильно обновить весь наш 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Вопросы по эсуд
Да, я понимаю, сам не люблю "костыли"... Но я не владею ChibiOS настолько, чтобы вслепую, без проверки на железе, проапгрейдить его. Я так понимаю, что если бы это было просто, то вы с fpoussin сразу бы перескочили на последнюю версию?..russian wrote:Более правильно всё-таки правильно обновить весь наш ChibiOS, а не файлы подкладывать
Я, когда свою плату получу и соберу, буду пока запускаться на том, что есть, с костылями. Базовые файлы конфига для Прометея я уже подготовил.
А потом, если заведётся, попробую проапдейтить OS уже нормально (если это будет актуально)...
- AndreyB
- Site Admin
- Posts: 14358
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Вопросы по эсуд
Текущая версия была последней в тот момент, а сейчас она уже не последняя. Но т.к. ChibiOS сейчас идёт модным модулем, утверждается что можно и обновить минорно очень просто. Попинай пожалуйста @, это бы мне помогло быandreika wrote:Я так понимаю, что если бы это было просто, то вы с fpoussin сразу бы перескочили на последнюю версию?
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