Как найти eeprom data в файле hex

Обновлено: 03.07.2024

Я думаю, может не все, но очень многие знают, что в контроллерах AVR помимо основной оперативной памяти, а также памяти для хранения прошивки существует ещё и энергонезависимая память типа EEPROM. Данная память сделана по технологии электрического стирания информации, что в отличие от её предшественника EPROM, в котором стирание производилось только при помощи ультрафиолетовых лучей, позволило использовать данный тип памяти практически повсеместно. Как мы знаем, ещё существует энергонезависимая память типа Flesh, которая стоит намного дешевле, но у которой также есть существенный минус. Там невозможно стереть отдельный байт, стирание производится только блоками, что не совсем удобно в некоторых случаях, особенно когда информации требуется хранить немного, и информация данная представляет собой небольшие настроечные параметры. Поэтому нам стоит также остановиться на данном типе памяти. И причем не только из-за того, что он присутствует в контроллере, а из-за того, что это очень удобно для хранения некоторых величин, которые нужны нам будут даже после того, как контроллер потерял питание.

Так как мы работаем с контроллером Atmega8A, техническую документацию данного МК мы и откроем и увидим там, что всего такой памяти у нас 512 байт. Это тем не менее не так мало. Если мы, например будем какой-нибудь будильник программировать, чтобы данные установки не потерялись после отключения питания, мы вполне можем с вами обратиться к данной памяти. Также в документации написано, что данная память гарантированно переживёт 100000 циклов записи/считывания.

Теперь напрашивается вопрос. Как же организован процесс работы с данной памятью в микроконтроллере AVR? Как всегда, компания Atmel об этом позаботилась и организовала данный процесс на аппаратном уровне, что очень радует потому, что нам постоянно приходится беречь ресурсы контроллера. Для управления данным аппаратным уровнем существуют определенные регистры.

image00

Как именно мы будем адресоваться, мы увидим в процессе программирования EEPROM.

image01

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

Ну и как водится, практически ни одна периферия и технология, организованная на аппаратном уровне, не обходится без управляющего регистра. У нас управляющим регистром является регистр EECR

image02

Давайте сразу немного познакомимся с битами данного регистра.

Компиляция в HEX редакторе
Есть простая программа на ассемблере: mov ax, 0001 mov ds, ax mov ah, 09 mov dx, 0006 int 21.


Почему дамп программы в Ollydbg и в HEX-редакторе отличается?
Доброго времени суток! Возможно задаю тупой вопрос, но у меня такая проблема: Открываю одну и ту.

Что нужно знать для редактирования вируса в hex-редакторе?
Что нужно знать для редактирования вируса в hex-редакторе?

Как в кольцевой буфер записать нужные мне данные
Как в кольцевой буфер записать нужные мне данные? Код записи такой в буфер такой ;запись в буфер.

если есть сомнения в достоверности "hex редакторов" то какие уверенности в правдивости "гугла и тех, кто ответит на этот запрос"? То что ты в этом не можешь разобраться критерием не является. просто как я понял hiew может принять обычную букву за команду в этом то путаница sychyov1991,
просто hiew управляет человек и если этот человек sychyov1991, то тут наступает путаница ну как говорится с опытом ни кто не рождается)) я то разберусь в любом случае. Если подскажешь как правильно им управлять я только За!

sychyov1991, а что Вам собсно не понятно? в компьютере все представляется в виде чисел (точнее в виде двоичных чисел, а еще точнее в виде "высокий уровень напряжения" и "низкий уровень напряжения"), хоть буквы, хоть команды для процессора - все числа. поэтому нет разницы в командах и буквах, процессор запросто проглотит если ему на выполнение подсунуть 'ABCDEF', вот только что эти команды будут делать (если вообще что-то будут делать). хиев - это вообще полезная штука. он может по-разному просматривать файлы: в виде хекс-кода, в виде двоичного кода, дизассемблированный листиг. если вы откроете в нем текстовый файл и скажете показать в виде ассемблерных команд, то он будет пытаться представлять текст в виде команд процессора. Вы поконкретнее вопрос задайте, ато не совсем ясно что Вам не ясно а как найти нужные данные в незнакомом файле - задача не из простых. если искать строки - ничего сложного. а вот искать нужный участок кода прошивки - это жопа тяжело.

Михаил Богураев

Из файла, который получился после компиляции рассмотрим первую строку, которую запишет
программатор в микроконтроллер
:02 0000 04 0000 FA
Разобъём на части, тогда получаем:
02 - в строке имеется два байта для записи в микроконтроллер.
0000 - адрес-смещение первого байта в строке (для строк типа 04 всегда 0000)
04 - тип - линейный адрес. Старшие 16 бит 32-битного адреса.
0000 - два байта данных. Смысл в том, что программа маленькая,
размер менее 64 кбайтов (0xFFFF), значит старшие 16 бит адреса нулевые.
FA - контрольная сумма высчитывается как 0x100 - сумма всех байт в строке после ":"
(0x100 - 02 - 04 = 0xFA)
Первая строчка похожа на всех программах для PIC18. Рассмотрим следующую строку:
:0400080004EF04F00D
":" - начало строки
04 - в строке содержится 4 байта данных (тут данные - это команды, которые
запишет программатор в память команд микроконтроллера).
0008 - начальный адрес данных в этой строке
00 - в строке содержатся данные
04EF04F0 - четыре байта данных
0D - контрольная сумма
Считаем контрольную сумму:
1. Сложим все пары hex чисел в строке (Кроме последних двух. Последние два числа - это контрольная сумма):
04 + 00 + 08 + 00 + 04 + EF + 04 + F0 = 1F3
0x1F3 в двоичном счислении:
0001 1111 0011
2. Сложение проводим по модулю 0x100
0001 1111 0011 - к модулю 0x100:
1111 0011
3. Переводим в дополнительный код
3.1. Прямой код:
1111 0011
3.2. Проинвертируем все разряды регистра, т.е. заменим 0 на 1 и 1 на 0, получаем обратный код:
00001100
3.3. Прибавим к обратному коду единицу и получим искомый дополнительный код:
00001101
0x0D

Команды из этой строки должны попасть в память команд нашего процессора
по адресу вектора прерывания (адрес 0x0008).
Организация памяти команд такова, что в каждом слове команды нужно переставить местами
байты. В документации на MPLINK команда описывается как "байт данных в две шестнадцатеричных цифры
в представлении младший байт/старший байт".

Это значит, что "04EF04F0" следует читать как "EF04F004". Выясним код операции.
Представим числа в двоичном коде:
EF04. - 1110 1111 0000 0010.
теперь посмотрим в документе на микроконтроллер код операции:
1110 1111.

Информация Неисправность Прошивки Схемы Справочники Маркировка Корпуса Сокращения и аббревиатуры Частые вопросы Полезные ссылки

Справочная информация

Этот блок для тех, кто впервые попал на страницы нашего сайта. В форуме рассмотрены различные вопросы возникающие при ремонте бытовой и промышленной аппаратуры. Всю предоставленную информацию можно разбить на несколько пунктов:

  • Диагностика
  • Определение неисправности
  • Выбор метода ремонта
  • Поиск запчастей
  • Устранение дефекта
  • Настройка

Неисправности

Все неисправности по их проявлению можно разделить на два вида - стабильные и периодические. Наиболее часто рассматриваются следующие:

  • не включается
  • не корректно работает какой-то узел (блок)
  • периодически (иногда) что-то происходит

О прошивках

Большинство современной аппаратуры представляет из себя подобие программно-аппаратного комплекса. То есть, основной процессор управляет другими устройствами по программе, которая может находиться как в самом чипе процессора, так и в отдельных микросхемах памяти.

На сайте существуют разделы с прошивками (дампами памяти) для микросхем, либо для обновления ПО через интерфейсы типа USB.

Схемы аппаратуры

Начинающие ремонтники часто ищут принципиальные схемы, схемы соединений, пользовательские и сервисные инструкции. Это могут быть как отдельные платы (блоки питания, основные платы, панели), так и полные Service Manual-ы. На сайте они размещены в специально отведенных разделах и доступны к скачиванию гостям, либо после создания аккаунта:

Справочники

На сайте Вы можете скачать справочную литературу по электронным компонентам (справочники, таблицу аналогов, SMD-кодировку элементов, и тд.).

Marking (маркировка) - обозначение на электронных компонентах

Современная элементная база стремится к миниатюрным размерам. Места на корпусе для нанесения маркировки не хватает. Поэтому, производители их маркируют СМД-кодами.

Package (корпус) - вид корпуса электронного компонента

При создании запросов в определении точного названия (партномера) компонента, необходимо указывать не только его маркировку, но и тип корпуса. Наиболее распостранены:

  • DIP (Dual In Package) – корпус с двухрядным расположением контактов для монтажа в отверстия
  • SOT-89 - пластковый корпус для поверхностного монтажа
  • SOT-23 - миниатюрный пластиковый корпус для поверхностного монтажа
  • TO-220 - тип корпуса для монтажа (пайки) в отверстия
  • SOP (SOIC, SO) - миниатюрные корпуса для поверхностного монтажа (SMD)
  • TSOP (Thin Small Outline Package) – тонкий корпус с уменьшенным расстоянием между выводами
  • BGA (Ball Grid Array) - корпус для монтажа выводов на шарики из припоя

Краткие сокращения

При подаче информации, на форуме принято использование сокращений и аббревиатур, например:

Сокращение Краткое описание
LEDLight Emitting Diode - Светодиод (Светоизлучающий диод)
MOSFETMetal Oxide Semiconductor Field Effect Transistor - Полевой транзистор с МОП структурой затвора
EEPROMElectrically Erasable Programmable Read-Only Memory - Электрически стираемая память
eMMCembedded Multimedia Memory Card - Встроенная мультимедийная карта памяти
LCDLiquid Crystal Display - Жидкокристаллический дисплей (экран)
SCLSerial Clock - Шина интерфейса I2C для передачи тактового сигнала
SDASerial Data - Шина интерфейса I2C для обмена данными
ICSPIn-Circuit Serial Programming – Протокол для внутрисхемного последовательного программирования
IIC, I2CInter-Integrated Circuit - Двухпроводный интерфейс обмена данными между микросхемами
PCBPrinted Circuit Board - Печатная плата
PWMPulse Width Modulation - Широтно-импульсная модуляция
SPISerial Peripheral Interface Protocol - Протокол последовательного периферийного интерфейса
USBUniversal Serial Bus - Универсальная последовательная шина
DMADirect Memory Access - Модуль для считывания и записи RAM без задействования процессора
ACAlternating Current - Переменный ток
DCDirect Current - Постоянный ток
FMFrequency Modulation - Частотная модуляция (ЧМ)
AFCAutomatic Frequency Control - Автоматическое управление частотой

Частые вопросы

Как мне дополнить свой вопрос по теме Как найти нужную ячейку в NEX редакторе??

После регистрации аккаунта на сайте Вы сможете опубликовать свой вопрос или отвечать в существующих темах. Участие абсолютно бесплатное.

Кто отвечает в форуме на вопросы ?

Ответ в тему Как найти нужную ячейку в NEX редакторе? как и все другие советы публикуются всем сообществом. Большинство участников это профессиональные мастера по ремонту и специалисты в области электроники.

Как найти нужную информацию по форуму ?

Возможность поиска по всему сайту и файловому архиву появится после регистрации. В верхнем правом углу будет отображаться форма поиска по сайту.

По каким еще маркам можно спросить ?

По любым. Наиболее частые ответы по популярным брэндам - LG, Samsung, Philips, Toshiba, Sony, Panasonic, Xiaomi, Sharp, JVC, DEXP, TCL, Hisense, и многие другие в том числе китайские модели.

Какие еще файлы я смогу здесь скачать ?

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

Полезные ссылки

Здесь просто полезные ссылки для мастеров. Ссылки периодически обновляемые, в зависимости от востребованности тем.


Тем читателям у которых нет хотя бы базового оборудования и опыта паяния статья мало чем поможет.
Если у Вас не тресутся руки, когда держите паяльник, у Вас есть время и деньги на "Упс, что пошло не так…" и Вы хотите получить пин-код вложив 2-5$, не переплачивая ключникам, то этот материал для Вас.
Убедительно прошу не писать в коментах типа "Я лучше бы заплатил 40$ за ключ или обратился к профессионалам и т.д.", " Дурак, мог бы потерять дамп и потом иметь гемор по подбору похожего и связи блоков." Прошу по делу. Я, прежде чем полез в BSI с паяльником, трезво взвесил все риски и экономическую выгоду.

Поехали. В блоке BSI авто храниться инфа о пробеге, пин коде, вин коде и др. от других блоков авто, я так понял, часть тупо для резервирования данных.
Сами данные хранятся в энергонезависимой памяти в микросхеме которую называют EEPROM, данные с нее читает микроконтроллер, обращаясь к ней по SPI шине, но об этом чуть позже.

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



Конкретно в моем случае было:
BSI Valeo J03-00
FNR:9651197580
FNC:9651196880
Boot: 9.31
Вбиваем в гугл "9651197580 EEPROM", гугл любезно предоставит ссылки на сайты с дампами прошивок где в их описании ищем тип еепром, в моем случае это была EEPROM ST M95160
Следующий вопрос гуглу звучит так "M95160 Datashet" гугл даст ссылку на документацию в PDF


Фоткаем как стояли предохранители и вытаскиваем их



И наблюдаем 7 залуженных пятачком со следами флюса вокруг

Понимаем, что тут уже кто-то побывал и подпаивался к нашей еепромке для отмотки одометра.
Нюанс в том, что я не нашел в сети инфы какой именно пятачок идет к какой именно ножки еепром, а епромка была припаяна снизу платы и простого доступа к ней нет и пришлось разбирать блок что бы понять, что и куда выходит.
Если у вас БСИ такая же как у меня, то пропускайте пару абзацев по разборке и смотрите распиновку в конце статьи.



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



возле многоногого микроконтроллера нашлась наша еепромка, на которой красовались цифры 95160 как в даташите, значит все верно это ST M95160 в корпусе SO8.

Выпаиваем чип:
1. Из медицинского шприца капнем на чип немного ацетона, и сотрем его ватными палочками, удалив при этом защитный лак с этой части платы.
2. Капаем на микруху флюс (канифоль в спирту)
3. Кладем на плату кусочек сплава Розе
4. Аккуратно, паяльником "размазываем " расплав, по двум рядам ножек микросхемы. Сплав розе плавясь при температуре 94 град растворяется с более тугоплавким стоковым припоем размягчая его. Быстро снимаем пинцетом микросхему, при этом температура кристалла не успеет подняться выше 100-130 градусов.
5. Снова капаем флюс на микруху и место где она стояла.
6. Берем медный провод или оплетку от медного кабеля, сминаем его в шарик и прижимаем его паяльником к месту на плате, откуда мы спаяли микруху. Медные волокна как губка впитают в себя припой, повторим операцию несколько раз пока площадка не станет чистой, с ножками еепромки делаем то же самое, и моем ее в ацитоне.
Я не рекомендую использовать для выпайки паяльный фен, так как есть риск перегреть микросхему, в даташите указана максимальная температура хранения 150 град, но я не нашел максимальной температуры и времени пайки, она обычно в ранее 275-315 град на 10 сек .
Выпайка паяльником с обычным припоем сохраняет риск перегрева, и добавляет риск оторвать ножку микрухи или дорожку, так как обычным паяльником крайне неудобно греть поочередно два ряда контактов не перегревая область вокруг микросхемы. Но, если вы выпаиваете обычным припоем, то не жалейте его и флюса. Чем больше будет припоя вокруг ножек, тем лучший тепловой контакт между жалом паяльника и теми контактными площадками, и тем быстрее вы снимите чип и остудите его. Лишний припой легко убирается медной оплеткой.


У микросхемы 8 ножек, нумерация начинается с левого нижнего угла относительно написания маркировки.
Согласно даташита кому интересно, :
1. пин это Chip select выбор активного устройства на шине
2. пин это выход данных
3. пин системный подтянут к +5в через резистор.
4. пин это "GND", минус или "Масса"
5. пин это входные данные
6. пин это шина синхронизации
7. пин системный соеденен с 8м
8. пин это питание самой микросхемы +5в.
Вот сейчас можно проследить какой пин выходит на обратную сторону платы к которой подпаивались люди до меня.
Большинство епромок попадавшихся мне в руки имели такую же распиновку, будь там телевизор или мультиварка.

Кладем микросхему в панельку программатора и читаем ее в Hex или BIN файл.


Конкретно свой PIN-код я читал в Hex Edition Neo редакторе, но пришлось хорошо подумать, просто открыв в блокноте вы его не увидите, можете поискать программки которые сделают это за Вас, или спросить на форуме. Сам алгоритм чтения я не раскрою, но если вы найдете в дампе куски своего VINа, то пин вы найдете быстро, если не получится шлите в личку скриншот програмки с куском кода начиная с адреса 0000610 по 0000700.


Запаиваем микруху обратно не попутав нумерацию ножек, иначе кирдык! Заливаем область микрухи лаком, я использовал аэрозольный балончик Camilion Plastik


Заворачиваем плату на место параллельно блока, и спаиваем медные проводники, для этого нужен пинцет, мощный паяльник или помощь фена, так как много тепла уходит по меди и припой туго плавится.

Собираем крышки в обратном порядке.

Программатор для 59160 вы можете спаять сами.



по известной схеме, и прочесть программкой Ponyprog 2000 (выбрав SPI 25160)

Но проверить программатор я не смог, так как во время не нашел компьютер с СОМ портом, пришлось обращаться к ребятам на СТО занимающихся чип-тюнинингом. Услуга чтения еепром с сохранением на носитель по Минским меркам стоит 2,5-5 $ при цене программатора 35$ в Китае, что считаю вполне приемлемым.
Дамп храните, он может вам пригодиться если в епромку что-нить криво запишется, к примеру при заводке на высаженном АКБ.


Выкладываю пиноут для чтения дампа без разбора и выпайки еепром, так как это делают на СТО. Цифрами показаны номера ножек микросхемы, красной стрелкой колодец по которому идет питание на ЕЕПРОМ с наружного слоя платы на внутренний, красным помечены дорожки которые следует перерезать перед подключением программатора, если вы не знаете как заглушить процессор (подпаиватся к колодцу между крестиками). Многие читают еепром запитывая всю плату, но для этого нужно "заткнуть процессор", что-бы последний не мешал процессу. Заглушить процессор на время чтения программатора можно закоротив выводы его кварцевого резонатора, нов моем случае не вариант так как, он распаян снизу платы), или подтянуть ножку RES процессора к массе, а куда эта ножка выходит я и не глянул, и фоток не осталось с маркировкой процессора.
Да простят меня СТО-шники за то, что я раскрыл часть их секретов, но до этого я дошел сам, мне никто не помогал, и тут все честно.

Читайте также: