|
Некромантия (восстановление DDR2 памяти), Как определить битый чип? |
|
|
|
Mar 7 2008, 12:46
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Досталось штук 20 битых модулей DDR2 памяти. Битая не совсем, т.е. комп с ними стартует, но MemTest86 вылетает с ошибкой (unexpected interrupt) в самом начале теста. На живой памяти тест проходит. Смею предположить, что на каждой из плашек выбита какая-то одна микросхема и какое-то количество можно оживить, заменяя битые на исправные с других плашек (оборудование для перепайки доступно, микросхемы на плашках одинаковые). В задачнике спрашивается - как определить, какую именно микросхему надо менять? Боюсь, что поиск методом Монте Карло (научного тыка) будет малоэффективен. Есть ли какой-то алгоритм, позволяющий найти битые чипы минимальным количеством перепаек, исходя из того, что на каждой плашке по 8 микросхем и считаем, что битая из них только одна?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
 |
Ответов
(1 - 13)
|
Mar 7 2008, 22:18
|
Участник

Группа: Свой
Сообщений: 33
Регистрация: 29-04-07
Из: Минск
Пользователь №: 27 397

|
Я делал так: в первый слот вставлял заведомо рабочую планку, а во второй неисправную. грузился с CD-ROM и с сд-диска запускал программу теста памяти(возможно туже что и вы). программа на тестах запись-чтение четко показывала в каких битах постоянные ошибки. планки 64бит -> 8бит на микросхему. стоят они по порядку. младший бит со стороны первого контакта. попадалось что неисправны были не микросхемы а резисторы которые стоят по шине данных. удачи.
|
|
|
|
|
Mar 8 2008, 09:13
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Извиняюсь, памяти DDR, а как менять название темы я что-то не нашел. Но думаю это не сильно меняет расклад. Спасибо всем откликнувшемся. Цитата(TinyQ @ Mar 8 2008, 00:18)  в первый слот вставлял заведомо рабочую планку, а во второй неисправную. О! А я чего-то только одну планку вставлял. Мысль о том, что неизвестно, какой из слотов попадает в младшие адреса и неизвестно, куда попадет программа поставили меня в тупик. После вашего сообщения понял, что вариантов всего два, можно и метод Монте-Карло применить. Цитата(TinyQ @ Mar 8 2008, 00:18)  планки 64бит -> 8бит на микросхему. стоят они по порядку. младший бит со стороны первого контакта. Спасибо! В понедельник попробую. Цитата(TinyQ @ Mar 8 2008, 00:18)  попадалось что неисправны были не микросхемы а резисторы которые стоят по шине данных. Резисторы прозвонил. Они сделаны напылением прямо на плате. Звонятся все. В понедельник буду пробовать с живой планкой в первом слоте. Отпишусь Цитата(vetal @ Mar 7 2008, 15:53)  может для начала определить по маркировки точное наименование микросхемы, затем скачать даташит выставить правильные тайминги? Я полагаю, что тайминки берутся из eeprom на самой плашке и производитель туда записал самые лучшие значения. Или есть какая-то веская причина выставлять тайминги вручную? Если проверка по методу, предложенному TinyQ покажет "плавающие" ошибки, можно будет считать и сравнить eeprom на разных плашках. Не исключаю их слета, но для чтения надо будет выпаивать слот из дохлой материнки, писать на меге программатор 24L02 или паять железо для чего-то типа лошади... хотелось бы по возможности этого избежать. Цитата(DRUID3 @ Mar 8 2008, 02:33)  Кстати, где-то читал что толи Knoppix, то ли еще какой дистрибутив работает с такими планками на ура)))... Мм... пожалуй, если вопрос встанет так, я лучше куплю новую память
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 8 2008, 13:48
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(TinyQ @ Mar 8 2008, 01:18)  планки 64бит -> 8бит на микросхему. стоят они по порядку. младший бит со стороны первого контакта. Это далеко не всегда так, бывают и 16бит микросхемы и даже 32, порядок бывает тоже очень разным, иногда даже чередуется первая и вторая стороны дима, иногда на дешевых модулях используют половинки микросхем причем как по размеру так и по разрядности(типа половина битая половина целая). В тяжелых случаях действительно нужно вставлять вторым димом. Какой порядок слотов можно определить по таблице диагностики биоса. 2 Сергей Борщ напишите точное название чипов, размер модуля Мб, .... А лучше сфоткайте модуль с двух сторон с высоким разрешением и приатачте здесь или в PM тогда можно будет сказать о алгоритме поиска дохлых чипов по выводу memtest86 Я просто в свое время занимался ремонтом памяти в промышленных масштабах...
|
|
|
|
|
Mar 8 2008, 23:07
|
Участник

Группа: Свой
Сообщений: 33
Регистрация: 29-04-07
Из: Минск
Пользователь №: 27 397

|
Elixir_DDR1_256Mb_Die_B_Draco_UDIMM_R2.2.pdf ( 247.57 килобайт )
Кол-во скачиваний: 1291Когда я этим занимался, то руководствовался этим PDF. Других планок не попадалось, так что спорить не буду. У меня тоже были DDR, а DDR2 по идее не сильно отличается.
|
|
|
|
|
Mar 8 2008, 23:21
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(TinyQ @ Mar 9 2008, 02:07)  Когда я этим занимался, то руководствовался этим PDF. Дык в приатаченном Вами pdf черным по монитору написанно: Unbuffered DDR DIMM based on 256M bit die B device, organized as either 32Mbx8 or 16Mbx16 ............................... M2U51264DS8HB3G is 512MB modules organized as dual ranks using sixteen 32Mx8 TSOP devices. M2U25664DS88B3G is 256MB modules organized as single rank using eight 32Mx8 TSOP devices. M2U12864DSH4B3G is 128MB modules, organized as single rank using four 16Mx16 TSOP devices.Но документик кстати зачетный, я брал даташиты от Micron и Samsung, там описание хуже и приходилось инфу собирать из разных даташитов. А вариантов разводки дима на самом деле очень много.
|
|
|
|
|
Mar 10 2008, 18:12
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(singlskv @ Mar 8 2008, 15:48)  2 Сергей Борщ напишите точное название чипов, размер модуля Мб, .... А лучше сфоткайте модуль с двух сторон с высоким разрешением и приатачте здесь или в PM тогда можно будет сказать о алгоритме поиска дохлых чипов по выводу memtest86 Докладываю о проделанной работе. 1) Фотки двух типов модулей сделал, прилагаю. 2) Все модули пропустил через конвекционную печку. При этом на части модулей наклейка съежилась и утянула микросхемы с мест. "- Болван! -Согласен "(с) Операция "Ы". Поставить их на место не проблема, если будет результат с неповрежденными модулями. 3) Десяток неповредившихся модулей попытался проверить. Результ: два живы (можно использовать как доноры заведомо исправных микросхем). Один модуль не дает компу даже включить мониотор. Один модуль (на картинке DDR_1.jpg) выдал ошибку в тесте №1 (Address test, own test), при этом bit pattern был 00100000. Переставил на него третью справа микросхему с живого - результат не изменился. Остальные модули, даже в паре с живой памятью в младших адресах, выдают в течении секунды-двух какие-то ошибки в тесте №2 (moving inversion), после чего на pattern 00000000 происходит Unexpected interrupt и на экран выводится содержимое регистров процесcора (всегда одинаковое насколько запомнил ключевые регистры, PC=003C1A). Успевал заметить, что для одного модуля пишется error pattern 033DFF40, для некоторых 0xFFFFFFFF. После этого программа реагирует на перечисленные в нижней строке клавиши, но попытка запустить тест снова приводит к повисанию системы. Что делать дальше? P.S. Нашел вот у себя еще такой документ - PC1600 and PC2100 DDR SDRAM Unbuffered DIMM Design Specification rev 1.1. Может кому пригодится. Сам я пока не пойму, каким местом его приложить к моей проблеме
Эскизы прикрепленных изображений
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 10 2008, 19:13
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Сергей Борщ @ Mar 10 2008, 21:12)  1) Фотки двух типов модулей сделал, прилагаю. к сожалению маркировку микросхем на фото видно не очень, но из того что удалось разглядеть, у Вас все модули однотипные и с чипами 32мбитX8 и одна линия на модуль(вторая не запаянна) Вариант разводки у Вас самый простой, те все подряд Цитата При этом на части модулей наклейка съежилась и утянула микросхемы с мест. Да, снимать наклейки и отмывать следы от них, это обычно самая утомительная часть всего процесса. Цитата 3) Десяток неповредившихся модулей попытался проверить. Результ: два живы (можно использовать как доноры заведомо исправных микросхем). Возможно, кривая пайка всей серии, посмотреть пайки под мелкоскопом, плохие пайки часто визуально отличаются от хороших, можно при этом в подозрительных местах легонько пошевелить иголкой. Цитата Один модуль не дает компу даже включить мониотор. Или залип в адресных линиях или неправильный eeprom, или совсем сдохший чип который держит шину, проверьте температуру чипов Цитата Один модуль (на картинке DDR_1.jpg) выдал ошибку в тесте №1 (Address test, own test), при этом bit pattern был 00100000. Переставил на него третью справа микросхему с живого - результат не изменился. Вот это самый правильный результат которого нужно добиться на остальных модулях, те нужно получить Error pattern и адрес по которому он произошел, замена вероятно не помогла, потому что каждый error pattern это 2 микросхеммы и нужно смотреть адрес Цитата Остальные модули, даже в паре с живой памятью в младших адресах, выдают в течении секунды-двух какие-то ошибки в тесте №2 (moving inversion), после чего на pattern 00000000 происходит Unexpected interrupt и на экран выводится содержимое регистров процесcора (всегда одинаковое насколько запомнил ключевые регистры, PC=003C1A). Успевал заметить, что для одного модуля пишется error pattern 033DFF40, для некоторых 0xFFFFFFFF. После этого программа реагирует на перечисленные в нижней строке клавиши, но попытка запустить тест снова приводит к повисанию системы. При старте memtest нужно усиленно жать С(сменить настройки, ну или как оно там вызывается в последних версиях) и методом перебора найти те номера тестов на которых будет показывать вразумительный error pattern, вразумительный это макс байт, ну иногда 2 для того чтобы прога не вываливалась можно еще жать пробел для тормозов при заполнении всего экрана ошибками P.S. Чуть по позже найду у себя файлик с описанием для такого типа модулей...
|
|
|
|
|
Mar 10 2008, 20:32
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(singlskv @ Mar 10 2008, 21:13)  к сожалению маркировку микросхем на фото видно не очень, но из того что удалось разглядеть, у Вас все модули однотипные и с чипами 32мбитX8 и одна линия на модуль(вторая не запаянна) Да. Есть какое-то количество с двухсторонним монтажем, но их я оставил "на потом". Цитата(singlskv @ Mar 10 2008, 21:13)  Вот это самый правильный результат которого нужно добиться на остальных модулях, те нужно получить Error pattern и адрес по которому он произошел, замена вероятно не помогла, потому что каждый error pattern это 2 микросхеммы и нужно смотреть адрес Можно подробнее, какие два корпуса соответствуют этому паттерну? Ошибок он там насчитал много, но паттерн оставался один и тот же. Если я правильно понял описание этого теста, в каждую ячейку пишется ее адрес. И сбой в 24 бите, получается, указывает на микросхему, которая подключена к 24 биту шины данных. В чем моя ошибка? Адрес я завтра посмотрю, но поменять даже два (если я с третьим слева не угадал) корпуса будет быстрее, чем постить сюда адрес и ждать ответа. Цитата(singlskv @ Mar 10 2008, 21:13)  При старте memtest нужно усиленно жать С(сменить настройки, ну или как оно там вызывается в последних версиях) и методом перебора найти те номера тестов на которых будет показывать вразумительный error pattern, вразумительный это макс байт, ну иногда 2 для того чтобы прога не вываливалась можно еще жать пробел для тормозов при заполнении всего экрана ошибками Пробел жать пробовал, но, видимо, не успел. Спасибо за помощь! Будут новые результаты - отпишусь.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|