E
Elephantus
Guest
Io sono la progettazione di una applicazione di acquisizione dei dati di streaming con il Cypress EZ-USB FX2, utilizzando CyAPI.I dati vengono trasferiti da esterno attraverso la logica FIFO interfaccia slave ad un quad-buffered rinfusa endpoint nel FX2.Il PC recupera i dati dal FX2 utilizzando trasferimento da prescheduling code sovrapposta trasferimenti (l'BeginXfer-WaitXfer-FinishXfer approccio, come indicato nel CyAPI streamer esempio).
Il dato dovrebbe rendimento continuo caricamento dei dati sul bus USB e un ampio tampone è utilizzato su PC, al fine di massimizzare il flusso di volume.
Tuttavia,
previo collaudo e misurazione, il monitoraggio del FLAGB (FIFO piena bandiera) ha dimostrato che l'FX2 fifo viene svuotato non continuamente a seconda della corrente di carico della CPU.In una applicazione che utilizza tre fili paralleli (uno per scaricare e pre-calendario dati USB,
il secondo per la ricezione di dati e di innescare la trasformazione e la terza, che simula il trattamento per un determinato periodo) il controllo delle FLAGB ha dimostrato che l'FX2 FIFO è piena (da unserviced USB Host) per l'esatta durata del trattamento simulato (un determinato periodo di elevato carico della CPU).Risultati simili sono stati ottenuti quando il carico della CPU è stata sollevata utilizzando un parallelo CPU processo in termini di tempo.
Ulteriori misurazioni e di osservazione del comportamento FLAGB indicato che non vi è una possibilità che il fetch e preschedule thread non è dato sufficiente tempo di CPU,
con conseguente unsufficient la velocità di trasferimento di rinegoziazione, che svuota la prescheduled trasferimento coda.Tuttavia, aumentando il buffer / trasferimento e la modifica delle dimensioni thread priorità non eliminare il problema.Per la data di progettazione,
la realizzazione di un continuo flusso di dati è di fondamentale importanza a causa della limitata capacità del buffer hardware.Il mancato caricamento continuo dei dati si traduce in una perdita di dati a causa di overflow del buffer,
il che è inaccettabile in un determinato progetto.
Le domande sono: è la dipendenza della velocità di trasferimento di carico sulla CPU causato dalla CyAPI / CyUSB driver di architettura, e vi è un modo per incrementare le prestazioni con il CyUSB driver?Le prestazioni potrebbero essere aumentate di accedere direttamente CyUSB il conducente tramite l'interfaccia CyIOCTL?
Se qualcuno ha una risposta, o qualsiasi altra idea su un determinato problema,
vorrei apprezzare alcun aiuto.
Il dato dovrebbe rendimento continuo caricamento dei dati sul bus USB e un ampio tampone è utilizzato su PC, al fine di massimizzare il flusso di volume.
Tuttavia,
previo collaudo e misurazione, il monitoraggio del FLAGB (FIFO piena bandiera) ha dimostrato che l'FX2 fifo viene svuotato non continuamente a seconda della corrente di carico della CPU.In una applicazione che utilizza tre fili paralleli (uno per scaricare e pre-calendario dati USB,
il secondo per la ricezione di dati e di innescare la trasformazione e la terza, che simula il trattamento per un determinato periodo) il controllo delle FLAGB ha dimostrato che l'FX2 FIFO è piena (da unserviced USB Host) per l'esatta durata del trattamento simulato (un determinato periodo di elevato carico della CPU).Risultati simili sono stati ottenuti quando il carico della CPU è stata sollevata utilizzando un parallelo CPU processo in termini di tempo.
Ulteriori misurazioni e di osservazione del comportamento FLAGB indicato che non vi è una possibilità che il fetch e preschedule thread non è dato sufficiente tempo di CPU,
con conseguente unsufficient la velocità di trasferimento di rinegoziazione, che svuota la prescheduled trasferimento coda.Tuttavia, aumentando il buffer / trasferimento e la modifica delle dimensioni thread priorità non eliminare il problema.Per la data di progettazione,
la realizzazione di un continuo flusso di dati è di fondamentale importanza a causa della limitata capacità del buffer hardware.Il mancato caricamento continuo dei dati si traduce in una perdita di dati a causa di overflow del buffer,
il che è inaccettabile in un determinato progetto.
Le domande sono: è la dipendenza della velocità di trasferimento di carico sulla CPU causato dalla CyAPI / CyUSB driver di architettura, e vi è un modo per incrementare le prestazioni con il CyUSB driver?Le prestazioni potrebbero essere aumentate di accedere direttamente CyUSB il conducente tramite l'interfaccia CyIOCTL?
Se qualcuno ha una risposta, o qualsiasi altra idea su un determinato problema,
vorrei apprezzare alcun aiuto.