2012-04-26 12 views
8

के बीच डेटा पास करने के लिए एसडीआरएएम के एक हिस्से को सुरक्षित करना मैं यू-बूट और लिनक्स कर्नेल के बीच ध्वज पास करने के लिए, 4 बाइट्स कहां एसडीआरएएम का एक हिस्सा आरक्षित कर सकता हूं ताकि यह आरक्षित स्मृति स्थान लिंकर द्वारा शुरू नहीं किया गया है और गर्म बूट के बाद संरक्षित मूल्य? मैं एम्बेडेड एप्लिकेशन में इस्तेमाल किए गए एनएएनडी फ्लैश के पहनने को कम करने के लिए बूटर्ग का उपयोग करने से बचने की कोशिश कर रहा हूं। मेरा प्रश्न द्वारा प्रदान समाधान के लिए एक विस्तार माना जा सकता है: नीचे लिंकर स्क्रिप्ट के साथ How to detect cold boot versus warm boot on an ARM processor?यू-बूट और लिनक्स कर्नेल

मैं का निर्माण किया है u-boot.lds और साथ इसे बनाया: -fno-शून्य-प्रारंभ में बीएसएस सफलता नहीं मिली ।

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 
OUTPUT_ARCH(arm) 
ENTRY(_start) 
SECTIONS 
{ 
. = 0x00000000; 
. = ALIGN(4); 
.text : 
{ 
    cpu/arm926ejs/start.o (.text) 
    *(.text) 
} 
. = ALIGN(4); 
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 
. = ALIGN(4); 
.data : { *(.data) } 
. = ALIGN(4); 
.got : { *(.got) } 
. = .; 
__u_boot_cmd_start = .; 
.u_boot_cmd : { *(.u_boot_cmd) } 
__u_boot_cmd_end = .; 
. = ALIGN(4); 
__bss_start = .; 
_U_BOOT_FLAG = .; . = . + 4; 
.bss (NOLOAD) : { *(.bss) . = ALIGN(4); } 
_end = .; 
} 

कोई भी विचार?

+0

आप किस बोर्ड का उपयोग कर रहे हैं? एक बहुमुखी बोर्ड या एक कस्टम बोर्ड? आप किस एसआरएएम के बारे में बात कर रहे हैं? –

+0

बोर्ड एक at91sam9g45 है और यह वास्तव में डीडीआर 2-एसडीआरएएम है। – user1357493

+0

यू-बूट को सही तरीके से वर्तनी करने के तरीके के बारे में जानने के लिए उपरोक्त करें। – sawdust

उत्तर

0

आप How to detect cold boot versus warm boot on an ARM processor? में वैश्विक-चर दृष्टिकोण से जाना चाहते हैं:

आप (http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Variable-Attributes.html देखें) एक विशिष्ट ELF अनुभाग में होना होता है कि वैश्विक चर मजबूर कर सकते हैं, और फिर लिंकर लिपि में है कि खंड सेट एक विशिष्ट पता

आप अच्छा ld-स्क्रिप्ट कौशल है, तो आप भी लिंकर को छोड़कर सभी बीएसएस वर्गों प्रारंभ करने में हो सकता है कि एक :)

3

वहां पहले से ही यू-बूट और लिनक्स एआरएम गिरी के बीच डेटा पास करने के लिए एक विधि है । इसे एTAG स्मृति सूची कहा जाता है। इस डेटा सूची का उपयोग करते हुए यू-बूट से लिनक्स एआरएम कर्नेल में उपयोग योग्य मेमोरी क्षेत्रों और बोर्ड की जानकारी जैसे सूचनाएं पास की जाती हैं। आप अपने डेटा के लिए एक कस्टम एTAG परिभाषित कर सकते हैं। यू-बूट में, lib_arm/armlinux.c में अपना एआरएम टैग बनाने के लिए अपना दिनचर्या जोड़ें। फिर एएजीarch/arm/kernel/setup.c में संसाधित किए जाते हैं।

प्रलेखन के लिए this या this alt site की धारा 8 देखें। संदर्भित ATAG प्रलेखन के लिए

परिशिष्ट
लिंक कमजोर कर रहे हैं (यहां तक ​​कि गूगल एक बुरा लिंक है)।
दस्तावेज़ के वास्तविक नाम की खोज करने का प्रयास करें, जो विन्सेंट सैंडर्स द्वारा "बूटिंग एआरएम लिनक्स" है।
वर्तमान में सिमटेक साइट के Google के कैश में एक प्रति है, और एक व्यापक खोज translation in Korean (?) चालू हुई।

एआरएम बूटिंग पर रसेल किंग द्वारा एक और पहले संस्करण (?) (लेकिन अपडेट किया गया प्रतीत होता है) here है।

+0

लिंक टूटे हुए हैं – kakeh

+0

@kakeh - कोई साइट अब उस दस्तावेज़ को होस्ट करने के लिए प्रतीत नहीं होती है। परिशिष्ट देखें। – sawdust

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