2012-03-22 11 views
7

मैं एक एम्बेडेड डिवाइस पर निष्पादन योग्य लोड करने के लिए जीडीबी का उपयोग कर रहा हूं। जब निष्पादन लोड हो रहा है, GDB का कहना है:"प्रोग्राम काउंटर" और "स्टार्ट एड्रेस" के बीच अंतर

xPSR: 0x01000000 pc: 0xf0094902 msp: 0x2001b508 
Loading section .text, size 0x16240 lma 0x8000000 
Loading section .data, size 0x8f0 lma 0x8016240 
Start address 0x8000000, load size 92976 

मैं समझता हूँ के रूप में, pc अनुदेश सूचक है। मुझे लगता है कि "प्रारंभ पता" pc के लिए प्रारंभिक पता है। हालांकि, जीडीबी मुझे जानकारी दे रहा है, प्रारंभ पता (0x8000000, जो आकस्मिक रूप से .text जैसा ही है) pc (0xf0094902) जैसा ही है।

pc के बीच क्या अंतर है और पता शुरू करें? क्या शुरुआती पता .text जैसा ही होना चाहिए?

+0

लोड करने के बाद, 'जानकारी पंजीयक' आज़माएं और * पीसी * के मान की जांच करें। मुझे संदेह है कि @ ड्वेलच सही है। जीडीबी पर 'रन' निष्पादित करने के बाद पंजीयक के पास आपके आवेदन के लिए केवल कुछ अर्थ होगा। – karlphillip

उत्तर

3

यहां उल्लिखित "प्रारंभ पता" बाइनरी छवि की शुरुआत है, निष्पादन प्रारंभ पता नहीं। निष्पादन के लिए प्रारंभ पता रीसेट वेक्टर में जो कुछ भी होता है (मान लीजिए कि आप पहले से कॉर्टेक्स-एम 3 का उपयोग कर रहे हैं?)।

5

मुझे लगता है कि लोड होने के बाद प्रोग्राम काउंटर वर्तमान मूल्य है लेकिन से पहले आप चलना शुरू कर दिया। जब आप दौड़ना शुरू करते हैं, तो निश्चित रूप से प्रोसेसर के आधार पर, लेकिन संभवतः उस लोड कोड को निष्पादित करने के लिए पता लगाने का पता चलता है, प्रोसेसर को फिर से चलाने की अनुमति देने से पहले प्रोग्राम काउंटर सेट करने के लिए पता। यदि आप दौड़ते हैं तो जल्दी से बंद करें आपको पीसी 0x80000000 + 0x16240

+0

मुझे लगता है कि पीसी शुरू करना रोम बूटलोडर में कहीं है। – blueshift

1

विकिपीडिया: "विशेष कंप्यूटर के विवरण के आधार पर, पीसी या आईपी या तो निर्देश का स्मृति पता रखता है निष्पादित, या अगले निर्देश का पता निष्पादित किया जाना चाहिए। " मैं निश्चित नहीं हो सकता, लेकिन हो सकता है कि अगले निर्देश को निष्पादित करने के लिए हो।

संपादित करें:

आप शायद rigth जवाब आपके प्रोसेसर प्रलेखन जाँच मिल सका। उदाहरण के लिए, एमएसपी 430 माइक्रो नियंत्रक में, पीसी के लिए प्रारंभिक स्थिति रीसेट वेक्टर के लिए पता है। तो रजिस्टरों की प्रारंभिक स्थितियों को खोजने के लिए अपने प्रोसेसर दस्तावेज़ की जांच करें।

+1

यह प्रोसेसर से प्रोसेसर में भिन्न होता है, विशेष रूप से प्रोग्रामर मूल्य के दृश्य में एक परिभाषा हो सकती है जहां हार्डवेयर को एक से अधिक प्रतिलिपि बनाने के लिए एक प्रोग्राम हो सकता है, प्रोग्रामर के लिए उपयोग करने के लिए एक आदि। प्रोग्राम काउंटर प्रोग्राम प्रोग्राम का विचार है आमतौर पर प्रत्येक प्रोसेसर के लिए दस्तावेज। –

+0

आप बिल्कुल सही हैं। – LuisEspinoza