Copyright © 2010 Promsite. All Rights Reserved.
стр. 1
стр. 1
P  R  O  M  S  I  T  E
Dashboard
Анализ алгоритма Denso_3


       Целью настоящей статьи анализ одного из алгоритмов применяемых для кодирования пробега в одометрах автомобилей. Ясно, что в различных марках авто используются разные алгоритмы кодирования. Их не то чтобы много, но достаточно, чтобы сразу все не охватить. Поэтому выберем в качестве жертвы один из алгоритмов кодирования изготовителя щитков Denso. У меня под рукой два дампа с разным пробегом  от Lacetti 2006 года 93C46 170695.BIN и 93C46 81156.BIN
Загрузим их в программу сравнения дампов, например вот в эту Grizzly_dump или какая есть и посмотрим результат:






Для отображения Облака ссылок
необходим
Adobe Flash Player 9
или выше.

Кликните на рисунке для увеличения.
       Что можно полезного здесь увидеть? Первое: программа определила и показала внизу тип микросхемы 93C46. Второе: сравнила дампы и показала области где находится пробег (выделенно красным). Видно, что пробег записан в EEPROM в 3-х местах и представлен в виде 3-х байтного шестнадцатеричного числа. Вот почему я добавил к названию алгоритма Denso индекс 3. Размер дампа 128 байт, что действительно соответствует объему микосхемы серии 93С46. В левом дампе число A9 EE E7 соответствующее пробегу 81156 км., в правом 6A F9 E8 - 170695 км.
       
       Но для понимания алгоритма кодирования приведенной информации мало. Тут два варианта: первый - брать щиток и "ездить на столе", второй - т.к. нас в данном случае интересует не результат, а сам алгоритм кодирования, то брать любой калькулятор пробега и вычислять код (с калькуляторами надо быть внимательными, их пишут люди и никто не застрахован от ошибок, в т.ч. и знаменитая тахософт). В любом случае получим определенный результат, который и показан ниже в таблице 1:
  Но прежде чем начать анализ, надо разобраться с функцией XOR, поскольку эта функция применяется повсеместно.  Это булева функция, по научному называется исключающее ИЛИ. Функция XOR выполняет действие над двумя операндами (м.б. и более чем два) согласно следующему правилу:









       Т.е. по-простому: если операнды не равны, то результатом будет 1, иначе 0. Практически это все происходит так: любое число в какой бы системе счисления не было представлено преобразововыятся к двоичному виду, затем сравнивается побитно и результат преобразуется обратно в нужном представлении. На первом этапе лучше преобразования выполнять с помощью виндовозного калькулятора (инженерный вид), там есть кнопка XOR.
Сначала вводим 1-е число, нажимаем кнопку XOR, вводим второе число и на кнопку =.
На самом деле всю эту мутотень никто и не запоминает. Ниже я покажу как без всяких калькуляторов и таблиц пользоваться функцией XOR.

 
Операнд 1
Операнд 2
Результат
0
0
0
0
1
1
1
0
1
1
1
0

       Т.е. по-простому: если операнды не равны, то результатом будет 1, иначе 0. Практически это все происходит так: любое число в какой бы системе счисления не было представлено преобразуется к двоичному виду, затем сравнивается побитно и результат преобразуется обратно в нужном представлении. На первом этапе лучше преобразования выполнять с помощью виндовозного калькулятора (инженерный вид), там есть кнопка XOR.
Сначала вводим 1-е число, нажимаем кнопку XOR, вводим второе число и на кнопку =.
На самом деле всю эту мутотень никто и не запоминает. Ниже я покажу как без всяких калькуляторов и таблиц пользоваться функцией XOR.

 
prev 1 2 3 next
prev 1 2 3 next