Procedura obslugi ATA - problem
Masz problem? Zapytaj na forum elektroda.pl
From: "Killer01" <killer_at_nospam_zsk.lub.pl>
Subject: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 12:36:06 +0100
Chce zczytac informacje z dysku twardego za pomoca polecienia IDENTIFY
DEVICE. Robie to w ten oto sposob:
1. restet urzadzenia
2. odczytuje rejestr stausu z hdd
3. sprawdzam czy bsy=0
4. jezeli tak to zapisuje do rejestru DEVICE/HEAD REGISTER wartosc 10100001B
tzn wybor urzadzenia master
5. ponownie odczytuje rejsetr statusu oraz sprawdzam czy bsy=0 oraz drdy=1
6. jezeli tak to zapisuje do rejestru komend wartosc ECh tzn. kod polecenia
IDENTIFY DEVICE
7. Ponownie sprawdzam bit bsy
8. jezei bsy=1 to odczytuje z rejestru danych 256 bajtow.
No i pierwszy problem:
Bit drdy ciagle ma wartosc "1" nie wiem dlaczego, wiec pominalem
sprawdzanie jego.
Przy odczycie z rejestru danych dostaje jakies glupoty, a mianowicie jak
odczytuje nazwe modelu (slowa 27-46) hdd to mam warosci 0h,0h,0h, itd. co
jakis czas wskoczy znak '+'.
MOze cos robie nie tak?
Prosze o pomoc.
Moze napisalem zle procedury do zapisu i odczytu z rejestrow hdd?
Oto one:
GET_STATUS_REGISTER:
SETB DIOR
SETB DA0
SETB DA1
SETB DA2 ;ODCZYT REJESTRU STATUSU
CLR DIOR ;POWODUJE ODCZYTANIE REJESTRU STATUSU
MOV A,P0
SETB DIOR
RET
;---------------------------------------------------------------
SET_MASTER:
MOV P2,#0
SETB DIOW
CLR DA0
SETB DA0
SETB DA0
CLR DIOW
MOV A,#10100001B
MOV P0,A
SETB DIOW
RET
;--------------------------------------------------------------
WRITE_COMMAND:
MOV P2,#0
SETB DIOW
SETB DA0
SETB DA1
SETB DA2
CLR DIOW
MOV P0,A
SETB DIOW
RET
;--------------------------------------------------------------
READ_REGISTER_DATA:
SETB DIOR
CLR DA0
CLR DA1
CLR DA2
CLR DIOR
MOV A,P0
MOV B,P2
SETB DIOR
RET
--
---------------------------------
Pozdrawiam
Killer
killer_at_nospam_zsk.lub.pl
GG: 4165465
|
|
|
|
\/
========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!fu-berlin.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Michał Wysocki" <mwsoft_at_nospam_satkabel.com.pl>
Subject: Re: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 13:43:30 +0100
cze..
troszkę namieszaleś...
1. reset
2. Sprawdzenie czy Bsy = 0 i Drdy = 1
3. ustawienie mastera
4. sprawdzanie czy bsy = 0 i drdy = 1
5. Zapis komendy ECh
6. Czekanie aż BSY = 0, DRQ = 1 i DRDY = 1
7. Odczyt 256 słów 16 bit
Ty w ogóle nie sprawdzaleś czy napęd jest gotowy do wysłania danych (flaga
DRQ, bit 3 w rej. statusu)... poza tym zawsze gdy chcesz coś odebrać od
napędu, lub zapisać flaga BSY musi być równa 0..
pozdro
========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Killer01" <killer_at_nospam_zsk.lub.pl>
Subject: Re: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 14:29:51 +0100
BSY musi być równa 0..
no i tak jest
a drq.... to przeoczylem.
sprawdze, moze cos to pomoze.
--
---------------------------------
Pozdrawiam
Killer
killer_at_nospam_zsk.lub.pl
GG: 4165465
========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Michał Wysocki" <mwsoft_at_nospam_satkabel.com.pl>
Subject: Re: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 14:38:15 +0100
a drq.... to przeoczylem.
sprawdze, moze cos to pomoze.
ale Ty sceptyk jesteś ;)
na 100% pomoże :) bo zanim napęd nazbiera sobie do bufora dane które chcesz
odebrac minie nawet kilka ms.. a Ty odczytujesz od razu i dlatego dostajesz
same zera.. ta flaga jest bardzo ważna :)
pozdro
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Killer01" <killer_at_nospam_zsk.lub.pl>
Subject: Re: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 15:44:33 +0100
1. reset
2. Sprawdzenie czy Bsy = 0 i Drdy = 1
3. ustawienie mastera
4. sprawdzanie czy bsy = 0 i drdy = 1
5. Zapis komendy ECh
6. Czekanie aż BSY = 0, DRQ = 1 i DRDY = 1
7. Odczyt 256 słów 16 bit
w pkt. 6 flaga DRQ caly czas ma wartosc 0. Dzieje sie tak na kazdym dysku.
Procedura zapisu raczej jest dobra:
WRITE_COMMAND: ;zapis komendy z acc
SETB DIOW
SETB DA0
SETB DA1
SETB DA2
CLR DIOW
MOV P0,A
SETB DIOW
RET
--
---------------------------------
Pozdrawiam
Killer
killer_at_nospam_zsk.lub.pl
GG: 4165465
========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!mimuw.edu.pl!news.mimuw.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Michał Wysocki" <mwsoft_at_nospam_satkabel.com.pl>
Subject: Re: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 16:01:43 +0100
Ja proponuje:
WRITE_COMMAND: ;zapis komendy z acc
SETB DIOW
SETB DA0
SETB DA1
SETB DA2
MOV P0,A
CLR DIOW
NOP
NOP
NOP
SETB DIOW
RET
i dla pewnosci daj pullupy na calym P0
taki sposób odczytu indentyfikatora dziala u mnie wiec cos masz uwalone w
programie albo sprzęcie..
pozdro
========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Killer01" <killer_at_nospam_zsk.lub.pl>
Subject: Re: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 17:57:44 +0100
i dla pewnosci daj pullupy na calym P0
pullupy na P0 sa, a co do reszty to jeszcze po kombinuje (sprawdze sciezki,
pomysle nad programem jeszcze, slowem cos sprobuje jeszcze wymyslec).
jezeli Pan by mial procedurki do obslugi ATA w asm to bym prosil
--
---------------------------------
Pozdrawiam
Killer
killer_at_nospam_zsk.lub.pl
GG: 4165465
========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!mimuw.edu.pl!news.mimuw.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Michał Wysocki" <mwsoft_at_nospam_satkabel.com.pl>
Subject: Re: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 18:29:59 +0100
pullupy na P0 sa, a co do reszty to jeszcze po kombinuje (sprawdze
sciezki,
pomysle nad programem jeszcze, slowem cos sprobuje jeszcze wymyslec).
jezeli Pan by mial procedurki do obslugi ATA w asm to bym prosil
jaki Pan ;) wiecej luzu :)
w ASMie nie mam.. pisalem tylko w bascomie - dziala dokładnie wedlug
powyższego przepisu wiec nie bardzo wiem co moze być nie tak :( sprawdz też
czy nie pomyliłeś się przy wyborze bazy rejestrow - ja tak zrobilem i
dziwowałem sie dlaczego rejestry mają nie takie wartości jak powinny ;]
pozdro
PS
moje GG 73657
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Killer01" <killer_at_nospam_zsk.lub.pl>
Subject: Re: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 22:12:30 +0100
taki sposób odczytu indentyfikatora dziala u mnie wiec cos masz uwalone w
programie albo sprzęcie..
DZIALA!!!!!!
Mialem maly blad w programie, a mianowice sprawdznie flafi DRQ zapetlalo sie
jezeli drq=1 a nie 0 tzn bylo JC SPRAWDZ_FLAGI.a powinno byc JNC.
no i mialem bledy na schemacie i plytce:
!DASP bylo zwarte do GND ;nie wiem czy to tez moglo miec jakis wplyw
CSEL bylo w powietrzu ;j.w
DD4 bylo zwarte z DD12 ; to moglo juz miec wply
Dzieki za pomoc
--
---------------------------------
Pozdrawiam
Killer
killer_at_nospam_zsk.lub.pl
GG: 4165465
========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Killer01" <killer_at_nospam_zsk.lub.pl>
Subject: Re: Procedura obslugi ATA - problem
Date: Sat, 22 Mar 2003 14:25:46 +0100
Bit drdy ciagle ma wartosc "1" nie wiem dlaczego,
z tym bitem juz jest ok. Poprostu zanim odczytalem stan portu nie ustawilem
na nim wartosci 255.
ale z reszta jest lipa
--
---------------------------------
Pozdrawiam
Killer
killer_at_nospam_zsk.lub.pl
GG: 4165465
========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai