रास्पबेरी पाई की हैकैबिलिटी का स्तर


35

मैं लगभग 3 वर्षों से एम्बेडेड सिस्टम (ज्यादातर माइक्रो कंट्रोलर) के साथ काम कर रहा हूं। मैं जानना चाहता हूं कि वास्तव में खुले स्रोत का कितना आरपीआई है ?? मुझे पता है कि arduino हमें हार्डवेयर / सॉफ्टवेयर आदि की पूरी जानकारी देता है, लेकिन आरपीआई के बारे में क्या? यह मेरी टीम के बाद से महत्वपूर्ण है और मैं रास्पबेरी पाई के साथ निम्नलिखित करना चाहता हूं [यह परियोजना आरपीआई का उपयोग करने का इरादा रखती है जैसे कि arduino => कोई ओएस नहीं]:

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

क्या यह रास्पबेरी पाई के साथ संभव है? यदि नहीं:
-> रास्पबेरी पाई के साथ मेरे पांच लक्ष्य संभव नहीं हैं। अगर मुझे पीआई के साथ काम करना है तो मुझे अपनी परियोजना में क्या बदलाव करने चाहिए?
-> बाजार में और कौन से बोर्ड हैं जो मुझे वही पूरा करने देंगे जो मैं चाहता हूँ?

जवाबों:


76

कुछ पृष्ठभूमि

सबसे महत्वपूर्ण बात जो आपको पता होनी चाहिए कि रास्पबेरीपी एक अजीब जानवर है जहां ARM CPUमुख्य सीपीयू नहीं है - यह केवल एक सह-प्रोसेसर है VideoCore GPU। जब रास्पबेरीपी शुरू होता है, तो एसडी कार्ड से एल 2 कैश तक जीपीयू बूँद पढ़ी जाती है और निष्पादित होती है। यह कोड तब सभी महत्वपूर्ण बाह्य उपकरणों (रैम, घड़ियां आदि) को लाता है और चालू करता है ARM CPU। फिर दूसरा चरण बूटलोडर या कुछ ऑपरेटिंग सिस्टम पर ही चलाया जा सकता है ARM CPU

GPU बूँद केवल एक बूटलोडर नहीं है। यह वास्तव में एक ऑपरेटिंग सिस्टम (वीडियो कोर ओएस) है। सिस्टम के कुछ महत्वपूर्ण तत्व एआरएम सीपीयू द्वारा सीधे सुलभ नहीं हैं और इसका GPUउपयोग mailboxकरने के लिए ( संदेश प्रणाली का उपयोग करके ) के साथ संवाद करना पड़ता है। इस बारे में आंशिक दस्तावेज उपलब्ध है। अब Video Core OS( VCOS) ब्रॉडकॉम के कर्मचारियों द्वारा समय-समय पर Linuxकर्नेल द्वारा आवश्यक सुविधाओं को सक्षम करने के लिए बढ़ाया जाता है , RISC OSया कभी-कभी कुछ हॉबी ओएस भी। इस बारे में कोई अच्छा दस्तावेज नहीं है, फिर भी आपको इसमें खुदाई करनी होगी RaspberryPi forum;githubऔर संभवतः अन्य स्थानों के बारे में जानकारी प्राप्त करने के लिए। लेकिन यह वहाँ है .. कहीं। और कुछ लोग हैं जो रास्पबेरीपी पर अपने स्वयं के नंगे धातु कोड या यहां तक ​​कि OSes को लिखने में आपकी मदद करते हैं। और निश्चित रूप से खुले स्रोत कोड का एक बहुत - उदाहरण के लिए RasbperryPi के लिनक्स कर्नेल।

वीडियोकोर मालिकाना है, कोई आधिकारिक दस्तावेज और विकास उपकरण नहीं है। इसलिए जब तक आप बहुत प्रयास नहीं करना चाहते, आप VCOSअपने कोड के साथ फिर से लिखना नहीं कर सकते । हालांकि, वीडियो कोर को रिवर्स करने के लिए कुछ प्रयास हैं, आप यहां कुछ जानकारी पा सकते हैं ।

एक और समस्या यह है कि USBSynopsys द्वारा स्टैक मालिकाना है और फिर से इसके लिए कोई दस्तावेज नहीं है और ऐसा लगता है कि प्रलेखन के साथ भी इसे मज़बूती से लागू करना मुश्किल है। लेकिन फिर से, कोड उपलब्ध है (लिनक्स कर्नेल, यू-बूट, सीएसयूडी )। उन्नत ग्राफिक्स क्षमताओं का उपयोग करना Video Coreभी कठिन हो सकता है - ग्राफिक्स पुस्तकालयों के लिए कुछ ओपन सोर्स कोड है, लेकिन यह केवल ARMपक्ष के लिए है।

कहा जा रहा है, यह संभव था RISC OSकि उपलब्ध जानकारी से पोर्ट बनाया जाए (यह मेरे लिए पूरी तरह से स्पष्ट नहीं है यदि वे केवल सार्वजनिक रूप से सुलभ जानकारी का उपयोग कर रहे हैं, हालांकि), कुछ लोग फिर से लिख रहे हैं (ब्रॉडकॉम से स्वतंत्र रूप से) मेनलाइन के लिए लिनक्स कर्नेल, वहां एक FreeBSDबंदरगाह है, 'यू-बूट' और अन्य। इसलिए अपना ओएस लिखना निश्चित रूप से संभव है। यह सिर्फ इतना आसान नहीं है जितना संभवतः हो सकता है।

तुम्हारे लक्ष्य

संख्या 1

जहां तक ​​मुझे पता है, ऐसा कोई तरीका नहीं है जो एक वर्णित तरीके से SoC दूसरे तरीके से शुरू कर सकता है। तो पहले चरण का बूटलोडर चालू होना चाहिए SD card। और यह एक GPUबाइनरी होना है , न कि एक ARMबाइनरी जो एक और समस्या है। और रास्पबेरीपी में बोर्ड फ्लैश पर नहीं है जो एक समस्या है।

संख्या 2

मुख्य समस्या यह है कि flashरास्पबेरीपी पर कोई ऑन-बोर्ड नहीं है । आप एक जोड़ सकते हैं और इसे आपके बूटलोडर में सक्रिय किया जा सकता है (जो पहले से ही द्वितीय चरण का बूटलोडर होगा)। हालाँकि USB ड्राइवर लिखना समस्याग्रस्त हो सकता है।

संख्या 3, 4, 5

यह एक समस्या का ज्यादा नहीं होना चाहिए। अधिकांश परिधीय (कम से कम उन लोगों के लिए सुलभ ARM) यहां प्रलेखित हैं । मौजूदा बूटलोडर इसे और भी आसान बनाता है क्योंकि आप अपने SoC को पूरी तरह से कॉन्फ़िगर करते हैं। आप कुछ कोड और प्रलेखन के लिए यहां और यहां देख सकते हैं ।

वैकल्पिक

मैं किसी भी अन्य बोर्ड को रास्पबेरीपी के रूप में अच्छा नहीं जानता, इसलिए कुछ की सिफारिश करना कठिन है, लेकिन आप कुछ परिपक्व परियोजनाओं जैसे ओएमएपी आधारित बीगलबोर्ड / बीगलबोन / पांडोबोर्ड पर एक नज़र डाल सकते हैं या आप कुछ नए उत्पादों जैसे कि ऑलविनर के विकास का अनुसरण कर सकते हैं क्यूबबोर्ड या PCduino । यह सब इस बात पर निर्भर करता है कि आप क्या हासिल करना चाहते हैं।


3
मैं इस उत्तर को +100 करना चाहता हूं। बहुत बढ़िया।
ओरिथेना

@maligree योग्य, चिंता मत करो - यह पहले से ही किया गया है! :)
xxmbabanexx

1
Beablebone के लिए +1 क्योंकि यह 100% ओपनसोर्स है और आपके पास हार्डवेयर को "रेस्पिन" करने और अपनी सर्किट बोर्ड बनाने की क्षमता है
portforwardpodcast

5

Krzysztof के शानदार उत्तर को अपडेट करने के लिए, ब्रॉडकॉम ने अंततः एक खुले स्रोत जीपीयू ड्राइवर के निर्माण में सहायता के लिए कुछ कोड को 3-क्लॉज़ बीएसडी के रूप में लाइसेंस जारी किया। रास्पबेरी पाई वीपीयू फर्मवेयर बूँद को बदलने के लिए "आरपीआई-ओपन-फर्मवेयर" प्रयास 2016 में शुरू हुआ: https://github.com/christinaa/rpi-open-firmwareHttps://news.ycombinator.com/item?id=11703842 पर अधिक देखें

रास्पबेरीपी से कई वैकल्पिक बोर्ड वर्णित और जुड़े हुए हैं - ओड्रिड-सी 1, क्यूबिएबोर्ड, केला पाई, ओलीमेक्स के ओलिनक्सइनो वाइफी और ओलिनक्सइंडियन मिनी, ईओएमए 68 और बीगलबोन ब्लैक सहित डेबियन विकी


व्यक्तिगत रूप से, मुझे लगता है कि विकल्प उतने महान नहीं हैं, बहुत सारे ODROID बोर्ड बूटलोडर पर हस्ताक्षर जाँच लागू करते हैं और आपको उन पर अपना कोड चलाने से रोकते हैं। TI OMAP3 परिवार आपके कोड को कॉल करने से पहले सुरक्षित मोड में मौजूद है, यह भी सीमित करता है कि आप इसके साथ क्या कर सकते हैं। आरपीआई पर VPU वास्तव में बहुत अच्छा है, मुझे लगता है कि यह वही है जो इसे अन्य बोर्डों पर बढ़त देता है और अब जब हमारे पास इसके लिए एक अच्छा टूलचिन है, तो चीजें अच्छी लग रही हैं।
क्रिस्टीना ब्रूक्स

1

वास्तव में काफी कुछ है जो आप रास्पबेरी पाई के साथ यू-बूट बूटलोडर के साथ कर सकते हैं। आप मूल रूप से बस अपने एआरएम कोप्रोसेसर SoC को "OS" के रूप में यू-बूट छवि के साथ GPU लोड करते हैं।

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

नहीं है एक और लेख है कि यू-बूट छवि के निर्माण के लिए और अधिक व्यापक निर्देश शामिल हैं।


1
यह इस तरह का उत्तर है जो शुरुआत में उपयोगी हो सकता है, लेकिन कुछ वर्षों के बाद लिंक काम करना बंद कर देते हैं और उनकी सामग्री क्या थी इसका एक भी संकेत नहीं है। कम से कम यह बताने पर विचार करें कि आपने कौन सी यू-बूट शाखा और किस कंपाइलर का उपयोग किया है।
दिमित्री ग्रिगोरीव

धन्यवाद दिमित्री मैं जल्द ही इस पर वापस आऊंगा और कुछ समय मिलने पर इसे ठीक करूंगा।
एलन मीम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.