Прошивка airbag - прошивки, способы чтения и сброса.

Обмен опытом эксплуатации Subaru, вопросы по ремонту, ТО, запасным частям, аксессуарам

Модераторы: Анатолий Валерьевич, Dr.House

Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение sap » Пт апр 24, 2015 16:03

Странно, но я не нашёл дампов и вообще информации мало по самой популярной версии турбо субару - Impreza WRX.
Раскажу что нашёл, чтобы не пылилось в тёмных углах винчестера компа.

Начну с того что нужна помощь:
Имеются несколько стреляных блоков airbag от WRX'04.
Блоки с номером:
152300-6130 Denso 98221FE100
EEPROM: S220 (тоже самое что и 93C56) - чип памяти на 2Кб.
Есть у кого дамп чистого блока? Поделитесь?


-----------------------
Как выглядит блок внутри и где там микросхема памяти (картинка кликабельна)?
Изображение

На что стоит обратить внимание. Если посравнинвать стреляный и не стреляный блок - восновном записываются коды в первые 32 байта (первые 2 строки в дампах ниже). Но на форумах люди которые патчят за деньги всегда пугают что не всё так просто блаблабла. Хотя восновном просто забивают нулями первые 32 байта (если это субару или подобные блоки) и потом вместо подушек ставят сопротивления и смотрят прокатила ли самодиагностика или нет. Я обошёл нескольких чуваков и меня удручает некомпетентность. Восновном заплаченные деньги - это авось прокатило, я стёр тут код, нужно попробовать подключить. В связи с этим попытаюсь сделать шаг в публичности информации о блоках.

Как протестить прошитый блок? Пока не придумал. Но суть в том что датчики которые стоят на ланжеронах это не единственные датчики. Ещё есть на самом блоке. Вся система детектит скорость, ускорение и показания всех датчиков. И только если всё сходится к аварии то только в этом случае происходит бах. Поэтому открутить датчик и ё*нуть им об стену ни к чему не приведёт (хотя я не проверял :D ).

Для общего развития и памяти оставлю список блоков и их eeprom:
Код: Выделить всё
Subaru       98221 AG180 152300-8270         93C57
           98221 FE220 Denso 152300-84700   93C57
    Forester   98221 SA011 Denso 152399-5181      93C56
           98221 SC030 Denso 150300-0940      93C86
           98221 SC041 Denso            93C86
    Impreza   98221 FA101 Denso 152300-2150   93C46
           98221 FA160 Denso 152300-2391   93C46
           98221 FA171 Denso 152300-2402   93C46
           98221 FE030 Denso 152300-3961      93C46
           98221 FE100 Denso 152300-6130      93C56
           98221 FE110 Denso 152300-6140      93C56
           98221 FE190 Denso 152300-8440      93C56
           98221 FG040 Denso 150300-0660   93C86
           98221 FG070 Denso 150300-1460   93C86
    Justy      89170-B1200 Denso 150300-1071   93C56
    Legacy   98221 AG260 Denso 150300-0710   93C86
    Outback   98221 AG250 150300-0700         93C56
    Tribeca   98221 XA00A Denso 152300-8221   93C56


На просторах инета нашёл ряд дампов. Оставлю их в теме. Уверен что кому то поможет в будущем. Также приатачил внизу код проги ардуины для считывания eeprom и ссылки на даташиты.
[spoiler]
легаси:
Denso(S220)_152300-6631_(98221AG000)-OK.bin
Код: Выделить всё
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0005 000b 800b 800d 800f 8011 8016 800e
800b 820f 820e 820f 820d 820c 8209 b20a
b211 b213 b212 b20d b209 b210 b21b b218
b213 4c0c 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0200 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 ffff ffff ffff ffff ffff 0000
a5a5 a5a5 a5a5 a5a5 a5a5 a5a5 a5a5 a5a5


Denso(S220)_152300-6631_(98221AG000)-BAD.bin
Код: Выделить всё
aa71 3134 3f0b 000e 0b00 aa71 3134 3f0b
000e 0b00 aa71 3134 3f0b 000e 0b00 005a
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0005 000b 800b 800d 800f 8011 8016 800e
800b 820f 820e 820f 820d 820c 8209 b20a
b211 b213 b212 b20d b209 b210 b21b b218
b213 4c0c 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0200 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 ffff ffff ffff ffff ffff 0000
a5a5 a5a5 a5a5 a5a5 a5a5 5a5a 5a5a 5a5a


Это дамп от wrx'04 стреляный блок:
152300-6130 Denso 98221FE100 (s220)
Код: Выделить всё
5baa 3431 1104 0b00 0000 5baa 3431 1104
0b00 0000 5baa 3431 1104 0b00 0000 5a00
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 ff00 ff00 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 ff00 ff00 ff00
ff00 ff00 0000 0100 0900 1680 1880 0880
0680 1280 0f80 0680 0480 0c80 0e80 10b2
0eb2 0ab6 0eb6 0fb6 0cb6 0fb6 19b6 27b6
32b7 0d2b 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0002 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 ffff ffff ffff ffff ffff ffff ffff
a5a5 a5a5 a5a5 a5a5 a5a5 5a5a 5a5a 5a5a


Ещё один стреляный
152300-6130 Denso 98221FE100 (s220)
Код: Выделить всё
5baa 3431 0b04 1100 0000 5baa 3431 0b04
1100 0000 5baa 3431 0b04 1100 0000 5a00
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0300
0200 0000 0180 0100 0000 0100 0300 0280
0280 0480 0580 0380 0480 0180 ff80 0180
0180 0200 0680 0780 0280 0480 0680 0380
0580 0780 0780 0880 0880 0680 0480 0380
0380 0480 0380 0380 0300 0300 0480 0580
0680 0480 0280 0180 0380 0780 1280 1680
0d80 0964 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0002 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 ffff ffff ffff ffff ffff ffff ffff
a5a5 a5a5 a5a5 a5a5 a5a5 a5a5 a5a5 5a5a


DENSO 152300-6130 BAD 93C56 128X16.bin
Код: Выделить всё
30aa 3134 040b 0000 0000 30aa 3134 040b
0000 0000 30aa 3134 040b 0000 0000 005a
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0001
0001 0001 0001 0001 0001 0001 0001 0001
0001 0001 0001 0001 0001 0001 0001 0001
0001 0001 0001 0001 0001 0001 0001 0002
0005 800d 8013 8014 800c 80f7 80f7 800d
8012 800b 800a 800c 8214 8213 8214 821f
931c 931a 971e 971d 971d 9721 971f 9610
970e d20e 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0200 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 ffff ffff ffff ffff ffff ffff ffff
a5a5 a5a5 a5a5 a5a5 a5a5 a5a5 a5a5 a5a5


98221AE160_93C56x16_crash.bin:
Код: Выделить всё
34aa 0b31 040e 0000 0000 34aa 0b31 040e
0000 0000 34aa 0b31 040e 0000 0000 ffff
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 ffff
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0400 0507
0605 0103 0804 0607 0306 0503 0505 0706
0507 1300 0100 f103 ffff ffff ffff ffff
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 ffff
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 ffff
005a 0200 ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
5a5a 5a5a 5a5a 5a5a a5a5 a5a5 a5a5 a5a5


IMPREZA 2.5 2006 .DENSO98221FE220_152300-8470
NO ERROR 93C56 RA57
Код: Выделить всё
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 5a00
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0200 727c 6f63 6f7b 837c 6c7f 7d7c
8b85 8f8e 8668 7e87 6566 635d 5d66 6b70
6870 1961 9900 3033 3954 5600 ffff 0000
5a5a 5a5a 5a5a a5a5 a5a5 a5a5 a5a5 a5a5


IMPREZA 2.5 2006 .DENSO98221FE220_152300-8470
crash:
Код: Выделить всё
2c2b 2534 7678 1d00 0000 2c2b 2534 7678
1d00 0000 2c2b 2534 7678 1d00 0000 5a00
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0200 727c 6f63 6f7b 837c 6c7f 7d7c
8b85 8f8e 8668 7e87 6566 635d 5d66 6b70
6870 1961 9900 3033 3954 5600 ffff 0000
5a5a 5a5a 5a5a 5a5a 5a5a 5a5a a5a5 a5a5

[/spoiler]

Код arduino для чтения eeprom. Я коннектился внутрисхемно, питание брал с той же ардуины 3.3в. После включения в серийный порт (Мониторинг порта) последовательно выводится отформатированный текст дампа памяти циклически.
Код: Выделить всё
//defining pins for eeprom   
int CHIP_SEL =8;
int CLOCK =9;         
int DATA_IN = 11;
int DATA_OUT =10;

void setup(){
  pinMode(CLOCK ,OUTPUT);
  pinMode(DATA_OUT ,OUTPUT);
  pinMode(DATA_IN ,INPUT);
  pinMode(CHIP_SEL ,OUTPUT);
  digitalWrite(CHIP_SEL ,LOW);
  Serial.begin(9600);
}
void sendSer(String s){
  int len = s.length();
 
  for (int i=0;i<len;i++){
    char c = s.charAt(i);
    if (c=='0')
      digitalWrite(DATA_OUT, LOW);
    else
      digitalWrite(DATA_OUT, HIGH);
     
    digitalWrite(CLOCK,HIGH);
    digitalWrite(CLOCK,LOW);
    delay(3);
  }
    //needs little delay to work
    delay(10);
}
void recvSer(String s){
  digitalWrite(CHIP_SEL,HIGH);
  int len = s.length();
  for (int i=0;i<len;i++){
    char c = digitalRead(DATA_IN);
    Serial.print(c==LOW ? "0" : "1");
    digitalWrite(CLOCK,HIGH);
    digitalWrite(CLOCK,LOW);
  }
}

void loop(){
  digitalWrite(13,1);
  delay(1000);
  digitalWrite(13,0);

  digitalWrite(CHIP_SEL, HIGH);
  sendSer("00000110"); //sending READ instruction
  sendSer("00000000"); //sending Address
 
  //dummy zero that is sent at start of read
  digitalWrite(CLOCK,HIGH);
  digitalWrite(CLOCK,LOW);
 
  Serial.print("===START===\n");
  int x=0;
  int xBit=0;
  int charsCount=0;
  for (int i=0;i<2048;i++){
    char c = digitalRead(DATA_IN);
   
    x <<= 1;
    x |= (c==LOW ? 0 : 1);
    xBit++;
    if(xBit == 4)
    {     
      if(x<10)
      {
        char c='0' + x;
        Serial.print(c);
      }
      else
      {
        char c='a' + (x-10);
        Serial.print(c);
      }
     
      charsCount++;
      if(!(charsCount%4))
      {
        Serial.print(" ");
      }

      if(charsCount >= 32){
         Serial.print("\n");
         charsCount = 0;
      }
     
      xBit = 0;
      x = 0;

    }
   
    digitalWrite(CLOCK,HIGH);
    digitalWrite(CLOCK,LOW);
    delay(1);
  }
 
  digitalWrite(CHIP_SEL,LOW);
  Serial.print("\n===END===\n");
   
}



93c56:
http://pdf1.alldatasheet.com/datasheet-pdf/view/56327/ATMEL/93C56.html

s220 (взаимозаменяем с 93c56)
http://www.digchip.com/datasheets/parts/datasheet/000/S29XX0A-pdf.php

Полезно для прочтения патчинг eeprom пробега:
http://www.drive2.ru/l/1568805/. Тут же объясняется как подключить чип к LPT или COM порту и работать с ним через PonyProg.

немного инфы от продажников
http://cardamp.ru/view_full_one.php?langs_us=en&selectserach=25039&id_damp_list=20757

Подчеркну что пишу здесь всё для ознакомительных целей и ответсвенности связанной с предоставленной мною информацией не несу.

ps: неплохо было бы разрешить тег spoiler
  • 2

Последний раз редактировалось sap Сб апр 25, 2015 13:12, всего редактировалось 1 раз.
sti'04 (porsche killer)
wrx'04
Аватара пользователя
sap
 
Сообщения: 221
Зарегистрирован: Сб июн 02, 2012 15:53
Откуда: XA
Репутация: 11

Re: Прошивка airbug - прошивки, способы чтения и сброса.

Сообщение exigo » Сб апр 25, 2015 12:39

Вы неправильно написали, не AirbUg, а AirbAg
Отредактируйте пожалуйста
  • 0

WRX (Red 04MY)-> WRX STI (Black Mica 02 MY) -> WRX STI Prodrive (Blue Mica 02 MY) -> Evolution VIII (Black) -> WRX STI (Blu Mica 04 MY) -> WRX STI лиса (Blue Mica 06 MY) -> Evo IX (Yellow) -> STI покемоша седан (white pearl MY10)
Аватара пользователя
exigo
 
Сообщения: 2684
Зарегистрирован: Ср авг 26, 2009 14:04
Откуда: Харьков
Репутация: 698

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение sap » Сб апр 25, 2015 13:13

Исправил. Професиональная деформация. На работе bugs исправляем :D
  • 0

sti'04 (porsche killer)
wrx'04
Аватара пользователя
sap
 
Сообщения: 221
Зарегистрирован: Сб июн 02, 2012 15:53
Откуда: XA
Репутация: 11

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение sap » Вс май 10, 2015 09:21

Прошивка блока (98221 FE100 Denso 152300-6130) с памятью S220 с помощью arduino.
Написал простенькую прогу для программирования чипов памяти EEPROM по протоколу MicroWire.
Доступна на гитхабе https://github.com/sapzxc/airbag-fix

К сожалению дешман адаптеров под MicroWire протокол китайцы не продают (по крайне мере я не нашёл). В современных ноутах нет ни COM ни LPT. Переходник COM порта не катит, так как для чтения используются дополнительные пины, которых нет в usb-com адаптере, только в нативном COM порте. В моём случае быстрее и дешевле было использовать arduino который лежал уже дома.

Процесс очень простой:
Изображение
Изображение

Берётся ардуина Leonardo в моём случае и конектится напрямую к чипу. Подойдёт любая ардуина. Можно даже одолжить, так как в ардуино можно прошивать и стирать многократно программы.
Для удобства советую прикупить прищепку на 8 пинов для soic-8 корпусов. Я покупал на Aukro задорого, но на aliexpress будет гораздо дешевле но дольше.

Заливаете программу, дальше главное чтобы контакт был и правильно подключен чип. В тексте программы вверху есть распиновка. Я дулал просто - пихал прищепку в 8-11 пины и питание с землёй на другой стороне колодки отдельно.
Дальше не трогаем всю плату и провода и читаем память: открываем мониторинг порта в ардуино и пишем там read. Если всё правильно соединено, то должен быть дамп по типу как в топик стартере. Тут главное добиться правильного контакта всех пинов. Вся плата обработана защитным лаком и может быть сложно добиться контакта. Можно обработать спиртом и ваткой и немного почистить лак.

Когда удалось добиться контакта - то плату и провода лучше не трогать и на компе можно включать запись. Пишем в порт "write". На этом всё. Дальше проверяем read. Должны быть записанные данные.

В программе можно подправить опции и изменить размер банок и объём для чтения записи любой другой памяти по протоколу MicroWire. В начале есть настройки: eeprom_size, eeprom_bank_size, eeprom_address_width_bits.

Читать и писать можно внутрисхемно (для субару 1999-2004 катит, для других не знаю), питание брать с той же ардуины.
Если не получается нормально установить контакт и получать стабильные данные с чтения - значит у вас нет контакта или чип спаленный. Пытаться записывать наугад нельзя.
  • 2

sti'04 (porsche killer)
wrx'04
Аватара пользователя
sap
 
Сообщения: 221
Зарегистрирован: Сб июн 02, 2012 15:53
Откуда: XA
Репутация: 11

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение dmitrik » Пт апр 09, 2021 10:40

Заморочились) краш удалили в итоге?
  • 0

XV -> WRX 03 + E46 ci + Pajero IV -> GLA -> STI 06 + Golf R + Macan S + GLS
Аватара пользователя
dmitrik
 
Сообщения: 111
Зарегистрирован: Ср фев 15, 2012 08:32
Откуда: Киев
Репутация: 16

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение sap » Пт апр 09, 2021 10:48

да, все работает
  • 2

sti'04 (porsche killer)
wrx'04
Аватара пользователя
sap
 
Сообщения: 221
Зарегистрирован: Сб июн 02, 2012 15:53
Откуда: XA
Репутация: 11

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение cabirnator1 » Пт дек 10, 2021 00:31

sap,
Подскажите пожалуйста корректные настройки скетча для 152300-6130 Denso 98221FE100, S220.
Читаю, а записать не могу:
writing...
===WRITING (2048:16) ===
===WRITING ERROR: dump length is not [2048], but [0] ===

Что сделал (видимо, что-то сделал не так):
1 Раскомментировал c56 - subaru wrx 2003-2007
2 Закомментировал c46 - subaru wrx 00-03
3 eeprom_size = 2048;
4 int eeprom_bank_size = 16;
5 needDummyZero = 1;
6 int useWriteTail = 0;
  • 0

cabirnator1
 
Сообщения: 4
Зарегистрирован: Пт дек 10, 2021 00:06
Репутация: 0

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение dmitrik » Пт дек 10, 2021 10:36

Цель удалить краш? Чем пишите? Приложите дамп
  • 0

XV -> WRX 03 + E46 ci + Pajero IV -> GLA -> STI 06 + Golf R + Macan S + GLS
Аватара пользователя
dmitrik
 
Сообщения: 111
Зарегистрирован: Ср фев 15, 2012 08:32
Откуда: Киев
Репутация: 16

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение cabirnator1 » Пт дек 10, 2021 11:24

Все верно, цель удалить краш.
Читаю-пишу как у ТС, внутрисхемно, разница только в том, что у меня Arduino nano v.3 китайская.

Я сначала поторопился и думая, что скетч уже под память с56, прочитал-записал. В результате мой дамп сейчас такой:
reading...
===START DUMP (2048:16) ===
0000 7fff 0000 0000 7fff 7fff 0000 7fff
0000 7fff 0000 0000 7fff 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 0000 7fff 7fff 0000 7fff
0000 7fff 0000 0000 7fff 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff

===END DUMP===

Все работает при использовании скетча как-есть:
Раскомментирован дамп для с46
eeprom_size = 1024;
eeprom_bank_size = 8;
eeprom_address_width_bits = 7;
needDummyZero = 0;
useWriteTail = 1;

Я раскомментировал дамп для с56.
Для 93с56 установил следующие пременные:
eeprom_size = 2048;
eeprom_bank_size = 16;

Эти переменные пробовал в различном сочетании:
needDummyZero = 0/1;
useWriteTail = 1/0;

Результат один условие проверки длины дампа не проходит:
===WRITING (2048:16) ===
===WRITING ERROR: dump length is not [2048], but [0] ===

Дальше ступор :)
ЗЫ. А написать автору в ЛС прав не хватет...
  • 0

cabirnator1
 
Сообщения: 4
Зарегистрирован: Пт дек 10, 2021 00:06
Репутация: 0

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение sap » Пт дек 10, 2021 11:41

Код: Выделить всё
0000 7fff 0000 0000 7fff 7fff 0000 7fff
0000 7fff 0000 0000 7fff 7fff 0000 7fff
0000 7fff 0000 7fff 0000 7fff 0000 7fff


То что вы читаете - это некорректное чтение. Должна быть информация похожая с моих примеров. Там много нулей и числа в начале и в конце. Числа в начале это обычно всякие статусы сработки системы.

То что вы получили тут несколько вариантов. Или же конкретно в вашем случае не получается внутрисхемно работать по причине того что запитываются другие узлы и так же принимают-отправляют сигналы и в результате не получается взаимодействовать. Такое у меня было с одним блоком от outback.
Или второй вариант это плохо установленная прищепка, контакты и тп. Такое было 1000 раз. Особенно учитывайте что плата покрыта лаком для защиты от корозии. Бывало что миллиметр шевельнул и уже не получается читать.

Алгоритм действий такой что сначала нужно добиться стабильного чтения а уже затем писать. Если нет нормального коннекта и не получается прочитать то запороть микросхему и записать в нее неправильные данные у меня не получалось. Изначально читалось нормально?
  • 0

sti'04 (porsche killer)
wrx'04
Аватара пользователя
sap
 
Сообщения: 221
Зарегистрирован: Сб июн 02, 2012 15:53
Откуда: XA
Репутация: 11

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение cabirnator1 » Пт дек 10, 2021 13:10

sap
Блок как в вашем примере, 152300-6130 Denso 98221FE100, EEPROM: S22.
Лак я счистил и подпаялся к ногам eeprom, соответственно полагаю, что плохой контакт исключен.

Изначально было нечто похожее на ваши примеры, но проблема в том что я не разобравшись попытался записать (скетч с гитхаба без изменений) и теперь что там было - уже не узнать :(

Поэтому я хочу записать хотя бы просто нули и потом сверить - прочитать.
Но если я изменяю код таким образом:
Код: Выделить всё
char writeDump[] = ""
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 0000 0000 0000 0000 0000 0000 0000"
"0000 ffff ffff ffff ffff ffff ffff ffff"
"a5a5 a5a5 a5a5 a5a5 a5a5 a5a5 a5a5 5a5a"
"";

int eeprom_size = 2048;
int eeprom_bank_size = 16;
int eeprom_address_width_bits = 7;
int needDummyZero = 0;
int useWriteTail = 1;


Скетч возвращает ошибку ===WRITING ERROR: dump length is not [2048], but [0] ===

Я правильно выставил переменные для s22 (95c56)?
  • 0

cabirnator1
 
Сообщения: 4
Зарегистрирован: Пт дек 10, 2021 00:06
Репутация: 0

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение sap » Пт дек 10, 2021 14:22

Очень много вопросов к вам :)

Вы всегда получаете одну и ту же картину на чтении или же она от чтения к чтению отличается?

Ещё по вашей ошибке. Она означает что дамп который нужно писать пуст (ноль байт), там это написано. Проверьте что вы правильно обьявили переменную с массивом байт которые нужно записать = writeDump. Ошибка возникает вот здесь:
if(dump.length() * 4 != eeprom_size)
{
printf("\n===WRITING ERROR: dump length is not [%d], but [%d] ===\n", eeprom_size, dump.length() * 4);
return;
}

То есть в переменной ничего нет. В первую очередь проверьте это.

=======
По настройкам давайте смотреть, это можно сравнить посмотрев в даташит (ссылка выше в топике стартере)

·S-29220A : 2K bits NM93CS56 instruction code compatible
- 2 килобайта

The S-29XX0A Series is high speed, low power 1K/2K/4K-bit E2PROM
with a wide operating voltage range. They are organized as 64-word ¥
16-bit, 128-word ¥ 16-bit and 256-word ¥ 16-bit, respectively. Each is
capable of sequential read, at which time addresses are automatically
incremented in 16-bit blocks. The instruction code is compatible with the
NM93CSXX Series.
- 16 бит в блоке.

Получается настройки выставили верно.

Посмотрите, прозвоните ваш чип чтобы земля была на своем месте, так как в спецификации было две версии этого чипа, смотреть секцию Pin Assignment.

=====
Визуально ваш дамп выглядит так что на момент выставления бита на чипе, он читается несколько раз. Отсюда получается 000011...110000 в бинарном представлении или 00007ffff0000 в hex.
Сечас появилась идея что ваш девайс работает быстрее и нужно раскоментарить задержки чтобы чип успевал отрабатывать.

Принцип там такой (Figure 4 Read Timing)
Изображение

Мы подаем тактовый сигнал и читаем что на выходе. Так вот если мы выставляем этот сигнал слишком быстро что чип не успевает переключится и считать данные с памяти, то мы будем видеть подобный мусор. А в моем коде задержки все закоментарены и фактически задержка при выводе на монитор хватало для корректной работы. Попробуйте в местах где мы устанавливаем тактовый сигнал поставить задержки
Код: Выделить всё
      digitalWrite(CLOCK,HIGH);
      delay(1);
      digitalWrite(CLOCK,LOW);
      delay(1);

В целом по задержкам в спецификации чипа есть секция (Figure 3 Timing Chart). В большинстве операций нужно довольно малые промежутки времени, но из-за проводов, всяких навесных деталей, сигнал может быть не четким и чип может "не видеть" сигналы которые мы подаем быстро меняя туда сюда уровни. При смене этих задержек информация не должна менятся. Если информация которую вы читаете меняется, значит нарушен протокол связи с чипом. Это и провода и скорость и настройки и впорос внутрисхемности. Можно попробовать менять скорость больше и меньше чтобы добиться пока другие чипы при внутрисхемном программировании не "мешали".
  • 0

sti'04 (porsche killer)
wrx'04
Аватара пользователя
sap
 
Сообщения: 221
Зарегистрирован: Сб июн 02, 2012 15:53
Откуда: XA
Репутация: 11

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение Lambert » Пт дек 10, 2021 14:28

а не краще робити такі речі програматором? :)
під такі дрібні та розповсюджені чіпи воно ж геть недороге

якщо треба "на один раз" і ви у Києві - можу позичити, ну або прочитати/записати дамп
  • 0

турбопорохобот, атеїст Київського патріархату
Outback BP, 3.0R LPG edition, 2006, lifted, 28" wheels
Forester SG, 2.0 turbo LPG edition, 2003, lifted, 28" wheels
Leone coupe, 1.8 turbo LPG edition, 1988, lifted, 27" wheels
Аватара пользователя
Lambert
 
Сообщения: 840
Зарегистрирован: Вс фев 15, 2009 12:14
Откуда: Ukraine, Kyiv, Vidradny
Репутация: 47

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение dmitrik » Пт дек 10, 2021 14:57

Программатор не самое важное, можно любым под сок8 вычитать, важнее правильность чистки краша
Стоит ли рисковать самостоятельно чистить?
  • 0

XV -> WRX 03 + E46 ci + Pajero IV -> GLA -> STI 06 + Golf R + Macan S + GLS
Аватара пользователя
dmitrik
 
Сообщения: 111
Зарегистрирован: Ср фев 15, 2012 08:32
Откуда: Киев
Репутация: 16

Re: Прошивка airbag - прошивки, способы чтения и сброса.

Сообщение sap » Пт дек 10, 2021 15:35

Стоит ли рисковать самостоятельно чистить?

эта тема как раз и создана чтобы развеять мифы о чистке "специалистами". Все у кого я в свое время просил помощи оказались очень неквалифицированны. Уровень познаний и навыков пайки у 99% ниже чем 1 курс ХНУРЕ. Большинство горе прошивальщиков просто портят плату или же делают как попало, выпаивая строительным феном чип. Иногда сдувают рядом напаяныеконденсаторы и резисторы, иногда вздувается текстолит. Вы, как их клиент, никогда об этом не узнаете. Сами дампы берут на таких же форумах как этот. Есть спец форумы где этим горе прошивальщикам продают эти дампы или же делаеют прошивку "удаленно" за деньги. Нет никакого официально пути сделать чистку. Блок должен быть просто заменен по официальному пути.

Что касается "качества", то тут прям религия. Есть сказочное "качественно". По факту это простая прошивка чипа памяти в котором логируются события для возможного разбора представителями производителя в случае разборок в суде или же для разработки. В самом блоке зачастую ничего не ломается, не перегорает. Система отрабатывает штатно почти всегда.

Что качается "не проще ли". Если совсем не знаком с ардуино то будет тяжко с данным методом. Данный метод позволяет взять готовую прошивку и людям которые знакомы с ардуино сделать прошивку. При этом даже в магазин не нужно ехать. Если у вас есть программатор и вы понимаете как выпаять как запаять и как с этим работать, эта статья не для вас. Если совсем нет понимания что делать, то лучше конечно обратится к "специалистам".
Всю информацию я дал в ознокомительных целях. То что я делал с блоками использую и по сей день сам с уверенностью. Если человек технически не грамотен, прошу обращаться "к специалистам". Данная статья лишь показывает технически грамотным людям как просто устроены эти манипуляции, за которые берут по 200 дол или около того. Для далекого от темы человека вся эта магия выглядит как чтото ненадежное. Эта статья не для "клиентов" :)

Так же целью этой статьи было собрать воедино рабочие дампы и разнообразие чипов ряда годов subaru, так как на момент написания вся информация была разбросана по закрытым форумам где сидят "специалисты" и продают 2кб нулей по 100-200 дол. Тогда мне было немного смешно что обнуление части прошивки может стоить дорого. И пока я ждал програматор с алиекспреса, то решил на коленке просто сделать сброс себе самостоятельно и вылил для таких же энтузиастов эту статью. Мое уважение человеку который взялся разобраться :good:
  • 1

sti'04 (porsche killer)
wrx'04
Аватара пользователя
sap
 
Сообщения: 221
Зарегистрирован: Сб июн 02, 2012 15:53
Откуда: XA
Репутация: 11

След.

Вернуться в Обмен опытом

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 9