के लिए बूटलोडर मैं एमबीड से एलपीसी 1768 बोर्ड का उपयोग कर रहा हूं, (कॉर्टेक्स एम 3 सीपीयू के साथ) और मैं यहां कुछ हासिल करने की कोशिश कर रहा हूं, मुख्य रूप से एसडी कार्ड से उपयोगकर्ता एप्लिकेशन को अपग्रेड कर रहा हूं, मैं दो प्रोग्राम लिख रहा हूं, पहले बूटलोडर/नैनो गिरी, और उपयोगकर्ता-ऐप्लिकेशन (HelloWorld एक शुरुआत के लिए करना होगा):कॉर्टेक्स एम 3
- बूटलोडर/0x00 पता रन पर नैनो गिरी, यह कुछ जांच कर और अंततः पर एसडी बाइनरी फ़ाइल हड़पने कार्ड
- बूटलोडर/नैनो-कर्नेल इस बाइनरी को 0x9000 पते पर कॉपी करेगा (जिसे बाद में बदलना पड़ सकता है, लेकिन यह स्थान बूटलोडर/नैनो-कर्नेल द्वारा उपयोग नहीं किया जाता है, इसलिए ठीक होना चाहिए)
- बूटलोडर 0x9000 + 4
एसडी कार्ड काम करने के लिए काफी आसान है, मुझे कूदने वाले हिस्से में समस्याएं हैं। कूदते फ़ंक्शन का कोड यहां दिया गया है।
void run(void) {
void (*user_code_entry)(void);
unsigned *p;
SCB->VTOR = (USER_FLASH_START & 0x1FFFFF80);
// Load contents of second word of user flash - the reset handler address
// in the applications vector table
p = (unsigned *)(USER_FLASH_START +4); // USER_FLASH_START is 0x9000
user_code_entry = (void (*)(void))p;
// Jump to user application
user_code_entry();
}
तो मैं तैयार की है (मैं Keil uvision4 उपयोग कर रहा हूँ) उपयोगकर्ता आवेदन 0x9000 शुरू पता बदलने। अगर मैं अपने बोर्ड (फ्लैशमैजिकटोल का उपयोग करके) प्रोग्राम करता हूं, और उसके बाद मैन्युअल रूप से फ्लैशमैजिकटोल का उपयोग कर 0x9004 (0x9000 + 4) पर जाता हूं, तो उपयोगकर्ता एप्लिकेशन चलाएगा, इसलिए मेरा मानना है कि संकलन ठीक काम करता है इसलिए उपयोगकर्ता-ऐप 0x9000 पर चला सकता है।
लेकिन अगर मैं बूटलोडर/नैनो-कर्नेल चलाता हूं, तो यह उपयोगकर्ता-एप्लिकेशन पर नहीं जाता है और दुर्भाग्यवश, क्योंकि मैं डीबग नहीं कर सकता, मुझे यकीन नहीं है कि क्या हो रहा है ... मैंने भी कोशिश नहीं की है एसडी कॉपी भाग का उपयोग करें, इसलिए मैं बूटलोडर को मूल रूप से केवल 0x9004 पर कूदने के साथ प्रोग्राम करता हूं। मैं फिर उपयोगकर्ता अनुप्रयोग प्रोग्राम करता हूं जो 0x9000 पर बैठेगा। अगर मैं बोर्ड को रीबूट करता हूं, तो बूटलोडर चलता है लेकिन उपयोगकर्ता-ऐप पर नहीं जाता है। मैंने स्मृति की जांच की है, और ऐसा लगता है कि दोनों प्रोग्राम (बूटलोडर + उपयोगकर्ता-ऐप) सही और सही जगह पर हैं।
मुझे यकीन है कि मुझे यहां कुछ याद आ रहा है, क्या कोई निम्न स्तर वाला कोड मुझे देखना चाहिए? मैंने ऑनलाइन दस्तावेज़ों के टन पढ़े हैं, और उन उदाहरणों से जो मैंने पाया है, वे उपयोगकर्ता कोड पर उसी तरह कूद रहे हैं जैसा कि मैं करता हूं ... किसी भी मदद के लिए धन्यवाद।
यह भी काफी अपने पीसी पर समान काम करना चाहिए, लेकिन आभासी पते, बजाय के साथ शारीरिक - यह कोशिश करते हैं और देखते हैं कि यह काम करता है, तो कोड कोइल – Ulterior
पर ले जाएं कॉर्टेक्स एम 3 में कोई एमएमयू नहीं है, इसलिए कोई वर्चुअल एड्रेस नहीं है। –