kategorie: A1200, Sprzęt
[#1] Pomoc potrzebna przy obliczaniu numeru linii danych
Mam taką zagwozdkę:
Trafiłem na SIMM-a 128MB 50ns w którym padła jedna!! komórka pamięci.
Objawia się to tym że przy teście pamięci FAST programem GVPmemtest na jednym adresie notorycznie mam błąd odczytu ostatniego bitu.
Gdyby to był SIMM 32MB lub mniejszy to wylądowałby na śmietniku bez długiego zastanawiania się. Ale to jest 128MB i chodzi na 80MHz (poza tym nieszczęsnym jednym bitem). Ten sam bit jest błędnie odczytywany nawet przy 50MHz, czyli problemem nie jest przetaktowanie tylko fizyczne uszkodzenie układu.
A że tych układów na SIMM-ie jest 16 sztuk to nie ma sensu bawić się w wylutowanie i sprawdzanie każdego układu po kolei. I tutaj jest mój problem: nie wiem który z 16 układów jest walnięty.

Co wiem:
Przy włożeniu tego SIMM-a do Blizzarda 1260 do gołej A1200 z KS 3.1 program GVPmemtest daje mi informację że zawartość bajtu pod adresem 786c5374 jest 00000001 zamiast oczekiwanej 00000000
I moje pytanie brzmi:
Na której linii danych jest błąd?
Dka przypomnienia dodam że jest ich 32.

Za pomoc przewidziana nagroda w postaci kilku kolejek złocistego trunku chmielowego.
[#2] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@stachu100, post #1

Jeśli fastram jest od $78000000 to błąd jest na 25 linii danych.

Ostatnia aktualizacja: 19.10.2011 16:28:09 przez bogumil
[#3] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@stachu100, post #1

Czy to są układy 16- czy 32 bitowe? Od jakiego adresu zaczyna się adresowanie tej pamięci, zdajesz sobie sprawę, że adres 786c5374 to 1926MB w obszarze adresowania. Wartość 00000001 wskazuje na uszkodzenie pierwszego bitu, będzie to albo D0 albo D8 (nie wiem czy format big endian/little endian tu się liczy, dane w pamięci są "byte swapped" czyli to co powinno być pod adresem 0 jest pod 1, a w 1 jest to co powinno być w 0). Musisz się dowiedzieć odkąd zaczyna się adresowanie Twojej pamięci, potem uruchamiasz kalkulator w trybie programisty/naukowym gdzie masz możliwość przełączania pomiędzy HEX/DEC/BIN, wpisujesz w trybie HEX adres błędnej komórki i odejmujesz od niej adres początku tej pamięci (powinna ta dana być w sysinfo, popatrz adresy bibliotek w pamięci FAST), wynik zamieniasz na DEC i masz wynik w bajtach, dzięki któremu powinieneś określić w którym miejscu (0-128MB) jest błąd, a która kość jest uszkodzona to zależy id ich typu i jak są one połączone między sobą.

EDIT:
Jeśli pamięć się zaczyna tak jak mówi bogumił, to uszkodzenie leży w 6932kB. Teraz, która to kość, to zależy od ich typu.


Ostatnia aktualizacja: 19.10.2011 16:54:47 przez rafgc
[#4] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@rafgc, post #3

Wg kalkulatora M$ błąd jest w pierwszym bicie 7099252 bajtu pamięci od adresu $78000000. Z mojej wiedzy jest to najstarszy bajt w długim słowie, czyli na linii danych jest on na 25 linii.
Pozdrawiam Bogumił
[#5] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #4

7099252 jest podzielne na 4 więc będzie to pierwszy bajt i pierwszy bit, powinno być D0, lecz w związku z odwróconą kolejnością bajtów w słowie będzie to prawdopodobnie D8. Jakie to są kostki Stachu?

W każdym bądź razie Stachu jest dobra wiadomość, z 32 linii danych zjechaliśmy do 3 :)




Ostatnia aktualizacja: 19.10.2011 17:26:54 przez rafgc
[#6] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@stachu100, post #1

jezeli system pozwala sie wystartowac z taka koscia pamieci to mozesz rozwiazac to programowo poprzez zaalokowanie pamieci w okolicach uszkodzenia (powiedzmy, ze cala strone 8kb. jest do tego funkcja w exec, AllocAbs) i tyle.
[#7] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@rafgc, post #5

Też tak myślałem, ale podzielne przez 4 czyli 4-ty bajt, gdyż 1-szy bajt nie dzieli się przez 4 bez reszty, podobnie jak 2-gi i 3-ci. Gdyby to był 1-szy, to następny bajt jest 5-ty, potem 9-ty ( mamy szynę 32bity czyli 4 bajty). Pierwszy bit w czwartym bajcie długiego słowa (naszej szyny 32 bitów), jeśli najmłodszy bit jest z prawej w zapisie Staszka, daje nam 25 linię z 32.
Czyli dana D24 z D0-D31.
Pozdrawiam Bogumił
[#8] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #7

A skąd w ogóle wiecie czy konstruktorzy karty nie pozamieniali sobie miejscami bitów danych bo było im tak wygodniej routować sygnały. Z punktu widzenia procesora i pamięci to jest obojętne. Moim zdaniem bez znajomości hardwaru karty nie ma szans na "obliczenie" który to bit bez znajomości sprzętu. Pewnie dało by się napisać aplikację, która np. odczytywała by w kółko tą walniętą komórkę pamięci (której adres znasz) i na analozatorze logicznym można by wtedy sprawdzić który to bit na sockecie simma.
[#9] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@sqward, post #8

Jeśli pamięć fast na Blizzardzie060 jest od $78000000 i błąd jest w podanym adresie, oraz program testujący nie zamienia danych i adresów, oraz system nie zmienia danych i adresów, to na linii D24 na procesorze na karcie Blizzarda o którym mowa w wątku, przy odczycie danych z adresu $786c5374 pojawi się czasami przekłamanie przy normalnej pracy wadliwej kości pamięci o której jest mowa w wątku.
Pozdrawiam Bogumił
[#10] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #7

To czemu z zapisu binarnego tego adresu wynika, że jest to jednak pierwszy bajt?
11011000101001101110100
A0 = 0 i A1 = 0
gdyby to był adres drugiego WORD,a to A1 byłoby równe 1

wydaje mi się, że program do testowania zapisuje liczby 32-bitowe co widać na podanej przez Stacha wartości czyli 00000001 względem adresu bazowego A0=0,A1=0 dlaczego miałby zapisywać i czytać dane od połowy szyny tracą jeden cykl szyny na zapis/odczyt wartości DWORD?

EDIT:

Poza tym pierwszy bajt w ogóle w mapie pamięci nie dzieli się przez 4 (jego adres to 0), ale pierwszy bajt drugiego DWORDa i kolejnych już tak, adres o numerze 4 to pierwszy bajt drugiego DWORDa, adres 8 to pierwszy bajt trzeciego DWORDa, adres 12 to pierwszy bajt czwartego DWORDa i tak dalej.

Ostatnia aktualizacja: 19.10.2011 21:27:23 przez rafgc
[#11] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@rafgc, post #10

Więc dalej obstawiam, że jest to D8, oczywiście jak wspomniano wcześniej, może się zdarzyć, że bity w bajtach są pozamieniane dla wygodniejszego prowadzenia ścieżek, więc w najgorszym wypadku będzie trzeba zacząć poszukiwania od strony procesora.

A Stachu pewnie siedzi i czyta i dalej nie wie, który to w końcu bit :)

Ostatnia aktualizacja: 19.10.2011 21:35:28 przez rafgc
[#12] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #9

Dzięki za sugestie i pierwsze typowania.
Jutro wrzucę filmik na youtube.
Odpalę:
1) Sysinfo oraz zakładkę pamięć - FAST żeby upewnić się co do początkowego adresu FAST-u przypisanego na Blizzardzie
2) Showconfig - tak na wszelki wypadek
3) GVPmemtest coby każdy mógł zobaczyć ten nieszczęsny bit.

Jeżeli ktoś ma jeszcze jakieś sugestie to proszę dać znać.

Układy pamięci to MT4LC16M4H9 -5 po 8 na każdą stronę PCB.

http://download.micron.com/pdf/datasheets/dram/D22_2.pdf

Co do możliwości zamiany na PCB poszczególnych linii danych:
Teoretycznie jest to możliwe i użytkownik ani żaden program tego nie wykryje, ale wątpię żeby inżynierom z phase5 chciało się w coś takiego bawić.
[#13] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@rafgc, post #10

Popełniłem błąd w wyliczeniach i nie uwzględniłem $78000000 jako początku fastramu tylko $78000001 ( zapominam że moje 1 dla kompa to 0 ).
Jeśli pamięć zaczyna się od $78000000 wtedy problematyczny bit to jest D0 czyli pierwsza linia na szynie danych.
Adres po zamianie na system dziesiętny to 7099253 bajt.
Pozdrawiam Bogumił

PS Czy dobrze widzę że pamięci są na 3.3V?

Ostatnia aktualizacja: 19.10.2011 22:45:16 przez bogumil
[#14] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #13

Mam te same kostki 2x128MB to EDO 3,3V
[#15] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #13

PS Czy dobrze widzę że pamięci są na 3.3V?

Tak, stabilizator 3,3V jest na każdej stronie PCB.
[#16] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@stachu100, post #15

Staszku tak odbiegając nieznacznie od tematu,to mój Blizz po przestawieniu na free config wykręca lepsze wyniki na tych pamiątkach,niż druga para 60 ns,które w takim ustawieniu powodują,że karta nie odpala.:)
[#17] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #13

A oto i film:

film

Co ciekawe teraz większa ilość komórek pamięci ma problem niż wczoraj. Jak widać problemy nasilają się pod koniec testu kiedy temperatura pamięci się zwiększy. Jeżeli problemy na nowych komórkach pamięci są w tym samym układzie pamięci co adres 786c5374 to żaden problem - i tak ten układ idzie do wymiany.
Gorzej jak to inny układ zaczyna wariować...
Ale ok. Interesuje mnie na razie usunięcie problemu spod adresu 786c5374. I za to przewidziana nagroda. OK
[#18] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@stachu100, post #17

Witam Staszku.
A nie próbowałeś zwyczajnie rozgrzać lutów? Miałem kiedyś podobny problem
na simie 64mb i zabawa z lutownicą od ręki ją wyleczyła.

PS. Chłopaki tak nawijacie że prostemu człowieczkowi się rozum gotuje :D
[#19] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@sebar27, post #18

Siemanko,
To była pierwsza rzecz jaką zrobiłem. Co jak co, ale z lutownicą sobie dobrze radzę.
[wyróżniony] [#20] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@stachu100, post #17

Według mnie komórka pamięci na szynie D0 pod adresem $786c5374 jest ciągle w stanie wysokim($1 zamiast $0, $b zamiast $a).Musi padł tranzystor dla tej komórki pamięci.
Dla tego SIMMa będzie pod adresem $6c5374.
Pozostałe błędy nie są powtarzalne czyli nie musi to być pamięć.
PS Gdyby Staszek podał wynik jako $00000001 nie byłoby tego całego zamieszania;).
Pozdrawiam Bogumił
[#21] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #20

Dzięki Bogumił, w takim razie sprawdzę do którego układu idzie linia D0 i go wytentego.
I podawałem dokładnie to co widziałem na ekranie.
[#22] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@stachu100, post #21

Teraz to wiem. Miałeś podaną liczbę szestnastkową a ja o tym nie wiedziałem i brałem ją jako dwójkową:).
Pozdrawiam Bogumił
[#23] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@stachu100, post #15

Czy może sprawdzałeś tą kość z Blizzardem 1230 lub 1240?
Oba procesory chodzą na 5V a to może uszkodzić pamięć wg dokumentacji.
Pozdrawiam Bogumił
[#24] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #23

Nie; tylko z 1260.
[#25] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #13

Zapomniałeś chyba że Amiga zapisuje dane w pamięci w formacie BABA a nie ABAB, napis "AMIGA. "będzie w zrzucie pamięci wyglądał w ten sposób MAGI.A, więc sądzę, że jest to D8 (w najgorszym wypadku D0 o czym mówiłem już na początku wątku) .


Stachu, metoda zamieniania linii danych , to nie jest jakaś tam pracochłonna czynność, a jakbyś zobaczył, ze wychodzą same przeplatańce zamiast równych ścieżek, to sam byś tak zrobił, w przypadku zamiany bitów w bajcie nie trzeba robić nic, a w przypadku zamiany bajtów trzeba pamiętać również o zamianie linni CAS danego bajta i to wszystko.

Ostatnia aktualizacja: 21.10.2011 14:49:24 przez rafgc
[#26] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@rafgc, post #25

Według mnie program testowy powinien odwoływać się bezpośrednio do pamięci z pominięciem systemu. A to jak system zapisuje dane do pamięci nie powinno mieć znaczenia. Choć po tym jak przez cały dzień wyjmowaliśmy silnik zamiast przez godzinę, bo nikt nie pomyślał o serwisie, już nic mnie nie zaskoczy.
Pozdrawiam Bogumił
[#27] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@bogumil, post #26

Dane w kickstarcie są zamienione ze sobą miejscami, zanim wgram wsad do eprom/flash muszę zastosować opcję "byte swap" która powoduje właśnie zamianę ABAB na BABA, dlatego myślę, że ta sama zasada dotyczy danych w pamięci, zdaje się, że Big Endian (spsosób w jaki procesor zapisuje dane w pamięci) to właśnie powoduje, jeśli weźmiesz cyfrę 1 zapisaną jako WORD to będzie ona wyglądać tak: 00 01, wartość 00 zostanie zapisana do komórki o adresie 0 a 1 do komórki o adresie 1 (zapis od lewej do prawej). Tak czy inaczej D0 i D8 to całkiem przyzwoity wynik w porównaniu do 32 linii danych.

Nie wykluczam, że mogę się mylić, ale nie znam nikogo, kto mógłby definitywnie zaprzeczyć lub potwierdzić to co piszę.

Ostatnia aktualizacja: 22.10.2011 00:12:53 przez rafgc
[#28] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@rafgc, post #27

Tak sobie teraz myślałem, że jeśli procesor wykonuje operacje na DWORDach, to ten bit tak naprawdę znajdzie się na linii D24, bo najmniej znaczący bajt jest zapisywany na czwartej pozycji :)
[#29] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@rafgc, post #28

heh wezcie sie zdecydujcie :) bo Stachu wpada w szewska pasje :P
[#30] Re: Pomoc potrzebna przy obliczaniu numeru linii danych

@HOŁDYS, post #29

im głębiej w las tym ciemniej, musiałbym sprawdzić jak są podłączonie linie danych kickstartu do procesora, na bank w kickstarcie są zamienione miejscami bajty na poziomie WORD a wg Big Endian wartość 00 00 00 01 będzie zapisana w pamięci tak jak się patrzy, czyli 01 w czwartej komórce. Teraz dopiero "zatrybiłem" dlaczego Motorola ma w swoich datasheetach oznaczone bajty na liniach danych wg następującego nazewnictwa: D0-D7 - OP3, D8-D15 - OP2, D16-D23 - OP1 i D24-D31 - OP0, więc wygląda na to, że będzie to linia D24 procesora tak jak to błędnie wyliczył bugumił na poczatku :)

Ostatnia aktualizacja: 22.10.2011 11:07:56 przez rafgc
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem