2013-07-12 10 views
11

मैं एक लिनक्स अनुप्रयोग है कि मैं के लिए कुछ परीक्षण को स्वचालित करना चाहते हैं, और अपने राज्य कुछ उपकरणों की स्थिति जैसे यूएसबी उपकरणों, WLAN उपकरणों, वान उपकरणों के आधार पर बदलना चाहिए। हालांकि, अब हमारे पास भौतिक यूएसबी, डब्ल्यूएलएएन, वैन, आदि डिवाइस हमारे निपटारे में नहीं हैं, इसलिए मुझे इस कार्यक्रम का परीक्षण करने के लिए वास्तव में भौतिक उपकरणों में प्लगिंग, उन्हें चालू/बंद करने आदि का परीक्षण करने की आवश्यकता है।का अनुकरण शारीरिक USB डिवाइस लिनक्स

मैं बस एक वर्चुअल यूएसबी डिवाइस बनाकर शुरू कर रहा हूं जिसे मैं उपयोगकर्ता स्थान से नियंत्रित कर सकता हूं, लेकिन मेरे भाग पर ज्ञान की मौलिक कमी है जो मुझे इन मंचों पर किसी भी तरह के विषयों को लेने और उन्हें मेरे प्रोजेक्ट में लागू करने से रोकती है। मुझे लगता है कि मुझे किसी प्रकार का वर्चुअल यूएसबी ड्राइवर बनाना होगा, और फिर इसे यूएसबीएफएस के बजाए कुछ उपयोगकर्ता-स्तरीय प्रोग्राम के साथ संवाद करना होगा। हालांकि, यहां तक ​​कि अगर मैं यह वर्चुअल ड्राइवर बनाता हूं, तो मैं इस डिवाइस को उपयोगकर्ता-स्थान से "प्लग इन" कैसे कर सकता हूं और इस प्रोग्राम को इस विशेष ड्राइवर के साथ पंजीकृत कर सकता हूं? क्या मैं भी संभव करने की कोशिश कर रहा हूं?

उत्तर

0

आप VMWare का उपयोग कर एक आभासी वातावरण में अपने आवेदन का परीक्षण कर सकता है? फिर आप अपनी मेजबान मशीन पर किसी भी वर्चुअल डिवाइस को अपने अतिथि वीएम में "प्लग इन" कर सकते हैं और इस तरह अपने एप्लिकेशन का परीक्षण कर सकते हैं।

+0

नहीं, दुर्भाग्य से सब मैं कोड के लिए उपयोग उस तरह का नहीं है, सब मैं कर सकता है कर्नेल मॉड्यूल और रन परीक्षण अनुप्रयोगों को जोड़ने है।परीक्षण दूरस्थ सर्वर –

8

सबसे अच्छा तरीका है कि आप एक USB डिवाइस होने की अनुमति देता लिनक्स गैजेट ड्राइवर और हार्डवेयर का प्रयोग है। गैजेट ड्राइवर किसी कंप्यूटर को किसी भी प्रकार के डिवाइस होने का "नाटक" करने की अनुमति देता है। फिर परीक्षण के तहत आपके सिस्टम में गैजेट बॉक्स में एक यूएसबी ओटीजी केबल है। यदि आपके गैजेट बॉक्स में सही हार्डवेयर है तो आपको केबल को अनप्लग करने की भी आवश्यकता नहीं है। "गैजेट बॉक्स" आपका डेस्कटॉप/लैपटॉप लिनक्स चल रहा है (यदि यह यूएसबी ओटीजी का समर्थन करता है), या यहां तक ​​कि एक एंड्रॉइड फोन या रास्पबेरी पीआई भी हो सकता है। सभी सॉफ्टवेयर (खबरदार कि USB केबल चूसना सिर्फ इसलिए कि केबल फिट मतलब यह नहीं है कि इसे सही ढंग यूएसबी OTG के लिए वायर्ड है।।)

एक बार जब आप सही यूएसबी OTG हार्डवेयर है, अपने गैजेट बॉक्स:

1) यदि परीक्षण के तहत आपका डिवाइस ओटीजी का समर्थन करता है, तो सुनिश्चित करें कि आपका गैजेट बॉक्स कोशिश नहीं करता है और यूएसबी होस्ट बन जाता है। (फिर परीक्षण के तहत आपका डिवाइस यूएसबी क्लाइंट बन जाएगा।) आईई। सुनिश्चित करें कि usb_storage जैसी चीजें स्वचालित रूप से लोड नहीं होती हैं।

2) बॉक्स से बाहर, गिरी यूएसबी हब, USB ईथरनेट, यूएसबी सीरियल पोर्ट और यूएसबी लाठी के लिए गैजेट का समर्थन करता है। बस अपने गैजेट बॉक्स पर सही मॉड्यूल लोड करें और यह "बस काम करता है"। उदाहरण के लिए, यूएसबी स्टिक बनाने के लिए, ऐसा कुछ करें: "insmod g_file_storage.ko file=/dev/ram0"। दूरदराज के पक्ष को लगता है कि आप एक यूएसबी छड़ी में प्लग किया है।

धारावाहिक उपकरणों के लिए, आपके गैजेट (मुमकिन है एक 4 जी मॉडेम या जो कुछ भी नकल।) कि/dev/USBx "और परीक्षण के अंतर्गत अपने डिवाइस के लिए वार्ता पर" फोन उठाता है "उपयोगकर्ता के अंतरिक्ष कोड चला सकते हैं।

डिवाइस के टन वास्तव में हुड के नीचे "यूएसबी सीरियल" हैं क्योंकि निर्माता यूएसबी को समझने के लिए बहुत आलसी थे।

3) थोड़ा पुन: संकलन या कॉन्फ़िगर करने के साथ, आप उन सामान्य गैजेट डिवाइसों को विभिन्न यूएसबी होने का नाटक कर सकते हैं आईडी या विभिन्न विक्रेता तारों को वापस लौटाएं, यह "वास्तविक हार्डवेयर के खिलाफ परीक्षण" जैसा नहीं होगा, लेकिन कम से कम आप इन उपकरणों के जेनेरिक संस्करण के साथ परीक्षण कर रहे हैं।

4) डिवाइस प्रकारों के लिए जो पहले से ही कर्नेल (i.e वाईफ़ाई या कुछ) में नहीं हैं, आप स्वयं ही हैं। पर्याप्त रक्त पसीने और आंसुओं के साथ, आप अपना खुद का गैजेट प्रकार लिख सकते हैं।

खबरदार (आदर्श रूप में, जितना संभव हो उतना उपयोगकर्ता अंतरिक्ष में रखने के लिए, और केवल कर्नेल में प्रदर्शन महत्वपूर्ण भागों संभाल ..): यह असंभव है एक साथ समझते हैं और यूएसबी सराहना करते हैं।

+1

पर चलाए जाते हैं यदि यह परीक्षण प्रणाली में भौतिक पहुंच थी तो यह सही होगा; दुर्भाग्य से, मैं नहीं करता। हालांकि, लिनक्स गैजेट ड्राइवर आसानी से आ सकते हैं ... मैं एक यूएसबी ड्राइवर लिखने की योजना बना रहा हूं, जो प्रारंभिक रूप से स्वचालित रूप से वर्चुअल यूएसबी डिवाइस को पंजीकृत करता है जो लिनक्स गैजेट स्रोत में पाए गए डिवाइस, कॉन्फ़िगरेशन और इंटरफ़ेस डिस्क्रिप्टर को मिरर करता है। क्या यह काम कर सकता है? –

+0

दिखता है जैसे कर्नेल मॉड्यूल का नाम बदलकर 'usb_f_mass_storage.ko' कर दिया गया है। देखें [लिंक] (https://github.com/torvalds/linux/blob/master/Documentation/usb/gadget-testing.txt) – netvope

संबंधित मुद्दे