48_50.PDF

(82 KB) Pobierz
Sterownik napędu CD-ROM, część 4 - AVT-5078
Sterownik napędu CD−ROM
P R O J E K T Y
Sterownik napędu
CD−ROM, część 4
AVT−5078
Opis poleceÒ ATAPI
Przedstawiamy opis poleceÒ
ATAPI. Naleøy pamiÍtaÊ o†tym, øe
s¹ one zawsze 12-bajtowe, a†ze
wzglÍdu na oszczÍdnoúÊ miejsca
niewykorzystane bajty zosta³y
w†tablicach pominiÍte (powinny
mieÊ zawsze wartoúÊ 00h).
1. TEST UNIT READY
Komenda bardzo przydatna.
Nie wykonuje ona øadnego dzia-
³ania, ale po jej wydaniu SK, ASC
i†ASCQ przyjmuj¹ wartoúci adek-
watne do aktualnego stanu urz¹-
dzenia.
2. REQUEST SENSE
Komenda zwraca dane doty-
cz¹ce aktualnego statusu/b³Ídu.
Bajt Opis
0 03h
4 Maksymalna długość transferu (16)
Ze zwrÛconych danych nas
interesuj¹ tylko pola ASC oraz
ASCQ. NapÍd zwraca nieokreúlo-
n¹ iloúÊ bajtÛw wiÍc dobrze jest
okreúliÊ limit.
Bajt Opis
2 − Sense Key
12 Additional Sense Code
13 Additional Sense Code Qualifier
W† tab. 7 przedstawiono najbar-
dziej uøyteczne i†najczÍúciej spo-
tykane kody ASC i†ASCQ.
3. INQUIRY
Zwraca informacje o†urz¹dze-
niu. Nie s¹ to zbyt poøyteczne
dane wiÍc zainteresowanych od-
sy³am do dokumentacji.
4. MECHANICAL STATUS
Zwraca informacje o†aktualnej
pozycji mechanizmu, oraz statusu
zmieniarki (rzadko wystÍpuj¹
CDROM-y obs³uguj¹ce wiÍcej niø
1†p³ytÍ).
Bajt 7 65 4 3 2 1 0
0 BDh
7 MSB Maksymalna długość transferu LSB
8
tywane w†normalnym napÍdzie.
Komenda zwraca 8†bajtÛw.
5. READ CDROM CAPACITY
Pozwala na odczytanie objÍtoú-
ci p³yty w†sektorach. Ten sam
efekt moøna uzyskaÊ za pomoc¹
komendy Read TOC . Jest wywo-
³ywana bez parametrÛw.
Bajt 7 65 4 3 2 1 0
0 MSB Całkowita liczba sektorów LSB
4 MSB Rozmiar jednego bloku w bajtach LSB
Obecnie nie używane – wartość powinna
zawsze mieć 2048
6. READ TOC
Pozwala na odczyt tabeli adre-
sÛw úcieøek. Nadaje siÍ takøe do
odczytu informacji o†p³ytach wie-
losesyjnych. Bior¹c pod uwagÍ
rzadkoúÊ wystÍpowania takich p³yt
omÛwiÍ tylko tradycyjny sposÛb.
Bajt 7 65 4 3 2 1 0
0
W†ostatniej czÍúci artyku³u
przedstawiamy dok³adny opis
poleceÒ ATAPI, za pomoc¹
ktÛrych moøna sterowaÊ
napÍdami CD-ROM.
Rekomendacje : prezentacja
o†niebagatelnych walorach
praktycznych - na podstawie
tego artyku³u moøna
zaprojektowaÊ w³asny
sterownik HDD/CD-ROM na
mikrokontrolerze AVR.
43h
1
MSF
2
Tryb (0!)
6 Początkowy nr ścieżki
7 MSB Maksymalna liczba bajtów do wysłania LSB
9 Tryb (0!) −
Numer úcieøki okreúla od ktÛ-
rej úcieøki chcemy rozpocz¹Ê od-
czyt tabeli. ZwrÛcone dane sk³a-
daj¹ siÍ z†nag³Ûwka:
Bajt 7 65 4 3 2 1 0
0 MSB Całkowita długość danych LSB
liczona od 3 bajtu
2 Numer pierwszej ścieżki
3 Numer ostatniej ścieżki
oraz 8†bajtowych blokÛw zawiera-
j¹cych dane kolejnych úcieøek:
Bajt 7 65 4 3 2 1 0
0 −
1 ADR − A/D Copy −
2 Numer ścieżki
4 MSB Adres pierwszego sektora ścieżki LSB
Bit A/D wskazuje czy jest to
úcieøka audio (0) czy z†danymi
(1). Bit Copy wskazuje na zabro-
nienie kopiowania (0) lub pozwo-
lenie (1). ADR wskazuje na dane
zakodowane w†subkanale Q†ñ
w†tym przypadku ma³o uøyteczne.
Kaøda p³yta posiada specjaln¹
úcieøkÍ oznaczon¹ numerem AAh.
Jej adres jest pocz¹tkiem Lead-
Outu , czyli jednoczeúnie okreúla
przestrzeÒ adresow¹ na jakiej mo-
øemy operowaÊ.
Tab. 7. Najczęściej spotykane kody
ASC i ASCQ
ASC ASCQ Opis
04 01
Przygotowywanie do
gotowości mechaniki
05 01
Błąd przy ładowaniu/usuwaniu
płyty
1A 00
Błędna długość listy
parametrów
20 00
Błędny kod komendy
21 00
Adres poza zakresem
24 00
Błąd w którymś z bajtów
komendy
26 02
Błędna wartość parametru
28 00
Zmieniono nośnik
29 00
Wykonano zerowanie
30 00
Niekompatybilny nośnik
Zwracane dane:
Bajt 7 65 4 3 2 1 0
2 MSB Aktualna pozycja LBA
30 01
Nieznany format nośnika
30 02
Błędny format nośnika
LSB
3A 00
Brak nośnika w napędzie
3
4
44 00
Wewnętrzny błąd urządzenia
53 02
Dozwolono usunięcie nośnika
Pozosta³e bajty zawieraj¹ infor-
macje o†liczbie slotÛw oraz statu-
sie mechanizmu nie s¹ wykorzys-
57 00
Nie można odczytać TOC
64 00
Błędna komenda dla tej
ścieżki
48
Elektronika Praktyczna 11/2002
1129217.001.png
Sterownik napędu CD−ROM
7. MODE SENSE
Bardzo rozbudowana komenda.
W†po³¹czeniu z† Mode Select s³uøy
do odczytu parametrÛw urz¹dze-
nia oraz jego konfiguracji. Posiada
4†strony ustawieÒ, my zajmiemy
siÍ tylko jedn¹: Capabilities and
Mechanical Status . Jest to strona
tylko do odczytu wiÍc nie moøe-
my w†niej nic modyfikowaÊ za
pomoc¹ Mode Select . Interesuj¹ca
moøe byÊ jeszcze strona Audio
Status , ale s³uøy ona tylko do
wyboru wyjúcia sygna³u (ma³o
ktÛry napÍd posiada wiÍcej niø
jedno wyjúcie).
Bajt 7 65 4 3 2 1 0
0 5Ah
2 0 Kod strony
7 MSB Maksymalna ilość danych LSB
jakie komenda może wysłać
Kod strony Opis
01h Obsługa błędów odczytu
0Dh Parametry CDROM−u
0Eh Parametry Audio CDROM−u
2Ah Możliwości + aktualny status
CDROM−u
Bajty strony wysy³anej przez
komendÍ zawsze s¹ poprzedzone
8-bajtowym nag³Ûwkiem:
Bajt 7 65 4 3 2 1 0
0 MSB
101 Mechanizm ładowania kartridży
(już nie spotykany)
PrÍdkoúÊ jest wyraøona w†kilo-
bitach na sekundÍ. Aby przeliczyÊ
t¹ wartoúÊ na prÍdkoúÊ w†ìra-
zachî naleøy skorzystaÊ z†proste-
go wzoru: prÍdkoúÊ = x/8/175.
Wynika z†tego øe prÍdkoúÊ 1x jest
rÛwna 175 kB/s.
8. PLAY AUDIO
Rozpoczyna odtwarzanie au-
dio. Dzia³a bezproblemowo
w†wiÍkszoúci urz¹dzeÒ. Dziwact-
wem ze strony konstruktorÛw jest
umoøliwienie odtworzenia tylko
65536 sektorÛw (ok. 14 minut).
Eliminuje to j¹ w†niemal wszys-
tkich zastosowaniach.
Bajt 7 65 4 3 2 1 0
0 45h
2 MSB Adres bloku od którego
Tab. 8. Kody rodzaju nośnika
Kod rodzaju
Opis
nośnika
00h
Nieznany typ nośnika
01h
120mm DANE
02h
120mm AUDIO
03h
120mm DANE + AUDIO
05h
80mm DANE
06h
80mm AUDIO
07h
80mm DANE + AUDIO
10h
CDR nieznany rozmiar
11h
120mm CDR DANE
12h
120mm CDR AUDIO
13h
120mm CDR DANE + AUDIO
15h
80mm CDR DANE
16h
80mm CDR AUDIO
17h
80mm CDR DANE + AUDIO
20h
CDRW nieznany rozmiar
21h
120mm CDRW DANE
22h
120mm CDRW AUDIO
23h
120mm CDRW DANE + AUDIO
LSB
25h
80mm CDRW DANE
rozpoczniemy odtwarzanie
7 MSB Liczba sektorów do odtworzenia LSB
9. PLAY AUDIO MSF
Zasada dzia³ania jest identycz-
na jak w†poprzedniej, lecz komen-
da wymaga podania adresu po-
cz¹tku i†koÒca odtwarzania w†for-
macie MSF.
Bajt 7 65 4 3 2 1 0
0 47h
3 początkowe M
4 początkowe S
5 początkowe F
6 końcowe M
7 końcowe S
8 końcowe F
10. PLAY CD
Komenda ta jest bardzo rozbu-
dowana i†posiada sporo opcji,
takich jak moøliwoúÊ wyboru wy-
júcia audio itp. Niestety øaden
z†testowanych napÍdÛw nie obs³u-
giwa³ tej komendy.
Bajt 7 65 4 3 2 1 0
0 BCh
1 − Oczekiwany typ MSF −
sektora
2 MSB Adres bloku od którego LSB
rozpoczniemy odtwarzanie
7 MSB Liczba sektorów do odtworzenia LSB
11 SPEED − Port 2Port 1 − Audio
SPEED: 0†odtwarzanie z†prÍdkoú-
ci¹ 1x, 1†- z†najwiÍksz¹ moøliw¹.
Port 1/2 : w³¹cz wyjúcia cyfrowe.
Audio : w³¹cz wyjúcia analogowe.
Typ sektora : patrz komenda Read CD.
11. STOP PLAY
Zatrzymuje odtwarzanie. Nie
ma øadnych parametrÛw.
12. PAUSE
Pozwala zawiesiÊ odtwarzanie:
Bajt 7 65 4 3 2 1 0
0
26h
80mm CDRW AUDIO
27h
80mm CDRW DANE + AUDIO
30h
Nieznany typ nośnika
70h
Tacka wsunięta, brak nośnika
71h
Tacka wysunięta
72h
Błędny format nośnika
Całkowita długość
LSB
8 − RESUME
Gdy Resume = 1, odtwarzanie
jest kontynuowane, gdy = 0†ñ
wstrzymane.
14. PREVENT/ALLOW MEDIUM
REMOVAL
Pozwala zabezpieczyÊ noúnik
przed usuniÍciem:
Bajt 7 65 4 3 2 1 0
0 1Eh
4 − LOCK
Gdy LOCK = 1†zapÍd blokuje
noúnik.
15. SEEK
Ustawia mechanikÍ nad okreú-
lon¹ pozycj¹. Komenda umoøliwia
np. odczytanie danych subkana³o-
wych okreúlonego sektora.
Bajt 7 65 4 3 2 1 0
0
danych (bez nagłówka)
2
Rodzaj nośnika
Bajt 7 65 4 3 2 1 0
0 − Kod strony (2Ah)
1 Długość strony (12h)
2 − Odczyt Odczyt
CDRW CDR
3 − Zapis Zapis
CDRW CDR
4 − Multi Mode 2 Mode 2CyfroweCyfroweWyjście CD
sesja Form Form wyjściewyjście analo− AUDIO
2 1 2 1 gowe
6 Typ mechanizmu − Komenda − Status Komenda
ładowania Eject blokadyblokady
8 MSB Maksymalna prędkość w kb/s LSB
12 MSB Wielkość buforu urządzenia w kB LSB
14 MSB Aktualna prędkość w kb/s LSB
W†bajtach 2...4 ustawienie da-
nego bitu rÛwna siÍ obs³udze
danej w³aúciwoúci. Bit CD Audio
wskazuje na moøliwoúÊ odtwarza-
nia audio. W†bajcie 6†bity 0 i†3
wskazuj¹ na obs³ugÍ komend. Trzy
najstarsze bity zawieraj¹ typ me-
chanizmu ³adowania noúnika:
Kod (bin) Typ
000
2Bh
2 MSB
Numer LBA sektora
LSB
16. START/STOP/EJECT
Pozwala na zatrzymanie/rozpÍ-
dzenie p³yty oraz na operowanie
tray'em.
Bajt 7 65 4 3 2 1 0
0 1Bh
1 − Tryb
4 Eject Start
Moøliwe operacje do wykona-
nia:
Eject Start Wykonana operacja
0
Szczelina do wsuwania płyty
001
Wysuwana tacka (najpopularniejsze)
0
Zatrzymaj dysk
010
Otwierane wieko (mechanizm
stosowany powszechnie
w Discmanach)
0
1
Rozpędź dysk, odczytaj TOC
1
0
Wysuń tackę
4Bh
1
1
Załaduj płytę (wsuń tackę)
Elektronika Praktyczna 11/2002
49
1129217.002.png
Sterownik napędu CD−ROM
17. READ
Pozwala na odczyt dowolnej
liczby sektorÛw:
Bajt 7 65 4 3 2 1 0
0 A8h
2 MSB Adres bloku od którego LSB
rozpoczniemy odczyt
6 MSB Liczba sektorów do odczytania LSB
Jeúli liczba sektorÛw = 0†wtedy
nie zostan¹†odczytane øadne da-
ne. IloúÊ bajtÛw w†sektorze jest
zawsze rÛwna 2048. Gdy zechce-
my odczytaÊ sektor o†innej d³ug-
oúci komenda wygeneruje b³¹d.
Dane s¹ wysy³ane w†postaci ci¹-
gu, nie s¹ niczym rozdzielone.
18. READ CD
Rozbudowana wersja komendy
READ. Pozwala odczytaÊ nie tylko
dane uøytkowe ale i†pozosta³e
informacje takie jak nag³Ûwki czy
pola synchronizacji.
Bajt 7 65 4 3 2 1 0
0 BEh
1 − Oczekiwany typ −
sektora
2 MSB Adres bloku od którego LSB
rozpoczniemy odczyt
6 MSB Liczba sektorów do odczytania LSB
9 Synch. Nagł. Dane EDC −
10 − Sub kanały
Dla nas takie dane jak nag³Ûw-
ki, synchronizacja oraz pola ko-
rekcji b³ÍdÛw s¹ bezuøyteczne
wiÍc nie bÍdÍ ich omawia³. Po-
dobnieø nie ma sensu odczytywa-
nie danych subkana³owych
w†czystej formie, skoro mamy do
tego celu specjalne komendy.
Przydatne natomiast moøe byÊ
pole typu sektora. Jeúli ktÛryú
z†odczytanych sektorÛw†nie jest
zgodny z†podanym przez nas ty-
pem to zostanie wygenerowany
b³¹d. Poniøej przedstawiam war-
toúci dla okreúlonych typÛw:
Wartość (bin) Typ
000 Wszystkie sektory są właściwe
001 CD AUDIO
010 Mode 1
011 Mode 2
100 Mode 2 Form 1
101 Mode 2 Form 2
19. READ CD MSF
Dzia³anie identyczne jak
w†przypadku poprzedniej komen-
dy z†tym øe do adresowania uøy-
wamy MSF i†okreúlamy zakres
sektorÛw do odczytu, a†ich nie
liczbÍ.
Bajt 7 65 4 3 2 1 0
0
4 początkowe S
5 początkowe F
6 końcowe M
7 końcowe S
8 końcowe F
Pozosta³e pola maj¹ identyczne
znaczenie.
20. READ SUBCHANNEL
Odczytuje informacje subkana-
³owe aktualnego sektora. Dostar-
cza informacji o†aktualnej pozycji,
pozycji relatywnej do pocz¹tku
úcieøki, numerze úcieøki, indeksie,
statusie odtwarzania audio oraz
dane o†úcieøce (rok nagrania, kraj,
numer seryjny).
Bajt 7 65 4 3 2 1 0
0
42h
12 MSB Aktualna pozycja relatywna LSB
do początku ścieżki
4/2 : düwiÍk czterokana³owy (1)/
dwukana³owy (0)
A/D : audio (0)/dane (1)
Copy : zabronione kopiowanie (0)/
dozwolone (1)
åcieøka : numer úcieøki aktualnie
odtwarzanej
Indeks : åcieøka moøe byÊ podzie-
lona na indeksy. Pauza rozdzie-
laj¹ca umieszczona na pocz¹tku
úcieøki zawsze posiada indeks
0. Domyúlny numer indeksu to
1. Zakres wynosi od 1†do 99.
Rzadko spotyka siÍ úcieøki na-
grane z†uøyciem indeksÛw. Tab-
lica zawartoúci w†ogÛle ich nie
uwzglÍdnia.
Aktualna pozycja : Nie wymaga
komentarza. Gdy aktualny sek-
tor jest pauz¹ wartoúÊ ta jest
ujemna. Jak zapisuje siÍ tak¹
liczbÍ? Przyk³ad liczby 8†bito-
wej (-128 do 127). Liczby od
0†do 127 s¹ wartoúciami dodat-
nimi a†od 255 do 128 wartoú-
ciami ujemnymi. Tak wiÍc ñ1†=
255, -2 = 254 itd. WartoúÊ
ujemna naszego adresu nie jest
okreúlona. Jeúli MSF = 1†to
wartoúci zawsze s¹ dodatnie.
Pozycja relatywna do pocz¹tku
úcieøki: jak wyøej z†tym, øe po-
zycja 0†jest pocz¹tkiem aktualnej
úcieøki a†nie p³yty.
Z†doúwiadczeÒ wynika, øe ta
druga wartoúÊ potrafi byÊ bardzo
rÛønie wyliczana przez rÛøne na-
pÍdy co powoduje k³opoty sterow-
nika z†kompatybilnoúci¹. Natomiast
obie liczby potrafi¹ takøe przy-
braʆna moment w†zupe³nie loso-
wym czasie bardzo dziwne war-
toúci (np. 11017340). W†dokumen-
tacji nic nie ma na ten temat,
a†przysporzy³o to mi wielu prob-
lemÛw.
Tryb informacji o†úcieøce (03h)
Bajt 7 65 4 3 2 1 0
4
1
MSF −
2 − SubQ −
3 Typ subkanalu do odczytania
6 Numer ścieżki
7 MSB Ilość danych do odebrania LSB
8
SubQ wskazuje czy komenda
ma wys³aÊ dane subkana³owe czy
tylko nag³Ûwek. Typy danych sub-
kana³owych przedstawiono poni-
øej:
Kod Opis
01h Aktualna pozycja
02h Numer katalogowy
03h Informacje o ścieżce
Numer úcieøki jest brany pod
uwagÍ tylko gdy typ danych =03h.
Komenda zawsze zwraca nag³Û-
wek przed w³aúciwymi danymi:
Bajt 7 65 4 3 2 1 0
1
Status Audio
2 MSB
Długość danych
LSB
(nie uwzględnia nagłówka)
3
W†tablicy poniøej pokazano
znaczenie kodÛw Status Audio :
Kod statusu audio Opis
00h Status audio nie obsługiwany
11h Trwa odtwarzanie
12h Odtwarzanie wstrzymane (pauza)
13h Odtwarzanie pomyślnie zakończone
14h Odtwarzanie zakończone
z powodu błędu
15h Brak operacji audio
Jeúli pole d³ugoúci danych jest
rÛwne 0†oznacza to brak dalszych
danych do wys³ania (bit SubQ =
0).
03h
5
4/2 A/D Copy −
8 OK
9 Kod kraju
11 Kod właściciela
14 Rok nagrania
16 Numer seryjny
Bit OK sygnalizuje øe dane s¹
poprawne. OK = 0†oznacza øe
napÍd nie potrafi odczytaÊ da-
nych lub subkana³ ich nie za-
wiera.
Micha³ Wysocki
mwsoft@satkabel.com.pl
Tryb pozycji (01h)
Bajt 7 65 4 3 2 1 0
4 01h
5 ADR 4/2 A/D Copy −
6 Numer ścieżki
7 Index
8 MSB Aktualna pozycja relatywna LSB
do początku płyty
47h
2
3
początkowe M
50
Elektronika Praktyczna 11/2002
 
Zgłoś jeśli naruszono regulamin