arm gcc टूलचेन arm-elf या arm-none-eabi के रूप में, क्या अंतर है?




cortex-m3 (4)

जब आप एक जीसीसी टूलचेन बनाते हैं तो इसे आर्म-एल्फ़ या बांह-नो-एबी के रूप में बनाने की संभावना होती है, लेकिन क्या अंतर है?

मैं आज ईबी का उपयोग करता हूं, लेकिन ऐसा इसलिए है क्योंकि हर कोई ऐसा करने लगता है ... लेकिन चूंकि यह वास्तव में एक बुरा तर्क है, तो अंतर को समझना वास्तव में अच्छा होगा।

नोट: यह टूलचेन कॉर्टेक्स-एम 3 आधारित एमसीयू के लिए कोड को क्रॉसकंपाइल करेगा: एसटीएम 32 की तरह।

धन्यवाद

कुछ लिंक :

EABI:

ELF:


यहां एक उत्कृष्ट दस्तावेज़ है: https://community.freescale.com/thread/313490

टूल चेन में एक ढीला नाम सम्मेलन होता है जैसे आर्क [-वेन्डर] [-os] - ईबी

  arch -    refers to target architecture (which in our case is ARM)
  vendor -  refers to toolchain supplier
  os -      refers to the target operating system
  eabi -    refers to Embedded Application Binary Interface

कुछ उदाहरण निम्नानुसार हैं:

arm-none-eabi - एआरएम आर्किटेक्चर के लिए यह टूल चेन लक्ष्य, कोई विक्रेता नहीं है, ऑपरेटिंग सिस्टम को लक्षित नहीं करता है और एआरएम ईएबीआई का अनुपालन करता है।

arm-none-linux-gnueabi - यह टूलचेन एआरएम आर्किटेक्चर को लक्षित करता है, इसमें कोई विक्रेता नहीं है, जो लिनक्स ऑपरेटिंग सिस्टम पर चलने वाली बाइनरी बनाता है, और जीएनयू ईएबीआई का उपयोग करता है। इसका उपयोग एआरएम आधारित लिनक्स सिस्टम को लक्षित करने के लिए किया जाता है।


एआरएम ईएबीआई एआरएम द्वारा निर्मित मानक है जो विभिन्न टूलचेन को संगत वस्तुओं को बनाने की अनुमति देता है। उदाहरण के लिए, ताकि एक टूलचेन किसी अन्य टूलचेन द्वारा बनाई गई वस्तुओं को लिंक कर सके।


प्रत्येक वास्तुकला या वास्तुकला / ओएस जोड़े में एबीआई है। एबीआई (एप्लीकेशन बाइनरी इंटरफेस) वर्णन करता है कि कार्यों को कैसे कहा जाना चाहिए, सिस्को संख्याएं, तर्क पारित किए गए, किस रजिस्टरों का उपयोग किया जा सकता है ...

अबी वर्णन करता है कि कैसे संकलक को असेंबलर उत्पन्न करना चाहिए।

यदि आप केवल असेंबलर का उपयोग करते हैं तो आपको एबीआई की परवाह करने की आवश्यकता नहीं है।

आर्म-एल्फ और आर्म-नो-इबी सिर्फ आर्म एबीआई के दो संस्करणों का उपयोग करते हैं। ईबी टूलचेन एक नए संशोधन का उपयोग करता है, लेकिन इसे आर्म-एल्फ-एबी भी कहा जा सकता है, क्योंकि यह एल्फ भी उत्पन्न करता है।


जैसा की मैं जनता हूँ:

arm-elf टूलचेन कुछ ओएस के लिए ओबीजे कोड उत्पन्न करता है जो निष्पादन एल्फ़ प्रारूप (उदाहरण लिनक्स एबीआई) का समर्थन करता है। ओएस आपके कार्यक्रम के निष्पादन को नियंत्रित करेगा।

arm-none- eabi टूलचेन माइक्रो नियंत्रकों या माइक्रोप्रोसेसरों के लिए ओबीजे कोड उत्पन्न करता है (नंगे धातु के लिए, यह ईएबीआई - एम्बेडेड एबीआई होगा)। यह कोड एमसी के फ्लैश को साफ करने के लिए डाउनलोड किया गया है और एमसी के मूल ने इसे चालू करने के बाद इसे निष्पादित करना शुरू कर दिया है। कोई ओएस, विस्तारित कमांड सेट, साझा मॉड्यूल से जोड़ने के लिए कोई संभावना नहीं है।





eabi