driver del kernel di Linux: quale modello per l'accesso NVRAM?
-
01-10-2019 - |
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]
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.