मैं कॉर्टेक्स-एम 3 प्रोसेसर (एसटीएम 32) पर रैम से फ़ंक्शन निष्पादित करने का प्रयास कर रहा हूं। फ़ंक्शन आंतरिक फ्लैश को मिटा देता है और फिर से लिखता है, इसलिए मुझे निश्चित रूप से रैम में होना चाहिए लेकिन मैं यह कैसे कर सकता हूं?मैं कॉर्टेक्स-एम 3 (एसटीएम 32) पर रैम से फ़ंक्शन निष्पादित कैसे करूं?
मैंने जो कोशिश की है वह यह है: memcpy का उपयोग करके फ़ंक्शन में एक बाइट सरणी में फ़ंक्शन कॉपी करें (यह जांचकर कि यह सही ढंग से गठबंधन हो जाता है), बाइट सरणी को इंगित करने के लिए फ़ंक्शन पॉइंटर सेट करना, फिर फ़ंक्शन को कॉल करना (पॉइंटर) ।
यह 10 निर्देशों के लिए ठीक काम करता है (मैं डीबगर के साथ निष्पादन का पालन कर सकता हूं) लेकिन फिर मुझे एक गड़बड़ त्रुटि मिलती है और प्रोसेसर रीसेट हो जाता है। एक लूप के माध्यम से दूसरे पास पर बस त्रुटि होती है, इसलिए कोड ठीक होना चाहिए (क्योंकि यह पहला पास काम करता है)। मैं सोच रहा हूं कि तेजी से रैम पहुंच कुछ तरीकों से बस टाइम को मक्स कर देती है ...
वैसे भी ऐसा करने का कोई सही तरीका है? एक स्कैटर फ़ाइल कैसा दिखता है जो स्वचालित रूप से रैम में एक फ़ंक्शन रखता है (मैं कॉर्टेक्स-एम 3 के लिए केइल यूविजन का उपयोग कर रहा हूं)?
संपादित करें: अधिक जानकारी: Toolchain: RealView MDK-एआरएम वी 4.10 संकलक: Armcc v4.0.0.728 असेंबलर: Armasm v4.0.0.728 लिंकर: ArmLink v4.0.0.728 प्रोसेसर: STM32F103ZE
रीसेट होने पर IMPRECISERR बिट बस गलती रजिस्टर में सेट होता है।
उम्मम मुझे लगता है कि निर्माता के मंच पर आपको कम या कम पोस्ट करना चाहिए क्योंकि आप एक विशिष्ट हार्डवेयर का उपयोग कर रहे हैं, फिर भी, क्या आप अधिक विवरण दे सकते हैं, आप किस कंपाइलर का उपयोग कर रहे हैं, आप इसे कैसे डिबग कर रहे हैं, कोई कोड नमूने, शायद * एक * व्यक्ति जिसके पास ज्ञान है, उसके अलावा इसका उत्तर देने में सक्षम हो सकता है .... – t0mm13b
@ tommieb75: लेकिन मुझे आपसे ज्यादा पसंद है! – c0m4