Domanda

Ho appena scritto un driver RTC per un chip NXP RTC sulla mia tavola, funziona benissimo. Questo chip ha anche qualche tamponata RAM che mi piacerebbe mettere a disposizione un'applicazione utente. Il quadro RTC non supporta questa. E 'solo 512 byte ma sto gettato tra il fare un driver CHAR ricercabile o un driver BLOCK in piena regola. Non ho mai fatto un driver di blocco prima, ma sembra richiedere un po 'più informazioni rispetto a un semplice CHAR.

I potrebbe anche interfacciarsi con IOCTLS, ma che non si sente pulita come avrebbe potuto essere. Cosa si sente come il modo migliore per rendere questi byte a disposizione spazio utente?

[EDIT] Ho dimenticato di dire che che il chip RTC è appesa fuori una porta I2C, non è mappato in memoria, quindi non rende un buon candidato per mmaping. [/ EDIT]

È stato utile?

Soluzione

driver blocchi sono solo per i dispositivi che assomigliano a unità disco. Avete intenzione di mettere un filesystem sul tuo 512 byte? No? Ne fanno un dispositivo a caratteri.

Si potrebbe semplicemente farlo come gli altri piloti hanno. Scopri drivers/char/nvram.c. Questo crea un dispositivo char si può open(), read(), write(), lseek() e close().

Altri suggerimenti

Credo un driver di dispositivo a caratteri attuazione mmap dovrebbe essere adeguato. coperture Linux unità del dispositivo che nel capitolo 15.

Modifica:

Bene, I2C è un bus seriale, quindi mmap non è un'opzione. Farò riferimento a essenziali Linux Device Drivers libro. Credo che abbia un I2C EEPROM driver di periferica char campione nel capitolo 8. Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top