Page 2 of 5
Re: Вопросы по эсуд
Posted: Wed Apr 12, 2017 8:33 pm
by Dron_Gus
Мне кажется это чем-то напоминает преждевременную оптимизацию. Только наоборот, преждевременное усложнение. В чем проблема иметь несколько xxx-board.c файлов. С платформо-зависимой инициализацией. И несколько таргетов для сборки.
А то так и до прикручивания Device Tree недалеко.
Re: Вопросы по эсуд
Posted: Wed Apr 12, 2017 10:04 pm
by AndreyB
Dron_Gus wrote:Мне кажется это чем-то напоминает преждевременную оптимизацию. Только наоборот, преждевременное усложнение. В чем проблема иметь несколько xxx-board.c файлов. С платформо-зависимой инициализацией. И несколько таргетов для сборки.
+1
А в свете чудес github'а всё это особенно несложно.
Re: Вопросы по эсуд
Posted: Thu Apr 13, 2017 7:39 am
by andreika
Dron_Gus wrote:В чем проблема иметь несколько xxx-board.c файлов. С платформо-зависимой инициализацией. И несколько таргетов для сборки.
Проблема в том, что нет этих файлов xxx-board.c. Я уже поднимал этот вопрос (почитайте эту ветку чуть ранее), мол, давайте выделим HAL-конфигурации board отдельно от конфигураций машин. Т.е. я вначале предложил этот более простой путь. Но Андрей тогда ответил, что это это сейчас не самое важное, и что непонятно, зачем такая гибкость на уровне исходников. Тогда я предложил хотя бы на уровне исходного кода убрать жёсткие привязки к железу - чтобы можно было потом легко создать конфиги для новых плат. Но Андрей сразу поставил вопрос ребром: мол, а как быть с инициализацией "голой" платы? Поэтому я вынужден был предлагать более сложные варианты, когда не нужно делать отдельных конфигураций для плат, а есть универсальная конфигурация, с автоопределением... Никто не хочет специально что-то усложнять. Лично моя цель - попытаться хоть как-то решить проблему платформо-зависимости - так, чтобы это устроило Андрея...
Универсальная конфигурация хороша тем, что она не ломает существующие юзер-настройки и нет риска сломать уже настроенный конфиг для какой-то машины. Но она сложнее, да.
Отдельные конфиги хороши тем, что они проще - это, по сути, просто рефакторинг уже имеющегося кода. Но мне сложнее сделать рефакторинг из-за ещё недостаточного знания структуры кода, и, получается, эта задача ложилась бы на плечи Андрея, что не хотелось бы... Вот такие проблемы!
P.S. Выбор таргета для сборки всё равно понадобится независимо от проблемы пинаутов - при [скором] появлении плат на других MCU, т.к. в прошивке сейчас прописан только STM32F407.
Re: Вопросы по эсуд
Posted: Thu Apr 13, 2017 9:55 am
by Dron_Gus
Т.к. я пока исходники видет только через веб-морду гита, советовать больше ничего не буду.
З.Ы. Тюнер Студия умеет запрашивать у железяки доступные пины для функции или только берет из ini файла?
З.З.Ы. Три Андрея в треде.
Re: Вопросы по эсуд
Posted: Thu Apr 13, 2017 11:50 am
by AndreyB
andreika wrote:
Проблема в том, что нет этих файлов xxx-board.c... Лично моя цель - попытаться хоть как-то решить проблему платформо-зависимости - так, чтобы это устроило Андрея...
P.S. Выбор таргета для сборки всё равно понадобится независимо от проблемы пинаутов - при [скором] появлении плат на других MCU, т.к. в прошивке сейчас прописан только STM32F407.
Предлагаю проблемы решать по мере их поступления. Где твой топик про твою плату, в котором ты напишешь конкретный твой чип?
Re: Вопросы по эсуд
Posted: Sun Apr 16, 2017 4:30 pm
by andreika
Предлагаю для UART сделать пока необходимый минимум:
Не знаю, рабочий патч или нет, но компилиться должен...
Re: Вопросы по эсуд
Posted: Sun Apr 16, 2017 4:48 pm
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
?
Re: Вопросы по эсуд
Posted: Sun Apr 16, 2017 5:07 pm
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
Да, конечно. Я выложил "минимальный" патч, без изысков. Но лучше сделать красивее.
Re: Вопросы по эсуд
Posted: Sun Apr 16, 2017 5:10 pm
by andreika
И ещё одна просьба:
Code: Select all
#ifndef DEFAULT_ENGINE_TYPE
#define DEFAULT_ENGINE_TYPE CUSTOM_ENGINE
#endif
Тогда можно будет быстро и тупо задать -DDEFAULT_ENGINE_TYPE=ХХХ через Makefile...
Re: Вопросы по эсуд
Posted: Sun Apr 16, 2017 5:54 pm
by AndreyB
#ifndef DEFAULT_ENGINE_TYPE готово
Re: Вопросы по эсуд
Posted: Sun Apr 16, 2017 7:38 pm
by puff
О. Любопытно. То есть можно самому мейкфайл заготовить и с его помощью собирать обновленный код сразу со своим мотором? Еще бы знать, что этот мейкфайл не сломается с выходом нового кода..
Re: Вопросы по эсуд
Posted: Sun Apr 16, 2017 8:14 pm
by andreika
puff wrote:Еще бы знать, что этот мейкфайл не сломается с выходом нового кода..
Вся прелесть в том, что мейкфайл даже трогать не нужно! Достаточно вызвать его со своим параметром:
Code: Select all
make EXTRA_PARAMS='-DDEFAULT_ENGINE_TYPE=XXX'
Т.е. нужно создать свой .bat-файл по примеру clean_compile_two_versions.bat и всё!
russian wrote:#ifndef DEFAULT_ENGINE_TYPE готово
Спасибо! Надеюсь, и по UART тоже всё получится!
Re: Вопросы по эсуд
Posted: Sun Apr 16, 2017 8:33 pm
by AndreyB
puff wrote:О. Любопытно. То есть можно самому мейкфайл заготовить и с его помощью собирать обновленный код сразу со своим мотором?
Намного интереснее потенциал git'а - можно сделать свой форк, со своими публичными обновлениями - и накатывать основные изменения в свои изменения.
Re: Вопросы по эсуд
Posted: Sun Apr 16, 2017 9:00 pm
by puff
Это для andreika интереснее
я, увы, не умею свои обновления обновлять. Да и основная идея, кмк, сводится к тому, чтобы просто минимизировать число настроек.
Про бат файлы - не понимаю нужды в еще одной оболочке в своем случае. Какая разница, прописывать в мейкфайле или в ключе - для сборки под один отдельный мотор. Кстати, там просто указывается номер мотора, который в set engine type?
Sent from my XT1058 using Tapatalk
Re: Вопросы по эсуд
Posted: Mon Apr 17, 2017 2:22 pm
by andreika
russian wrote:С другой стороны, вреда огромного я тоже не вижу - так что давай сделаем.
Пока кипит работа над внедрением патча UART,
предлагаю также сделать следующее:
Мне кажется, такой вариант будет даже поинтереснее, чем пытаться всё перенести через 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 интереснее
я, увы, не умею свои обновления обновлять.
Вариант с постоянным автомерджем в свой форк лично для меня не такой интересный. Это может рассматриваться лишь как крайняя мера - ведь придётся каждый раз следить, не сломаются ли свои изменения при очередном коммите базовой прошивки. Наиболее интересный вариант - предлагать патчи и пулл реквесты в основной общий код, чтобы развивать проект для всех, а не только для себя. Ведь основной код и так уже довольно универсальный - остаётся лишь чуточку его улучшить.
Re: Вопросы по эсуд
Posted: Mon Apr 17, 2017 2:25 pm
by AndreyB
Красота!
А можно patch-custom-board-makefile.patch в виде PR на github? Чисто для отладки процесса.
svnversion.h скорее не надо, чем надо - оно при компиляции автоматически его пересоздаёт (правда не обновляет в репозитории - но это особо и не нужно)
Re: Вопросы по эсуд
Posted: Mon Apr 17, 2017 3:26 pm
by andreika
russian wrote:А можно patch-custom-board-makefile.patch в виде PR на github? Чисто для отладки процесса.
Окей, попробовал сделать... Только я не умею это делать быстро - только через fork + кучу команд...
russian wrote:svnversion.h скорее не надо, чем надо - оно при компиляции автоматически его пересоздаёт (правда не обновляет в репозитории - но это особо и не нужно)
Пардон, я сам не знаю, зачем оно туда добавилось - на всякий случай оставил, но теперь буду знать
Re: Вопросы по эсуд
Posted: Mon Apr 17, 2017 3:30 pm
by AndreyB
Merged.
Re: Вопросы по эсуд
Posted: Mon Apr 17, 2017 5:17 pm
by andreika
Спасибо!
Мне продолжать в том же духе - готовить сразу пулл-реквесты?
Re: Вопросы по эсуд
Posted: Mon Apr 17, 2017 5:33 pm
by AndreyB
Угу
Re: Вопросы по эсуд
Posted: Fri Apr 21, 2017 10:14 pm
by andreika
Создал крошечный pull-request...
Re: Вопросы по эсуд
Posted: Sat Apr 22, 2017 12:40 am
by andreika
(далее следуют просто размышления вслух, и не более...)
У меня в голове вертятся мысли по поводу 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 и обновлять прошивку с карты памяти (А основная прошивка будет удалять эти файлы, если увидит). Это позволило бы в походных условиях восстановить слетевшую прошивку или неудачно записанный конфиг без помощи ноута, с резервной карты памяти...
Re: Вопросы по эсуд
Posted: Sat Apr 22, 2017 12:46 am
by AndreyB
andreika wrote:а persistent-данные - в sector 11 (0x080E0000). Текущий размер этих данных - чуть меньше 16 кб (наверное, это связано со страницами TS?)...
нет, просто совпало. росло, росло и вот сейчас пока остановилось на 16376=16Kb-8b. В любой момент может перевалить за 16Kb.
Я ради снижения частоты несовместимых изменений всегда в конце выделяю этак 400 байт для последующих изменений. сейчас есть int[53] unused для будущих настроек, потом будем +400 байт.
Re: Вопросы по эсуд
Posted: Mon May 01, 2017 11:09 am
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), оно уже будет не так красиво? Или я что-то пропустил?...
Re: Вопросы по эсуд
Posted: Mon May 01, 2017 11:53 am
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.
*/
Re: Вопросы по эсуд
Posted: Mon May 01, 2017 7:28 pm
by andreika
russian wrote:это ты похоже нашёл такой bug/defect
Спасибо за fix!
Плюс, я ещё маленький pull request выложил...
Re: Вопросы по эсуд
Posted: Tue May 02, 2017 5:49 pm
by andreika
Выложил ещё один pull request, для улучшения compatibility разных конфигураций.
Также очень прошу обновить эти файлы в ChibiOs:
Code: Select all
hal_lld.c
hal_lld.h
stm32_registry.h
На более новые, от свежей версии:
Они полностью совместимы с текущей версией ChibiOs в rusEFI (3.x), компилируются без ошибок, и, по идее, не должны ничего сломать. Даже наоборот, там есть парочка полезных правок и добавлений (для более свежих версий процов STM32F4
).
Re: Вопросы по эсуд
Posted: Tue May 02, 2017 5:55 pm
by AndreyB
Более правильно всё-таки правильно обновить весь наш ChibiOS, а не файлы подкладывать
Re: Вопросы по эсуд
Posted: Tue May 02, 2017 6:53 pm
by andreika
russian wrote:Более правильно всё-таки правильно обновить весь наш ChibiOS, а не файлы подкладывать
Да, я понимаю, сам не люблю "костыли"... Но я не владею ChibiOS настолько, чтобы вслепую, без проверки на железе, проапгрейдить его. Я так понимаю, что если бы это было просто, то вы с fpoussin сразу бы перескочили на последнюю версию?..
Я, когда свою плату получу и соберу, буду пока запускаться на том, что есть, с костылями. Базовые файлы конфига для Прометея я уже подготовил.
А потом, если заведётся, попробую проапдейтить OS уже нормально (если это будет актуально)...
Re: Вопросы по эсуд
Posted: Tue May 02, 2017 6:58 pm
by AndreyB
andreika wrote:Я так понимаю, что если бы это было просто, то вы с fpoussin сразу бы перескочили на последнюю версию?
Текущая версия была последней в тот момент, а сейчас она уже не последняя. Но т.к. ChibiOS сейчас идёт модным модулем, утверждается что можно и обновить минорно очень просто. Попинай пожалуйста
@, это бы мне помогло бы