GNU/Linux >> Linux Esercitazione >  >> Linux

Posso ottenere funzionalità simili agli interrupt nello spazio utente Linux?

Se capisco la tua domanda, questo articolo suona come quello che stai cercando. L'articolo è intitolato:Driver di dispositivo nello spazio utente.

estratto

Driver UIO

Linux fornisce un framework UIO (User I/O) standard per lo sviluppo di driver di dispositivo basati sullo spazio utente. Il framework UIO definisce un piccolo componente dello spazio kernel che esegue due attività chiave:

  • un. Indica le aree di memoria del dispositivo nello spazio utente.
  • b. Registrati per gli interrupt del dispositivo e fornisci un'indicazione di interrupt allo spazio utente.

Il componente UIO dello spazio kernel espone quindi il dispositivo tramite una serie di voci sysfs come /dev/uioXX. Il componente dello spazio utente cerca queste voci, legge gli intervalli di indirizzi del dispositivo e li mappa nella memoria dello spazio utente.

Il componente dello spazio utente può eseguire tutte le attività di gestione del dispositivo, incluso l'I/O dal dispositivo. Per gli interrupt, tuttavia, deve eseguire un blocco read() sulla voce del dispositivo, il che fa sì che il componente del kernel metta in sospensione l'applicazione dello spazio utente e la riattivi una volta ricevuto un interrupt.

Non l'ho mai fatto prima, quindi non posso offrirti molte più indicazioni di questa, ma ho pensato che potrebbe esserti utile per la tua ricerca.


Pensando sulla stessa linea di @RBerteig, BeagleBone Black contiene microcontrollori a 32 bit PRU (Programmable Real-Time Unit).

Non sembra che ci sia un'enorme comunità che utilizza queste cose a piena capacità. Non sono nemmeno sicuro che ci sia un buon compilatore per questo. I vantaggi rispetto a un assemblaggio di un SBC e un microcontrollore o una scheda del microcontrollore sono che il codice PRU può provenire dall'ARM principale e la memoria condivisa è piuttosto conveniente.

Non posso dire di averlo usato, o anche di aver eseguito più di alcuni esempi sui miei BeagleBone Blacks, ma le esigenze espresse in questa domanda potrebbero essere una di quelle cose che possono spingere uno sviluppatore con queste esigenze verso il Nero e lontano dal Pi.


Linux
  1. Che cos'è un utente Linux?

  2. Come puoi identificare il chipset di un dispositivo USB in Linux?

  3. Di quanti gruppi Unix può far parte un utente?

  4. Impossibile sbloccare l'account utente Linux

  5. Come posso cercare un nome utente per id in Linux?

Su Command in Linux (Cambia utente)

Comando ID in Linux

Comando Usermod in Linux

Come cambiare utente su Linux

Come posso monitorare il carico del disco rigido su Linux?

Come posso determinare se un dispositivo iscsi è un filesystem Linux montato?