Crc32 не совпадает старлайн

Crc32 не совпадает старлайн

Все знают, что в STM32F1xx, STM32F2xx, STM32F4xx есть аппаратный блок CRC32 с полиномом 0x04C11DB7.
И он, в общем-то, работает. Но только контрольная сумма почему-то не совпадает с таковой, рассчитанной софтварно.
В гугле обычно 2 типа вопросов:

  1. Как хардварно посчитать на STM32 побайтовую CRC
  2. Как посчитать софтово CRC так, чтоб она совпала с хардовой на STM32

Причём, на первый вопрос ответ везде отрицательный. Так ли это? Попробуем разобраться.

Софтварно CRC32 обычно считается побайтово и (как в эзернете) — младшим битом вперёд, сдвиг LSFR — вправо, в сторону младшего бита, поэтому используется реверсированный полином 0xEDB88320.
Регистр данных же в CRC блоке STM32 — 32х-битный и сдвигается в сторону старшего бита.
Чтоб понять, почему так, немного иллюстрации:

  • Во-первых, CRC — побитовая функция. параллельный подсчёт CRC — плюшки из следствий математики двоичных полиномов.
  • порядок загрузки бит в LSFR не должен нарушаться в зависимости от разрядности и остроконечности архитектуры

Смотрим на рисунок: все биты поступают по порядку, цветами я пометил биты, которые соответствуют друг другу для прямого и зеркального полиномов, нумерация байтов совпадает со смещением в памяти.
Т.е., CRC32 на STM32 можно посчитать так же, как и принято в ethernet. Для этого надо реверсировать входные слова и реверсировать в итоге контрольную сумму. Это работает только для длины, кратной 4.
Сперва совтварная реализация.
Инициализируем таблицы остатков для быстрого вычисления CRC:

Побайтовое вычисление «нормальной CRC»:

Вычисление CRC как на CRC блоке STM32:

Тут я применил htonl чтоб байты в слове были в определённом порядке независимо от LE/BE: сначала в LSFR заправляется байт, который лежит в памяти по смещению 3 (как на рисунке). Ещё, остаток сообщения, не влезающий в 4х-байтовое слово дополняется нулями справа и CRC досчитвается дальше.
Можно писать конструкцию типа такой (вычислять CRC кусками):

Вот то, что получается:
crc32_byte(«123456789») = CBF43926
crc32_stm32(«123456789») = 500E6FA8
crc32_byte(«12345678») = 9AE0DAAF
crc32_stm32(«12345678») = 0103AB06

Теперь код для STM32:
Сперва чисто хардварная CRC (ей соответствует софтовая crc32_stm32):

Далее сделаем «как на софте», или «как в ethernet». Благо, в ARM есть инструкция для реверсирования бит.
Но это не всё. Ведь если пораскинуть мозгами, то можно добавить вкусную плюшку — сосчитать-таки побайтовую CRC на аппаратном блоке.
Нужно просто вычислить полином-остаток от оставшегося куска и добавить его к уже посчитанной пословно CRC. Остаток — это по сути та же CRC, но с начальным состоянием LSFR=0 (см инициализацию таблицы остатков). Но вот беда — CRC_ResetDR может установить регистр CRC только в 0xFFFFFFFF. Слава яйцам, что нам надо именно 0, а не что-то ещё. Одно из свойств CRC состоит в том, что если к сообщению приписать его CRC, то CRC нового сообщения будет равна 0. Другими словами, если мы подадим в регистр CRC то, что мы из него считали, то в результате получится 0. Теперь осталось заправить в регистр кусочек из одного, двух или трёх оставшихся байт — et voila, забираем наш полином-остаток и добавляем его к CRC.
Ниже код:

Читайте также:  Не найден плагин crypto interface

Вот, как-то так, думаю, многим пригодится.

это, если кому надо, реальные ethernet-фреймы с CRC32 FCS

Добрый вечер, Айководы!

Эта запись, я надеюсь, будет полезна не только вам, но и остальным владельцам сигнализации Starline.

Прошло уже полтора года с момента покупки Айки + установки сиги. И я наконец-то решился потратить свои выходные на прошивку CAN модуля. Ибо версия на данный момент уже аж 3.06 и включает в себя обновления под наши авто.

Далее кратко опишу весь процесс, потому как ничего сложного эта процедура не предвещает.

Идем на сайт can.starline.ru
Выбираем устройство и видим интуитивно понятный интерфейс, где качаем сам программатор, само ПО + смотрим историю изменений, чтобы решить, целесообразно прошиваться или нет.

С момента установки у меня была версия 2.x Поэтому полистав историю изменений и увидев список изменений — решил прошиться.

Затем благополучно дербаним панели и находим основной блок сиги (про технику безопасности и откидывание клеммы — разговаривать не будем).

Выглядит он вот так:

Но для прошивки CAN модуля его нужно разобрать. Потому как сам модуль находится именно в нем. Что и делаем:

Видим CAN модуль и аккуратно его отсоединяем от основной платы, дабы не погнуть ножки.

Сигналка Starline e90 gsm поставляется в одном варианте исполнения: без модуля CAN, без GPS-антенны, но с установленным модулем GSM. Рано или поздно, скорее всего, потребуется установить CAN-модуль. И тогда, возможно, вы столкнетесь с необходимостью обновить прошивку. Речь идет о прошивке самой сигнализации. Некоторые «старые» версии ПО не совместимы с модулями «2CAN 35», «2CAN Мастер», «CAN-LIN Мастер». Был один инцидент: модуль «CAN-LIN» не определялся сигналкой B94, пока прошивку, установленную с завода, не обновили до более «новой». Дальше рассмотрено, как выполняют подобное обновление без использования программатора.

Замена программатору «Starline-мастер»

Обновлять прошивки сигнализаций «Старлайн» может не кто угодно, а сертифицированные инженеры. Поэтому, например, ту же сигналку Старлайн е90 нельзя просто так подключить к ПК. Но с использованием переходников, соединяемых с 5-проводным разъемом, проблема решается.

Фирменный переходник, называемый «Starline-мастер», нельзя купить. А находиться такое устройство может только в авторизованном центре.

По идее, блок «Starline-мастер» – это контроллер «USB to UART», дополненный специальным тумблером. Появились отзывы, где говорится буквально следующее:

  1. Был куплен переходник, собранный на микросхеме CP2102;
  2. Затем этот переходник корректно подключили к сигналке;
  3. В схему добавили один переключатель, и прошивку удалось обновить, используя фирменный софт Старлайна.
Читайте также:  Стикеры симпсоны в вк

Электрическая схема, о которой шла речь, будет выглядеть так:

Прошивки для разных устройств, включая систему Starline е90, интегрированы в приложение для Windows. Версии прошивок будут разные, и для них характерны свои особенности. Все подробности вы найдете на сайте базы знаний.

Приложение, управляющее программатором, называется «Starline-мастер». Оно доступно на сайте «ultrastar.ru/30768». Скачайте архив, выполните установку. В результате в системе появится одно приложение и один новый драйвер. А еще, папка программы будет содержать инструкцию (файл PDF).

Обновление прошивки основного модуля

Допустим, переходник вы уже изготовили и программу скачали. Базовым устройством для изготовления служит нечто подобное:

Как видите, здесь есть три «нужных» линии: RX, TX, «масса». Подключение выполняют согласно схеме (см. выше). Возможно, схема подойдет для всех сигналок Старлайн, но опыт проводился над одной из них. Речь идет о модели Starline e90 gsm.

Процесс обновления «по шагам»

Все, что вы сделаете дальше, выполняется на свой страх и риск. Согласно инструкции, сигнализация Starline e90 получает питание по двум проводам – черному и красному, и они оба размещены на клеммнике снизу. Итак, сначала к сигналке подключают питание, но взять его нужно с разъема ПК (Molex «12 Вольт»).

Подключите контроллер к USB, не замыкая контакты тумблера. Попробуйте запустить программу.

В строке «Обнаружено устройство» должна быть надпись, показанная на фото. Именно она обозначает сигналку Starline e90 gsm. Вообще надпись соответствует любым устройствам, построенным на базе 22-го процессора (K22).

Если в строке «Обнаружено устройство» вы видите сочетание «Программатор Starline», то, согласно инструкции, надо обновить найденное устройство. Кнопка «Обновить» выглядит, как две стрелки.

Рассмотрим теперь, как выполнить установку прошивки:

  1. Сама автосигнализация Starline e90 должна быть отключена от питания;
  2. USB-разъем контроллера тоже отсоединяют от ПК;
  3. Тумблер, показанный на схеме, переводят в положение «включено» (замыкание контактов);
  4. Включают контроллер и питание сигналки;
  5. Нажимают кнопку «Обновить» (две стрелочки).

Как сказано в инструкции, значок «Обновить прошивку» должен активизироваться. Нажмите на этот значок и выберите один файл, соответствующий вашему процессору. Например, модель Starline e90 gsm совместима с такими прошивками:

В подходящих названиях присутствует суффикс «K22».

После нажатия на кнопку «Открыть» нужно набраться терпения. Процесс передачи файла занимает больше минуты. Кстати, индикатор установки появится в окне программы слева. Удачного обновления!

Обязательная начальная настройка

Итак, индикатор обновления показал «100%». Подождите 10 секунд и отключите питание. Дальше выполняют стандартную последовательность:

  1. USB-разъем отсоединяют;
  2. Тумблер переводят в положение «выключено»;
  3. Снова все подключают, жмут кнопку «Обновить».
Читайте также:  Как отключить датчик силы тяжести на мейзу

Окно программы теперь будет выглядеть, как показано на рисунке.

Задействуйте иконку «Настройка». Перейдя к новой вкладке, нужно выполнить сброс к заводским установкам. Пропускать этот шаг, как сказано в инструкции, в любом случае нельзя.

Получается, что выполнив установку новой прошивки, вы должны будете настраивать систему. Причем, настройка всегда выполняется «с нуля». Пользуйтесь отметками, сделанными предыдущим монтажником на полях инструкции. Возможно, все это выглядит непросто только на первый взгляд.

Обновление прошивки модуля CAN

Перед тем, как «прошивать» саму охранную систему, лучше зайти на сайт, где содержатся сведения о фирменном ПО. Как видно, у версии «L8» есть одна особенность – она не совместима с CAN-модулем, если в последнем прошивка не обновлена.

То есть, сигнализация Starline e90 не распознает наличие тех модулей, в которых установлено ПО более старых версий, чем 3.4. И получается, что без установки прошивки на еще одно устройство обойтись не удастся.

Для начала скачивают приложение, предназначено для программирования. Доступно оно на сайте can.starline.ru:

Затем к CAN-модулю подсоединяют шнур micro-USB. Запустив приложение, вы увидите список:

Включив вилку USB-шнура в порт, можно видеть название устройства:

Выбираем файл, жмем «Открыть», затем – «Загрузить».

Кому наше руководство адресовано

Все то, что рассматривалось до сих пор, будет справедливо не только для модели Starline e90 gsm, но и для любой сигналки, снабженной 5-проводным антенным шлейфом. Речь идет, конечно, о сигнализациях «Старлайн».

Теоретически, рассмотренные действия можно проводить с такими устройствами:

  1. Starline A94/64, B94/64, D94/64;
  2. Starline A93/63, также T94, i95 (LUX/ECO), AX3;
  3. Starline e90 gsm и все модели e90/e91 в разных версиях (gps/gsm).

Отзывы при построении списка не использовались. За основу были взяты названия файлов.

Решив обновить прошивку сигналки, зайдите на сайт базы знаний. Что нужно затем, чтобы научиться настраивать систему. Установка нового ПО влечет не только улучшение работоспособности. Таблица опций изменяется тоже:

Согласно инструкции, проводят базовую настройку:

  1. Надо позвонить с телефона владельца на номер GSM-модуля;
  2. Следуя голосовым подсказкам, задают пароли доступа (PS и PW).

Будем считать, все эти действия уже выполнены.

Обновление прошивки модуля проводят так:

  1. С телефона владельца отправляют одну SMS-команду: 00591;
  2. Питание сигналки не должно отключаться;
  3. По каналу GPRS прошивка будет обновлена автоматически;
  4. На телефон вернется SMS с отчетом.

Инструкция, где рассмотрен процесс обновления, приводится на официальном сайте.

В списке сказано то, что приведено на скриншоте. Удачной настройки!

Проводя обновление, ответного сообщения нужно дождаться обязательно. Оно, согласно инструкции Старлайна, появляется после установки прошивки. Между шагами 1 и 4 питание отключать нельзя. Иначе, программа модуля будет повреждена.

Как прошить модуль «2CAN»

Ссылка на основную публикацию
Btc 202b 94v 0 e220370 схема
Отключение дискретной видеокарты SAMSUNG NP370R5E BTC-202B, E220370, BA41-02175A Убираем дроссель указанный на картинке, для отключение питания GPU. Скачать BoardView Asus...
Adblock detector