Quando si utilizza Android, sto perdendo i dati su un USB Flash in entrata torrente che non perdo durante la lettura lo stesso dispositivo/flusso in Windows. (So che Android non è un sistema operativo in tempo reale, ma nessuno dei due è Windows e Windows non ha problemi a "stare dietro" con i dati.)Android - Perdere in entrata (Hi-Speed) dati USB
I dati arrivano a circa 3,5 MB/sec utilizzando un Chip FTDI 2232H che ha un buffer 4K incorporato. Le chiamate bulk_transfer in libusb possono richiedere 16K alla volta, quindi Android deve raccogliere i contenuti del buffer USB ogni 4 ms circa.
Ho provato: scrivere in Java e in C, innalzando la priorità del thread (e/o del processo) alle sue più alte, sincronizzazioni e procedure asincrone, e ho anche passato un buffer separato per ogni lettura USB in modo da non anche a copiare i dati tra letture successive. (Non è in corso alcuna raccolta di dati inutili durante il trasferimento.) Ho solo bisogno di bufferizzare 20 MB di dati, quindi è tutto in RAM.
Ancora, Android è 'non andare in giro' per i dati USB, a volte in attesa finché 12ms tra letture, causando un po 'di perdita di dati.
Qualcuno ha qualche idea? DMA? Una sorta di richiesta "in tempo reale" al kernel?
Che tipo di telefono hai, quale versione di Android, ecc. – PearsonArtPhoto
Due tablet, un Toshiba Thrive e un trasformatore ASUS, entrambi con Android 3.2.1, entrambi con il root. (Scusa se ho dimenticato di menzionarlo nel post originale.) – Greg
@Greg Ho esattamente lo stesso problema (http://stackoverflow.com/questions/10889461/android-usb-host-api-bulk-transfer-buffer-size). Hai trovato qualche soluzione? – syntagma