Pull to refresh
4
0

Embedded programmer

Send message

Не скажу за товарища @HEXFFFFFFFF, но у вас КРАЙНЕ мало деталей. Статью можно было бы вообще сократить до "платёжные карты - это кусочки пластика, и когда релокант Вася прикладывает такой кусочек к терминалу, терминал бибикает, и бармен Гиви поит его вкусным кофеем", ничего б не поменялось.

Хорошая техническая статья должна быть с деталями и отсылками на какие-то дополнительные материалы, а не вот это вот всё.

Минус не ставил, если вам это важно.

Потыкал godbolt. gcc-arm заменяет N / 2 на сдвиг при любом уровне оптимизации и никогда НЕ заменяет N * 0.5 (что, в принципе, логично). Зато умеет менять N / 2.0f на N * 0.5f при -O1 и выше.

ошибка реализации библиотечной функции в arm_math.h из CMSIS, revision: v1.4.4

Справедливости ради, ARM поправил это место:
https://github.com/ARM-software/CMSIS-DSP/blob/80bf36c676570fdc078a34dd72aeeb1ecdf7a8ad/Include/dsp/controller_functions.h#L735-L746

Когда именно, искать лень - ваша CMSIS-DSP была выпущена, если не ошибаюсь, в 2015 году.

На них можно, хотя мы вроде бы не о них.

Извините, что я очень душный, но на первой же фоточке в статье отчётливо видно слово HYBRID.

Да, тойота давным-давно распространила технологию от Приуса практически на весь свой модельный ряд.

Это про инфракрасный диапазон. Решения для радиодиапазона есть у TI, у Nordic есть измерение угла (можно использовать несколько приёмников и делать триангуляцию). Всё это сравнительно недорого.

Но тут две проблемы - потребление во-первых (у нас ключ от авто, который заряжать каждый день не принято) и легаси во-вторых (переделать ВСЁ не так и просто...).

1) фары, дворники, магнитола, etc. (комфорт)

Как ваш внутренний параноик рассматривает выключение фар с одновременным включением омывателя и ГРОМКОГО звука в магнитоле "на скорости в 150 км/ч" ?

Убить человеков можно кода проще и надёжнее, без жучков в фарах, тут рассматривается менее наказуемое деяние - похищение авто.

Это быстрое и грязное решение можно победить, модифицировав CAN Injector (мы не будем раскрывать, как это сделать). Но ужасно примитивный способ работы CAN Injector даёт нам понять, что это займёт приличное время.

Блокировка не всего трафика, а только определённых сообщений была сделана ещё пару лет назад инженерами Старлайна (и позднее повторена инженерами другой конторы). Ничего суперсложного там нет, обычный STM32 справляется с большим запасом.

ECU не доверяет автоматически сообщениям от других ECU, а требует доказательств, что они подлинные

Послушать бы настоящих специалистов, но мне почему-то кажется, что сообщения блока Smart Key уже имеют подпись. Она короткая, один байт, но она там есть. Некая реализация диалога там тоже есть - при получении неверного пакета блок Body выдаёт новый пакет с солью (?), после которого предыдущие пакеты становятся недействительными.
Какая-то мутная история, надо сказать (особенно с учётом того, что проверял он всё вот это на столе, найти реальную машину у него "не получилось").

быстрая разработка, шикарная работа со строками

Вы плюсы с питоном не путаете? :-)

Плюсовый компилятор больнее бьёт по рукам за неправильное использование типов, сам синтаксис заставляет выстраивать хоть какую-то иерархию (методы внутри класса, а не просто горсть функций с именами от генератора случайных слов) и т.д. Ну а если чел писал как ему удобно не включая мозг - так это не язык виноват...

Мне вот последнее время платят деньги за подпиливание мелких фишек в древнем софте. Один - на сях, второй - на плюсах. И вот плюсовый на порядок лучше структурирован.

Как вы видите такую новость? "Хардварный скрипт-кидди из г-на и палок (общая стоимость комплектующих - $2) собрал фиговину, которая умеет переключать древние светофоры". Так корову не продашь...

Ещё плюс, что новых паспортов можно официально иметь два. Один, например, отдать на "долгую" визу, по второму - ездить. "Старый" паспорт можно иметь только один.

Так-то лишняя тысяча рублей - не самое страшное...

Лет 15 назад в МГТУ им Н.Э.Баумана (ордена Ленина, ордена Трудового Красного ...) бОльшую часть диплома можно было написать с использованием ксерокса. Сам видел, как огромные куски тупо копировались из работ предшественников (да что уж, у меня самого разделы типа "экономика", "охрана труда" были не особо оригинальные). Не скажу за всех, но на не топовых кафедрах бардак таки наблюдался...

Что-то тут не сходится. Алюминиевый ключ плохо работает в качестве магнитопровода. Или там тоже стальные штырьки были, как в пластиковом оригинале?

За третью. Сигнал называется "MUTE_BUTTON".

И на вопрос ответьте, пожалуйста, специалист по дребезгам вы наш.

Честно говоря, у меня есть сомнения, что эта работа будет полезна. Купить китайский ст-линк на пару порядков проще (и минимум на порядок дешевле) чем этот ЭБУ. Ну да ладно, раз уж начал...

Вход в загрузчик - по сигналу на ноге PD5. Что это такое - понятия не имею (схемы на гитхабе всё ещё нет, или я ищу плохо?).

Интерфейс - KWP2000, USART1, скорость 10400.

Загрузчик умеет прошивать данные в область обновления (начиная с 0x080c0000), и автоматически, при наличии корректного заголовка в этой области, переливает обновление по адресу 0x08010000.

Микро-сведения о KWP2000:

Заголовок - 3 байта: 0x80+dataLen, target, source (target/source загрузчик не проверяет)

Данные (dataLen байт от 0 до 63 включительно)

Контрольная сумма (просто сумма всех байт, включая весь заголовок)

Полезные запросы (передаются в области данных):

0x1A,0x94 - read ECU id, должно вернуть строку "SW 503 r.02"

0x11,0x01 - перезагрузка

0x31,0x02 - очистка области обновления

0x34, <3 байта> - задать смещение в области обновления

0x36, <N байт> - записать данные в область обновления

0x37, <4 байта> - закончить запись в область обновления. В данных - контрольная сумма образа обновления. CRC32 в формате STM32 (с "перевёрнутым" порядком байт)

Всё вышеизложенное является чистой теорией (железки у меня нет, желания обладать этим сокровищем тоже немного) и содержит множество ошибок и неточностей.

Не думаю, что надо объяснять разницу "у меня всё работает" и "я сделал правильно".

Погрешность RC-генератора "на столе" (при комнатной температуре) что у STM, что у APM - +/- 1%. CAN требует 0.5% для скоростей выше 125кбит/с. При некотором везении - взлетит.

Но с температурной зависимостью у RC-генераторов всё плохо - STM обещает -8 .. +4.5%, Geehy -2..+4%. Т.е. диагностику "в полях" можно забыть.

Ну раз вы здесь, скажите, кто вас научил фигачить в прод код из-под кубо-хала?

Вот эта функция (название моё, естественно) вызывается примерно из каждого драйвера:

void Boot::AssertFailed(void)

{
disableIRQinterrupts();
do {} while( true );

}

Загрузчик вачдогом пользоваться не умеет совсем (в основной прошивке какие-то отсылки есть. Не разбирался, насколько оно работает). Не, я понимаю, что владелец буханки не сахарный, сбросить питание всего этого поделия ему раз плюнуть. Но хоть чуть-чуть то надо голову применять, а?.. Люди ж смотрят...

Там что-то подозрительно похожее KWP2000, на первом USART'е. Я тут чуток потыкал в этот бинарник...

Ну и да, кан там в принципе неработоспособен ввиду отсутствия кварца на плате.

сюда очень подходит фраза "мы всерьёз ещё не начинали" одного бессменного лидера

Это, простите, что за IAR такой? Все более-менее распространённые (ARM, RISC-V, Renesas, ... ) умеют и C++17, и С99.
Там, правда, есть всякие полузаброшенные ветки типа STM8 и 8051, я не помню, какой стандарт они умеют (но с высокой вероятностью, C99 умеют).

Вот эти треки, например, записаны на GPSmap 62s. Лыжные прогулки - с прибором во внутреннем кармане (обзор неба так себе), вело - с прибором на руле. Большинство обработаны в QLandKarte - вырезаны начало/конец, "звёздочки" на местах стоянок.

Но данных отдельно от спутников / отдельно от барометра там нет, просто поле высоты. Для научных целей я разглядывал два трека, снятых двумя почти одинаковыми гарминами, с разницей в несколько минут. Но под рукой таких треков нет.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity