|
Некромантия (восстановление 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)
|
|
|
|
|
 |
Ответов
|
Mar 7 2008, 22:18
|
Участник

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

|
Я делал так: в первый слот вставлял заведомо рабочую планку, а во второй неисправную. грузился с CD-ROM и с сд-диска запускал программу теста памяти(возможно туже что и вы). программа на тестах запись-чтение четко показывала в каких битах постоянные ошибки. планки 64бит -> 8бит на микросхему. стоят они по порядку. младший бит со стороны первого контакта. попадалось что неисправны были не микросхемы а резисторы которые стоят по шине данных. удачи.
|
|
|
|
|
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 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)
|
|
|
|
Сообщений в этой теме
Сергей Борщ Некромантия (восстановление DDR2 памяти) Mar 7 2008, 12:46 vetal может для начала определить по маркировки точное н... Mar 7 2008, 13:53 Сергей Борщ Извиняюсь, памяти DDR, а как менять название темы ... Mar 8 2008, 09:13 DRUID3 Кстати, где-то читал что толи Knoppix, то ли еще к... Mar 8 2008, 00:33 makc Цитата(DRUID3 @ Mar 8 2008, 03:33) Кстати... Mar 8 2008, 18:57 TinyQ
Когда я этим занимался, то руководствовался этим... Mar 8 2008, 23:07 singlskv Цитата(TinyQ @ Mar 9 2008, 02:07) Когда я... Mar 8 2008, 23:21 Harbour Есть мем-тест написанный русским программером - он... Mar 11 2008, 05:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|