Librerie per la gestione del bus VME

Le librerie VME Universe II della Tundra sono un insieme di operazioni standard che permettono la gestione di moduli VME. Analizzeremo le librerie dello standard IEEE-1014-1987 che permettono la comunicazione e la gestione di moduli elettronici standard 6U/3U su bus VME.

Introduzione

I moduli VME (6U, 3U) risiedono in un crate di 21 slot; al primo slot c’è un modulo dotato di CPU per la gestione del bus (system controller o crate manager). Ciascun utente opererà, via software, su tutti i moduli del crate attraverso il system controller. Il system controller è un semplice computer con caratteristiche opportune da poter gestire le funzionalità che si richiedono al sistema (figura 1).

Figura 1. System controllerFigura 1. System controller

Figura 1: System controller

Un esempio di system controller è il VMIVME-7805 con le seguenti caratteristiche:

  • Processore Intel Pentium 4 a 2.2 Ghz;
  • 512 kByte di cache;
  • 32 kbyte di SRAM;
  • Linux/Window Operatine System;
  • IDE interface;
  • 1 Gbyte di memoria CompactFlash;
  • Accesso al bus: A24, A32, A16.

Attraverso il bus VME, descritto opportunamente via software per mezzo delle librerie standard (Universe Library), l’utente comunicherà con i moduli connessi nel crate; ovvero potrà leggere e/o scrivere da/su un qualunque registro o area di memoria e gestirli in una fase di acquisizione dati.

Le principali caratteristiche del Universe II sono:

  • Alta performance a  64  bit (VME64x);
  • Logica interrupt flessibile;
  •  Supporto per RMWs, ADOH.

CARATTERISTICHE PRINCIPALI

Elenchiamo le principali librerie VME universe che servono per la lettura e/o scrittura di/su registro o area di memoria. Ci sono anche librerie per la gestione dell’interrupt.

  • vme_bus_handle_t: identificazione del bus VME mediante un puntatore.
  • vme_init: inizializzazione del bus VME.
  • vme_dma_read(): lettura di dati di un area di memoria
  • vme_master_window_create(): creazione di una interfaccia (“window”) con il registro del modulo elettronico che si vuole leggere.
  • vme_master_window_map(): lettura dell’informazione contenuta nel registro

Ogni operazione, per esempio la lettura di un registro, necessita di questi comandi posti in un codice di programmazione. Le librerie VME universe necessitano di librerie standard C e sono compatibili  con Linux Kernel 2.6.x. Concentriamoci sulla lettura di un registro di un modulo VME utilizzando queste librerie. Le operazioni bse modo:

  • Inizializzazione del  bus: vme_bus_handle_ t
  • Apertura di una “finestra”  per poter leggere i dati: vme_master_window_create. La “finestra”  è un’interfaccia con il bus VME. Il concetto di “finestra” è rappresentato in figura 2.
  • Lettura del dato digitale contenuto nel registro: vme_master_window_map.
Figura 3. Significato della “finestra”

Figura 2: significato della “finestra”

SOFTWARE PER  LA  GESTIONE DEL  BUS VME

Il software necessita di librerie standard del VME e di librerie standard del C (vedi figura 3 ); tutte queste librerie sono incluse all’interno del software stesso.

Figura 4. Obiettivo del Software

Figura 3. Obiettivo del Software

Lo scopo principale è stato quello di creare delle funzioni e strutture, di facile gestione per l’utente, partendo da queste librerie. Le funzioni e le strutture sono alla base della programmazione. Vediamo alcune proprietà di esse:

  • Una funzione è una sezione di codice contraddistinta da un nome. Utilizzando tale nome in un’altra parte del programma principale (chiamante) si possono eseguire le istruzioni ontenute all’interno della funzione.
  • Una funzione è indipendente. Esegue il proprio compito  senza interferire con le altre parti del programma.
  • Una funzione esegue un compito specifico. Un compito  è un particolare obiettivo che occorre raggiungere per far sì che il programma continui le sue operazioni.
  • Una funzione restituisce opzionalmente un valore al programma chiamante.
  • Una struttura, invece, è un metodo di memorizzazione dei dati orientato a facilitare il lavoro del programmatore, in quanto consente di adattare perfettamente i dati alle esigenze del programma.

L’obiettivo è quello di poter comunicare con questi moduli leggendo e/o scrivendo da/su un qualunque loro registro e gestirli opportunamente in una fase di acquisizione dati. Disponiamo di librerie proprie del VME che permettono di eseguire queste operazioni. Il nostro compito principale  è  creare,  partendo  da  queste  librerie, delle strutture e funzioni di livello superiore facilmente gestibili anche da un utente non esperto (vedi figura 4).

Figura 5. Struttura del Software

Figura 4. Struttura del Software

Il software realizzato permette la comunicazione e la gestione di qualsiasi modulo che opera su bus VME caratterizzato da una informazione (parola digitale o dato) di uscita di 8,16,32 e 64 bit. La flessibilità del software permette di renderlo adatto per qualsiasi tipo di accesso al bus VME. Esempi di funzioni che sono state create sono: read vme(...) e write vme(...). La prima legge il contenuto di un registro la seconda scrive una parola su un registro.

Struttura dati

La struttura dati è stata organizzata nel seguente modo:

  • A livello inferiore sono stati definiti i registri di un modulo elettronico (componenti).
  • A livello intermedio sono stati definiti,  invece, insieme di registri appartenenti a vari moduli (equipment).
  • A livello superiore sono stati definiti, infine, insieme di più equipment (trigger).

Ad ogni livello è stata definita una struttura dati. La struttura dati deve contenere le seguenti informazioni per il bus VME:

  • Tipo di dato digitale;
  • Tipo di accesso;
  • Informazione sul registro (misura, l’indirizzo);
  • Tipo di operazione (lettura, scrittura);
  • L’informazione sul dato digitale che si vuole scrivere;
  • Informazione sul bus VME che deve essere inizializzato;

Struttura delle funzioni

Per mezzo delle strutture dati sono state create funzioni opportune e di facile gestione che eseguissero determinati operazioni, per esempio la lettura di un registro. Esempi di funzioni sono:

  • Funzione per l’inizializzazione del bus VME;
  • Funzione per la lettura e scrittura di/su un registro;
  • Funzione per la lettura e scrittura di/su un area di memoria;

Conclusioni

L’utilizzo  di  queste  funzioni rende più semplice il lavoro dell’utente senza conoscere dietro le librerie VME universe. Un ulteriore sviluppo di questo software è quello di renderlo disponibile attraverso un’interfaccia Web per  la gestione  di  bus  VME. In  questo  modo l’utente può gestire i moduli VME attraverso una semplice pagina Web.

 

 

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS

Una risposta

  1. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 17 agosto 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS