U-बूट dtb फ़ाइल क्या है और मैं इसका उपयोग कैसे करता हूं (बीगलबोर्ड एक्सएम)?


13

मैं बीगलबोर्ड XM (Rev. C) के लिए एक कस्टम लिनक्स बनाने की कोशिश कर रहा हूं। मैं बहुत सी / सी ++ करता हूं लेकिन स्क्रैच से लिनक्स बनाने और स्थापित करने में एक शुरुआत हूं।

मैंने Yocto प्रोजेक्ट बिल्ड अप्लायंस ( https://www.yoctoproject.org/ ) का इस्तेमाल किया, जो आशाजनक लग रहा था - इसने यू-बूट बूट लोडर, लिनक्स कर्नेल और रूट फाइल सिस्टम के लिए फाइलें बनाईं।

यह पृष्ठ Yocto- जनित फ़ाइलों के साथ माइक्रो एसडी कार्ड स्थापित करने के लिए निर्देश देता है। हालाँकि, छवि फ़ाइलों में एक ".dtb" फ़ाइल शामिल है, जो कि सेट अप निर्देशों में उल्लिखित नहीं है।

क्या इस फ़ाइल में बोर्ड हार्डवेयर के साथ कुछ करना है? विभिन्न साइटों में लोडिंग dtd फाइलों का उल्लेख है (शायद uEnv.txt?) में, लेकिन मुझे कोई विस्तृत जानकारी नहीं मिली है।

मैंने MLO और u-boot.img के साथ बूट विभाजन सेट करने के लिए उपरोक्त निर्देशों का उपयोग किया है, और uEnv.txt के साथ थोड़ा गड़बड़ कर दिया है। मैंने रूट फाइल सिस्टम के साथ एक दूसरा विभाजन भी स्थापित किया है।

मैं बूट करने और (सीरियल पोर्ट कंसोल के माध्यम से) में प्रवेश करने में सक्षम था, लेकिन यह अधिकांश बोर्ड हार्डवेयर की तरह दिखता था - उदाहरण के लिए वीडियो और ईथरनेट सहित सभी यूएसबी डिवाइस - काम नहीं कर रहे थे। क्या ऐसा हो सकता है क्योंकि मैं .dtb फ़ाइल का उपयोग नहीं कर रहा था?

क्या कोई dtb को समझा सकता है और इसे बीगल बोर्ड पर कैसे उपयोग किया जा सकता है? धन्यवाद!


यह पता चला है कि मैंने फ़ाइल नाम को गलत बताया है - मैंने मूल रूप से सोचा था कि यह एक ".dtd" फ़ाइल थी, लेकिन यह ACTALLALLY है ".dtb" - जिसके कारण मुझे इसके बारे में जानकारी नहीं मिली। प्रश्न अब अपडेट कर दिया गया है।
जेरेमी

बेहतर समझने के लिए QEMU वर्चुअल डिवाइस के साथ न्यूनतम उदाहरण: stackoverflow.com/questions/17488320/…
Ciro Santilli 新疆 EM EM

जवाबों:


13

मेरे अपने प्रश्न का उत्तर देने के बाद, मुझे पता चला कि क्या खोजना है। एक "dtb" फ़ाइल में एक डिवाइस ट्री ब्लॉब (या बाइनरी) ( यहाँ अच्छा विवरण ) है। यह लिनक्स कर्नेल के लिए बोर्ड के बारे में हार्डवेयर जानकारी पास करने का नया (एर) तरीका है।

इसे मेमोरी में लोड किया जा सकता है और यू-बूट द्वारा कर्नेल को पास किया जा सकता है।

यहाँ यू-बूट कमांड का उपयोग किया गया है:

setenv bootargs 'console=tty0 console=ttyO2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext4 rw'
fatload mmc 0:1 0x80300000 zImage
fatload mmc 0:1 0x815f0000 beagle-xm.dtb
bootz 0x80300000 - 0x815f0000

zImage कर्नेल, और बीगल-xm.dtb डिवाइस ट्री ब्लॉब होने के नाते। मैंने uEnv.txt में "उपरोक्त (इसके साथ)) में" uenvcmd = ... "चर सेट करके बूट प्रक्रिया को स्वचालित कर दिया है, लेकिन यह थोड़ा बदसूरत है और शायद बेहतर तरीके हैं।

ध्यान दें कि यह बूट करता है, और कहता है कि इसने डिवाइस ट्री ओके लोड किया है। हालाँकि, मेरे पास अभी भी कोई USB डिवाइस या वीडियो नहीं है (जहाँ तक मैं बता सकता हूँ)। हालांकि, मुझे संदेह है कि एक अलग समस्या हो सकती है।


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

धन्यवाद! मुझे पता चला कि dtb फ़ाइल को कैसे लोड करना है, और लिनक्स अब लोड हो रहा है और लोडिंग ड्राइवरों के बारे में विभिन्न संदेश जारी करता है, लेकिन मैं किसी भी USB डिवाइस (ईथरनेट मॉड्यूल सहित) को नहीं देख सकता। : नया प्रश्न देखें लिंक । शायद वहाँ कुछ है जो मुझे लिनक्स में मैन्युअल रूप से कॉन्फ़िगर करने की आवश्यकता है?
जेरेमी

लेकिन dtb फाइल के लिए क्या पता? उदाहरण के लिए, यदि मेरा zImage 0x43000000 (0x80300000 से ऊपर के उदाहरण के अनुसार) को संबोधित करता है, तो dtb को कहां जाना चाहिए?
एंड्रे वैन शॉब्रोएक

2

मैं बीगल ब्लैक पर Ubuntu 14.04 का उपयोग कर रहा हूं, इसलिए मेरा सेटअप थोड़ा अलग हो सकता है, लेकिन यहां बताया गया है कि मैंने एक कस्टम dtb कैसे लोड किया है:

UEnv.txt में, इसके साथ एक पंक्ति जोड़ें: dtb=name-of-desired.dtb

खोजे गए स्थानों को यहां निर्दिष्ट किया जाना चाहिए । मेरे लिए यह वह /boot/dtbs/linux-kernel/जगह थी जहाँ लिनक्स-कर्नेल लोड किए गए संस्करण का नाम है।


0

ध्यान दें कि 2 dtb हैं। U- बूट dtb और कर्नेल dtb। वे 2 अलग चीजें हैं। U- बूट बोर्ड dts / dtb का उपयोग हमेशा नहीं किया जाता है, अनिवार्य नहीं है, u-boot में btw आप "u-boot" dtb का उपयोग करके इसे U- बूट में एम्बेड कर सकते हैं या इसे यू-बूट तक पहुंचा सकते हैं।

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