एंड्रॉइड का उपयोग करते समय, मैं आने वाली यूएसबी डेटा स्ट्रीम पर डेटा खो रहा हूं जो विंडोज़ में उसी डिवाइस/स्ट्रीम को पढ़ने के दौरान खो नहीं जाता है। (मुझे पता है कि एंड्रॉइड एक वास्तविक समय ओएस नहीं है, लेकिन न तो विंडोज है, और विंडोज को डेटा के साथ 'रख-रखाव' करने में कोई समस्या नहीं है।)एंड्रॉइड - आने वाली (हाई-स्पीड) यूएसबी डेटा खोना
मेरे पास डेटा 3.5 एमबी/सेकेंड में डेटा का उपयोग कर रहा है एफटीडीआई 2232 एच चिप जो 4 के बफर में बनाया गया है। Libusb में bulk_transfer कॉल एक समय में 16K के लिए पूछ सकते हैं, इसलिए एंड्रॉइड को हर 4 एमएमएस या उससे अधिक यूएसबी बफर की सामग्री काटने की जरूरत है।
मैंने कोशिश की है: जावा और सी में लिखना, थ्रेड (और/या प्रक्रिया) प्राथमिकता को उच्चतम, सिंक और एसिंक दिनचर्या में बढ़ाकर, और मैं प्रत्येक यूएसबी पढ़ने के लिए एक अलग बफर भी पास करता हूं इसलिए मैं नहीं करता लगातार पढ़ने के बीच डेटा कॉपी करने के लिए भी है। (स्थानांतरण के दौरान कोई कचरा संग्रह नहीं चल रहा है।) मुझे केवल 20 एमबी डेटा बफर करने की जरूरत है, इसलिए यह सब रैम के लिए है।
फिर भी, एंड्रॉइड यूएसबी डेटा में 'चारों ओर नहीं जा रहा' है, कभी-कभी पढ़ने के बीच 12ms तक प्रतीक्षा करता है, जिससे डेटा का गुच्छा खो जाता है।
क्या किसी के पास कोई विचार है? डीएमए? कर्नेल को कुछ प्रकार के 'वास्तविक समय' अनुरोध?
आपके पास किस प्रकार का फोन है, एंड्रॉइड संस्करण, आदि – PearsonArtPhoto
दो टैबलेट, तोशिबा उत्तेजना और एक ASUS ट्रांसफार्मर, दोनों एंड्रॉइड 3.2.1 चल रहे हैं, दोनों रूट हैं। (क्षमा करें, मैं मूल पोस्ट में उल्लेख करना भूल गया था।) – Greg
@ ग्रेग मुझे बिल्कुल वही समस्या है (http://stackoverflow.com/questions/10889461/android-usb-host-api-bulk-transfer-buffer-size)। क्या आपको कोई समाधान मिला है? – syntagma