2011-12-21 16 views
10

में नंद विभाजनिंग मैं एंबेडेड एआरएम 9 विकास बोर्ड पर काम कर रहा हूं। उसमें मैं अपने नंद विभाजन को पुनर्व्यवस्थित करना चाहता हूं। क्या कोई मुझे बता सकता है कि ऐसा कैसे करें?यू-बूट

मेरे यू-बूट खोल में यदि मैं कमांड mtdparts देता हूं जो निम्नलिखित जानकारी देता है।

Boardcon> mtdparts  

device nand0 <nandflash0>, # parts = 7 

#: name    size   offset   mask_flags 
0: bios    0x00040000  0x00000000  0 
1: params    0x00020000  0x00040000  0 
2: toc     0x00020000  0x00060000  0 
3: eboot    0x00080000  0x00080000  0 
4: logo    0x00100000  0x00100000  0 
5: kernel    0x00200000  0x00200000  0 
6: root    0x03c00000  0x00400000  0 

active partition: nand0,0 - (bios) 0x00040000 @ 0x00000000 

defaults: 
mtdids : nand0=nandflash0 
mtdparts: mtdparts=nandflash0:[email protected](bios),128k(params),128k(toc),512k(eboot),1024k(logo),2m(kernel),-(root) 

कर्नेल बूट संदेश निम्न दिखाता है:

Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit": 
0x000000000000-0x000000040000 : "Boardcon_Board_uboot" 
0x000000200000-0x000000400000 : "Boardcon_Board_kernel" 
0x000000400000-0x000003ff8000 : "Boardcon_Board_yaffs2" 

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

उत्तर

1

आप uboot में ऐसा करने के लिए mtdparts पर्यावरण चर सेट कर सकते हैं, और कर्नेल केवल कर्नेल बूट कमांडलाइन में इसे पास करते हैं, या अन्यथा यह आपके लिए कर्नेल स्रोत कोड में nand विभाजन संरचना में डिफ़ॉल्ट होगा मंच, जो इस मामले में 3 एमटीडी विभाजन डिफ़ॉल्ट है।

+0

आपके उत्तर के लिए धन्यवाद। लेकिन मुझे संदेश मिल रहा है ** प्रत्येक बूट पर 3 एमटीडी विभाजन ** बनाना। क्या कर्नेल प्रत्येक बूट पर नंद विभाजन को बदलता है? अगर मैं यू-बूट के माध्यम से नंद विभाजन को बदलना चाहता हूं तो मुझे कमांड चाहिए उपयोग? – yuvaeasy

+1

मुझे यह कहने में खेद है, लेकिन आप हमेशा Google का उपयोग कर सकते हैं। http://www.denx.de/wiki/DULG/UBootCmdGroup फ्लैश यह है कि मैंने Google के माध्यम से यू-बूट आधिकारिक साइट पर आसानी से पाया, आप शायद यू-बूट की समझ पर पढ़ना चाहें। – andycjw

+0

धन्यवाद मैं समझने की कोशिश करूंगा। – yuvaeasy

20

फ़्लैश उपकरणों के लिए, या तो NAND या NOR, डिवाइस पर कोई विभाजन तालिका नहीं है। यही है, आप फ्लैश रीडर में डिवाइस को नहीं पढ़ सकते हैं और कुछ टेबल ढूंढ सकते हैं जो इंगित करता है कि डिवाइस पर कितने विभाजन हैं और जहां प्रत्येक विभाजन शुरू होता है और समाप्त होता है। ब्लॉक के केवल एक अविभाजित अनुक्रम है। यह एमटीडी फ्लैश डिवाइस और डिस्क्स या एफटीएल डिवाइस जैसे एमएमसी जैसे उपकरणों के बीच एक मौलिक अंतर है।

इसलिए फ्लैश डिवाइस का विभाजन दर्शक की आंखों में है, यानी यू-बूट या कर्नेल है, और जब दर्शक चलते हैं तो विभाजन "बनाए जाते हैं"। यही कारण है कि आप संदेश Creating 3 MTD partitions देखते हैं। यह इस तथ्य को प्रतिबिंबित करता है कि फ़्लैश विभाजन वास्तव में चल रहे कर्नेल की एमटीडी प्रणाली में मौजूद हैं, फ्लैश डिवाइस पर नहीं।

इससे ऐसी स्थिति होती है जिसमें यू-बूट और कर्नेल फ़्लैश विभाजन की अलग-अलग परिभाषाएं हो सकती हैं, जो स्पष्ट रूप से ओपी के मामले में क्या हुआ है।

यू-बूट में, आप फ़्लैश विभाजन को mtdparts पर्यावरण चर में परिभाषित करते हैं। लिनक्स कर्नेल में, फ्लैश विभाजन निम्नलिखित स्थानों में परिभाषित कर रहे हैं:

  1. पुराने कर्नेल में (जैसे i.MX28 के लिए 2.6.35) फ्लैश विभाजन सकता gpmi-nfc-mil.c या अन्य ड्राइवर स्रोत कोड में हार्ड-कोडेड जा। (निराशाजनक!)।
  2. डिवाइस पेड़ समर्थन नए मुख्य लाइन के दाने में, आप
  3. नए कर्नेल में डिवाइस पेड़ में एमटीडी पार्टिशनों परिभाषित कर सकते हैं वहाँ आमतौर पर root=/dev/mmcblk0p2 rootwait console=ttyS2,115200 mtdparts=nand:6656k(all),1m(squash),-(jffs2)
की तरह एक कमांड लाइन का उपयोग कर गिरी कमांड लाइन विभाजन परिभाषा के लिए समर्थन कर रहा है

आपके द्वारा कर्नेल में विभाजन विभाजन का प्रकार आपके द्वारा उपयोग किए जा रहे फ्लैश के प्रकार पर निर्भर करता है, भले ही यह ड्राइवर कर्नेल कमांड लाइन पार्सिंग का समर्थन करता है और क्या आपके कर्नेल में डिवाइस पेड़ का समर्थन है या नहीं।

किसी भी घटना में, फ्लैश के यू-बूट और कर्नेल विभाजन के बीच संघर्ष का अंतर्निहित जोखिम होता है।इसलिए, मेरी सिफारिश यू-बूट mtdparts चर में फ्लैश विभाजन को परिभाषित करना है और यू-बूट कर्नेल कमांड लाइन में कर्नेल को पास करने के लिए यह मानते हुए कि आपका कर्नेल इस विकल्प का समर्थन करता है।

+0

आपका दावा है कि फ्लैश डिवाइस पर कोई विभाजन तालिका नहीं है। टेग्रा, ओएमएपी, या क्वालकॉम चिप्स का उपयोग करने वाले उपकरणों में फ्लैश मेमोरी में जीपीटी हो सकते हैं। – Melab

+1

@ मेलाब: एसओसी का समर्थन है कि आप समर्थन एमएमसी, ईएमएमसी या एसडी परिधीय का उल्लेख करते हैं। हालांकि ये आमतौर पर फ्लैश टेक्नोलॉजी पर आधारित होते हैं, लेकिन वे कच्चे फ्लैश या एमटीडी के समान नहीं होते हैं, जिनके बारे में ओपी पूछता है। यू-बूट 'mtdparts' कमांड जिसे ओपी कच्चे NAND या NOR फ्लैश से संबंधित है, एमएमसी, ईएमएमसी या एसडी जैसे "प्रबंधित" फ्लैश से संबंधित नहीं है। आप http://processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User%27s_Guide#Using_NAND में यू-बूट कमांड में मतभेदों का एक संक्षिप्त वर्णन पा सकते हैं। –

+0

मेलब गलत है जोनाथन आप सही हैं। एमटीडी फ्लैश में कोई विभाजन तालिका नहीं है और हां विभाजन यू-बूट और लिनक्स कर्नेल या .dts (और इस प्रकार .dtb) के माध्यम से mtdparts स्ट्रिंग के माध्यम से "परिभाषित" हैं। कुछ नियंत्रक अलग हो सकते हैं लेकिन यह मेरा अनुभव सनक्सी लिनक्स और ऑलविनर चिप्स पर यहां लगता है। –

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