Newsgroup: it.comp.os.dos
Titolo: Block Device Driver

Salve a tutti.
Sto scrivendo un device driver per la gestione di un lettore di compact 
flash.
Non ho problemi ad accedere all'unita' ma non riesco a rendere "attivo" il 
driver, nel senso che sembrerebbe che la funzione init() del driver termini 
correttamente, con tutti i valori del request header a posto, ma il DOS non 
mi fa vedere la lettera dell'unita' aggiunta.
Ho il libro Writing MS-DOS Device Driver di Robert S. Lai, ma non mi e' di 
molto aiuto.
Ho anche provato la strada di un altro Device Driver Toolkit .... ma niente 
da fare.
C'e' qualcuno che si sia mai cimentato nella scrittura di un block device 
driver e che sappia darmi una dritta ??
Grazie anticipatamente.
Fab
PS: ovviamente ho gia' googlato come un matto...
 

 driver e che sappia darmi una dritta ??
Direttamente non ti so aiutare. Posso suggerirti di cercare negli archivi
simtel esempi di block device driver con sorgenti, e vedere come hanno
fatto altri a fare la stessa cosa. Nei sorgenti di FreeDOS c'č
ATAPICDD.SYS, che č un driver per CD, potrebbe essere un buon esempio.
Un'altra cosa che puoi fare č scrivere nelle mailing list di FreeDOS,
magari qualcuno ha un'idea.
Ciao
---
http://www.mariottini.net/roberto/
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 magari qualcuno ha un'idea.
Grazie Roberto, purtroppo i driver per CD sono realizzati come device di 
caratteri perche' i CD sono visti dispositivi che generano uno stream di 
dati mentre la mia necessita' era di scrivere un driver per dispositivo a 
blocchi.
Ho provato a seguire la traccia di un ram disk .... ma dopo averlo 
modificato non riesco a far vedere al dos il nuovo drive.
Vabbe'....
Ritentero'....
E ritentero'....
Se senti qualcosa in FreeDOS (avevo gia' postato un quesito simile sulla 
mailing list....) fatti sentire qui.
Ciao e grazie.
Fab

 modificato non riesco a far vedere al dos il nuovo drive.
  Scusa se ti chiedo una cosa  magari banale, ma m'era venuta in mente
gia` al  tuo primo messaggio:  ma 'sto  lettore e` USB?  Perche' l'USB
il  dos  `puro'  mica lo  vede,  e  ci  vuole  un driver  `anche'  per
l'interfaccia USB...
  E poi, scrivevi  anche "Non ho problemi ad  accedere all'unita`": in
che  senso? Riesci  a leggere  e scrivere?  C'e` qualcosa  che non  mi
torna...
-- 
Cio` che ho scritto, ho scritto.

 torna...
Non ho problemi nel senso che sto usando delle funzioni che accedono 
direttamente al controller IDE, per cui posso leggere e scrivere 
DIRETTAMENTE all'unita' specificando pero' cilindro, testina e settore 
(CHS).
Questo accesso lo posso fare sia se l'unita' e' stata vista dal BIOS sia se 
non e' stata vista (BIOS non impostato per vedere l'unita' o Compact Flash 
inserita a caldo dopo il boot).
Il motivo per cui sto cercando di scrivere il Device Driver e' quello di 
usare la gestione del file system del DOS senza dover riscrivere la gestione 
di FAT e directory; se ci riuscissi, il DOS vedrebbe una unita' aggiuntiva e 
per leggere e scrivere su questa unita' utilizzerebbe le chiamate standard 
di un Block Device Driver (ovvero la BuildBPB, la CheckMedia, la Input e la 
Output).
Il mio problema non e' quindi accedere all'unita' ma convincere il DOS a 
vedere il mio device driver....
All'avvio viene eseguita correttamente la INIT del device driver, viene 
letto il master boot record della schedina per accedere alla BPB della 
schedina stessa, viene comunicato tutto cio' al DOS.... ma poi non mi trovo 
l'unita' accessibile come D: .....
Cia'
Fab

 accessibile come D: .....
  Gia`... pero`  mi viene in  mente che se  tu monti un  hd `vergine',
Bios e Dos lo `vedono', ma se  non e` partizionato e formattato il dos
mica te lo da` accessibile...
  Ergo  (ma magari  dico  una  cazzata) se  deve  essere gestito  come
dispositivo a blocchi, non e` che magari con fdisk e format?...
  Cmq, sono andato a dare un'occhiata  al libro di S. Lai (ebbene si`,
ce l'ho anch'io, pero` in italiano...  cazzo! 68.000 lire nel 1990! ),
e al  capitolo 8.8 spiega  come modificare il  driver di Ram  Disk, ma
questo  mi par  di  capire che  tu  lo abbia  gia`  tentato. Pero`  al
capitolo 9  c'e` tutto per  poter costruire un  Driver "Universale"...
Hai provato con quello?
  (Certo che  fa uno strano effetto  sapere che ci sia  ancora qualche
pazzoide che scrive driver per dos... bella storia!)


 mailing list....) fatti sentire qui.
Io posso provare a sentire, ma se mi dici dove poter trovare i sorgenti è
più probabile che otterrai una risposta.


 più probabile che otterrai una risposta.
Nessun problema per i sorgenti, sono reperibili a questo indirizzo:
http://xoomer.virgilio.it/kaymann/cfdrv.zip
Il file zip contiene la libreria, l'include, il sorgente ed un batch per la 
compilazione con BC 3.1
C'e' anche il SYS compilato.
Quando parte, visualizza un numero esagerato di messaggi di debug ... anche 
quello che legge dall'unita' collegata come slave sul primo canale IDE, 
qualunque cosa essa sia (un altro disco fisso o come nel mio caso una 
compact flash.... questo ovviamente non fa alcuna differenza per il driver!)
Fab

 
http://xoomer.virgilio.it/kaymann/cfdrv.zip
Mi dice:
Forbidden
You don't have permission to access /kaymann/cfdrv.zip on this server.


 You don't have permission to access /kaymann/cfdrv.zip on this server.
Che strano!
Boh....
L'ho messo qui:
http://kayman.altervista.org/software/cfdrv.zip
Mi spiace, riprova....

 pazzoide che scrive driver per dos... bella storia!)
Grazie per il "pazzoide"... lo apprezzo sinceramente come complimento.
Premesso che visto che ho attinto a destra e a manca riguardo codice,
spiegazioni, esempi & co., semmai ci riusciro' mettero' a disposizione
di tutti il device driver (se lo vorranno, nel progetto FreeDOS).
Detto questo, il mio intento non e' solo filantropico, questo driver
mi serve per un progetto/lavoro che usa un PC industriale nel campo
dell'automazione.
Cia'
Fab