मैंने कभी भी एवीआर और एमएसपी 430 के साथ काम किया है, लेकिन यह दोनों के लिए सच है। संकलन और स्थिर रूप से जोड़ने के बाद, मेरा अंतिम ईएलएफ बाइनरी लगभग 208 केबी है और इंटेल हेक्स बाइनरी लगभग 41 केबी है। AVRDUDE मुझे बताता है कि यह लगभग 18 केबी अपलोड कर रहा है। वास्तव में यहाँ क्या चल रहा है?अपलोड किए गए बाइनरी आकार वास्तविक आकार से इतना छोटा क्यों है?
उत्तर
मेरा अंतिम ELF द्विआधारी, 208kB
आसपास
हाँ है, क्योंकि ELF कच्चे मशीन कोड नहीं है। यह एक सार्वभौमिक निष्पादन योग्य प्रारूप है जिसमें स्थानांतरण जानकारी, गतिशील लोडिंग जानकारी, केवल पढ़ने के लिए डेटा, लिखने योग्य डेटा और कोड इत्यादि के लिए अलग-अलग रूपांतरण हैं। इनमें से अधिकतर माइक्रोकंट्रोलर पर अप्रासंगिक हैं क्योंकि इसमें कोई ओएस नहीं है, कोई गतिशील लोडिंग सुविधाएं नहीं हैं, इसलिए अधिकतर अतिरिक्त जानकारी को हटाया जा सकता है।
इंटेल हेक्स बाइनरी लगभग 41 केबी है। AVRDUDE मुझे बताता है कि यह लगभग 18 केबी अपलोड कर रहा है।
दो कारण। एक, इंटेल हेक्स फ़ाइल में प्रत्येक पंक्ति के अंत में चेकसम शामिल होते हैं। यदि आप उचित औसत रेखा लंबाई का उपयोग करते हैं, तो इन्हें काट लें, आप उम्मीद कर सकते हैं कि फाइल कुछ पर्सेंट से कम हो जाए, उदाहरण के लिए 36 केबी। फिर, इंटेल हेक्स फ़ाइलों को 'हेक्स' फाइलों का नाम देने का एक कारण है। उनमें कच्चे बाइनरी डेटा नहीं होते हैं लेकिन कच्चे बाइनरी डेटा हेक्साडेसिमल रूप में होते हैं - i। ई। एक असली बाइट दो बाइट्स का उपयोग करके एन्कोड किया गया है। इसलिए जब AVRdude कोड अपलोड करता है, तो यह इसे कच्चे बाइनरी में परिवर्तित करता है (यही वह एवीआर प्रोसेसर चला सकता है), और तब डेटा आकार फिर से 50% कम हो जाता है।
ईएलएफ बाइनरी में भी प्रतीक हो सकते हैं। –
@MichaelBurr हाँ, यह सही है। –
बहुत बढ़िया। मुझे अच्छा लगता है, धन्यवाद! – Andrew
ऑब्जेक्ट कोड में अतिरिक्त मेटाडेटा शामिल है, जिसमें प्रतीक तालिका और डीबगर जानकारी शामिल है। यदि आप जीएनयू टूलचेन का उपयोग कर रहे हैं तो उस डेटा का अधिकांश सामान्यतः कंपाइलर और/या लिंकर विकल्प या स्ट्रिप उपयोगिता द्वारा छीन लिया जा सकता है।
एक हेक्स फ़ाइल एक ही बाइट का प्रतिनिधित्व करने के लिए 2 हेक्स अंकों के वर्णों का उपयोग करती है, साथ ही रिकॉर्ड ओवरहेड भी बाइनरी की लंबाई से दोगुनी से अधिक होगी।
दूसरों जैसा कि ऊपर कहा, हेक्स फ़ाइल स्वरूप है ascii-प्रिंट करने योग्य जो यह आसान संचारों लिंक (जैसे एक 7 बिट मॉडेम/टर्मिनल), बहुत मोटोरोला .s19 के समान पर स्थानांतरण के लिए बनाता है:
- 1. अंतिम बाइनरी का आकार स्थिर पुस्तकालय के आकार से इतना छोटा क्यों होगा?
- 2. WPF नियंत्रण वास्तविक आकार
- 3. टॉमकैट डिफ़ॉल्ट थ्रेड पूल आकार इतना बड़ा क्यों है?
- 4. लिस्प बाइनरी आकार
- 5. टेक्स्टब्लॉक का आकार छोटा करें
- 6. वेक्टर (आकार) नए से क्यों धीमा है []?
- 7. एंड्रॉयड: छवि का आकार छोटा
- 8. एनएसआईमेज आकार कुछ चित्रों के साथ वास्तविक आकार नहीं है?
- 9. f.date_select बॉक्स का छोटा आकार
- 10. Android आकार पूर्वावलोकन आकार/अनुपात और वास्तविक SufaceView आकार के बीच अंतर कैसे संभालता है?
- 11. Jquery मोबाइल आकार बहुत छोटा है
- 12. मेरा सी ++ बिल्डर प्रोग्राम मेरे डेल्फी कार्यक्रम से इतना छोटा क्यों है?
- 13. क्यों आकार (param_array) सूचक का आकार है?
- 14. बटन का वास्तविक कस्टम आकार
- 15. छवि अपलोड करने से पहले आकार बदलें
- 16. Struts2 फ़ाइल अपलोड अधिकतम आकार
- 17. अपलोड करने से पहले फ़ाइल आकार अपलोड करना
- 18. इसे आकार देने के बाद वास्तविक छवि आकार प्राप्त करें
- 19. रेल फ़ाइल अपलोड आकार सीमा
- 20. PHP - अधिकतम कुल अपलोड आकार?
- 21. AsyncFile अपलोड फ़ाइल आकार सीमा
- 22. किसी दिए गए आकार
- 23. क्या आकार बदलता है() एक छोटे आकार में पहले आरक्षित() द्वारा किए गए आरक्षण को त्याग देता है?
- 24. जब स्क्रीन का आकार किसी विशिष्ट आकार से छोटा होता है
- 25. खिड़की का आकार बदलते समय एंकर किए गए नियंत्रण का आकार बदल नहीं जाएगा (56k सावधान)
- 26. फ़ायरफ़ॉक्स त्रुटि कंसोल बफर आकार बहुत छोटा
- 27. UIImage से CIImage - आकार आधा है?
- 28. टेबललेआउट के भीतर डाले गए डॉक किए गए नियंत्रण स्वचालित रूप से उनके निर्माण आकार
- 29. एएसपीनेट फ़ाइल डाउनलोडिंग - डाउनलोड किए गए आकार को ट्रैक करें
- 30. साझा किए गए संदर्भों का अधिकतम आकार वर्ग
एक .bin फ़ाइल बनाने का प्रयास करें ... जो सही आकार भी हो सकता है या नहीं भी हो सकता है लेकिन यह एक बेहतर संकेतक हो सकता है। स्वयं प्रारूप में केवल बाइट्स की तुलना में बहुत अधिक सामान है जो लोड हो जाता है। .hex फ़ाइल में कुछ अतिरिक्त सामान हैं और एएससीआई में हैं इसलिए आपके पास गेट के बाहर दो बार बाइट्स हैं और अतिरिक्त जोड़ें। ये फ़ाइल प्रारूप सभी विकिपीडिया और अन्य स्थानों पर प्रलेखित हैं –
यह नहीं है कि फाइल से छोटी बाइनरी यह है कि फाइल बाइनरी से बड़ी हैं। –