E
Elephantus
Guest
Jeg er at designe et streaming dataindhentning ansøgning med Cypress EZ-USB FX2, bruger CyAPI.De data, der overføres fra eksterne logik via slave FIFO grænseflade til en quad-bufferet bulk endpoint i FX2.PC henter data fra FX2 bruger overførsel prescheduling ved kødannelse overlappede overførsler (det BeginXfer-WaitXfer-FinishXfer fremgangsmåde som vist i CyAPI serpentine eksempel).
Den angivne fremgangsmåde bør udbytte løbende hentning af data på USB-bus og omfattende stødpudeeffekt bruges på PC med henblik på at maksimere stream gennemstroemningsmaengden.
Men ved test og målinger, overvågning af FLAGB (FIFO fuld flag) har vist, at FX2 FIFO bliver tømt ikke-kontinuerligt afhængigt af den aktuelle CPU belastning.I en ansøgning, der bruger tre parallelle tråde (en til at hente og præ-forfaldsplan USB data,
dels til at modtage data og udløse forarbejdning og tredje som simulerer behandling for en given periode) at overvåge FLAGB havde vist, at FX2 FIFO var fuld (unserviced ved USB Host) for den nøjagtige varighed af den simuleret behandling (for en nærmere angivet periode med høj CPU-belastning).Lignende resultater blev opnået, når den samlede CPU-belastning blev rejst ved hjælp af en parallel CPU-tidkrævende proces.
Yderligere målinger og observation af FLAGB adfærd tydede på, at der er en mulighed for at hente og preschedule tråd der ikke gives tilstrækkelig CPU tid,
hvilket resulterede i unsufficient hastighed overførsel omlægning, som tømmes af prescheduled overførsel kø.Men øge buffer / overførsel størrelser og ændre tråd prioritet ikke fjerne problemet.For den givne design, nå de løbende data streaming er afgørende på grund af begrænsede stødpudeeffekt kapaciteter af den underliggende hardware.Den ikke-kontinuerlig hentning af data resulterer i et tab af data som følge af bufferoverløb, hvilket er uacceptabelt i den givne design.
De spørgsmål er: er den afhængighed af overføringshastighed på CPU belastning forårsaget af CyAPI / CyUSB føreren arkitektur, og er der en måde at øge ydeevnen med CyUSB driver?Kunne ydeevne forhøjes med direkte adgang til CyUSB føreren via CyIOCTL grænseflade?
Hvis nogen har et svar, eller andre idéer om det givne problem, jeg vil sætte pris på enhver hjælp.
Den angivne fremgangsmåde bør udbytte løbende hentning af data på USB-bus og omfattende stødpudeeffekt bruges på PC med henblik på at maksimere stream gennemstroemningsmaengden.
Men ved test og målinger, overvågning af FLAGB (FIFO fuld flag) har vist, at FX2 FIFO bliver tømt ikke-kontinuerligt afhængigt af den aktuelle CPU belastning.I en ansøgning, der bruger tre parallelle tråde (en til at hente og præ-forfaldsplan USB data,
dels til at modtage data og udløse forarbejdning og tredje som simulerer behandling for en given periode) at overvåge FLAGB havde vist, at FX2 FIFO var fuld (unserviced ved USB Host) for den nøjagtige varighed af den simuleret behandling (for en nærmere angivet periode med høj CPU-belastning).Lignende resultater blev opnået, når den samlede CPU-belastning blev rejst ved hjælp af en parallel CPU-tidkrævende proces.
Yderligere målinger og observation af FLAGB adfærd tydede på, at der er en mulighed for at hente og preschedule tråd der ikke gives tilstrækkelig CPU tid,
hvilket resulterede i unsufficient hastighed overførsel omlægning, som tømmes af prescheduled overførsel kø.Men øge buffer / overførsel størrelser og ændre tråd prioritet ikke fjerne problemet.For den givne design, nå de løbende data streaming er afgørende på grund af begrænsede stødpudeeffekt kapaciteter af den underliggende hardware.Den ikke-kontinuerlig hentning af data resulterer i et tab af data som følge af bufferoverløb, hvilket er uacceptabelt i den givne design.
De spørgsmål er: er den afhængighed af overføringshastighed på CPU belastning forårsaget af CyAPI / CyUSB føreren arkitektur, og er der en måde at øge ydeevnen med CyUSB driver?Kunne ydeevne forhøjes med direkte adgang til CyUSB føreren via CyIOCTL grænseflade?
Hvis nogen har et svar, eller andre idéer om det givne problem, jeg vil sætte pris på enhver hjælp.