Serial Driver
Home Linux Kernel

Il sito si è trasferito a qui

the site has been moved here

 

Serial Driver

Scriviamo un semplice driver seriale per il nostro kernel.

Al più presto verrà pubblicato un articolo che spiega, passo dopo passo, come aggiungere al nostro kernel un driver seriale. In esso, verranno introdotti i concetti hardware e software per la programmazione di un chip UART. Verrà mostrato, inoltre, come ottenere una connessione seriale a una vera linux box ed eseguire in essa numerosi comandi bash.

 

a cura di Salvatore D’Angelo – koala.gnu@tiscalinet.it

 

Clicca qui per scaricare il codice sorgente.

 

Per effettuare il test del nostro codice è possibile usare bochs oppure due macchine (dove su una si fa girare il nostro kernel e sull'altra linux) collegate tramite cavo seriale null modem.

 

Test tramite bochs

-----------------------------

 

si avvii un terminale xterm e si digiti:

 

   tty

 

dovrebbe apparire una cosa del tipo pts/n dove n è un numero intero positivo qualsiasi.

Nel file .bochsrc si scriva:

 

   com1: enabled=1, dev=/dev/pts/n

 

A questo punto sul terminale xterm si digiti:

 

   sleep 1000000

 

Si avvii il kernel in bochs e tutto quello che verrà scritto su xterm sarà visibile sul terminale.

 

Nello step 5 i caratteri provenienti dalla seriale sono solo visibili sulla console 5 (quella dedicata alla comunicazione seriale). Per switchare alla console 5 si digiti CTRL-ALT-F5.

 

Purtroppo, per fare ciò in bochs è necessario eseguire un semplice workaround. Si posizioni il cursore del mouse nella finestra di bochs e si prema CTRL-ALT. Si  trascini il cursore fuori dalla finestra, si rilascino i tasti e si riposizioni il cursore del mouse nella finestra di bochs digitando poi F5.

 

Test tramite due macchine collegate via cavo

-------------------------------------------------------------------------

 

Supponiamo di avere due macchine A e B collegate via cavo null modem. A conterrà un sistema operativo linux con minicom installato sopra, mentre su B verrà fatto girare il nostro kernel che utilizza come parametri di connessione: 38400 bps 8N1.

 

Si avvii il nostro kernel su B e si faccia partire minicom su A. Si configuri minicom in modo tale che abbia gli stessi parametri di connessione del nostro kernel. A questo punto tutto quello che verrà digitato in minicom sarà visibile nel nostro kernel.

 

Si tenga presente che nello step 5 per visualizzare i dati provenienti dalla seriale bisogna switchare sulla console 5 (cioè la console dedicata alla comunicazione seriale).

 

Volendo avviare una shell bash su B, si esegua la seguente procedura (questa procedura è valida solo per lo step 5):

 

1. premere CTRL-ALT-F5 su B per switchare alla console 5;

2. su A loggarsi come superuser;

3. Su A si apra una sessione bash e si digiti il comando:

 

   setsid agetty 38400 ttyS0 ansi

 

4. Su B verrà visualizzato il prompt di login. Si inserisca user id e password.

5. A questo punto è possibile iniziare a lavorare da remoto sul nostro sistema linux.