Keil uVision MDK-Lite, STM32F072B-Discovery बोर्ड और फ्लैश एपीआई


10

मैं एक STMicroelectronics STM32F072B- डिस्को "डिस्कवरी" बोर्ड के साथ MDK- लाइट संस्करण 5.23 का उपयोग कर रहा हूं और मैं डिस्कवरी नमूनों द्वारा प्रदान किए गए फ्लैश उदाहरण का उपयोग करने का प्रयास कर रहा हूं।

मैंने अन्य उदाहरणों के लिए इस बोर्ड और टूलचिन का उपयोग किया है और मैंने कुछ एसपीआई और जीपीआईओ कोड काम किए हैं। आईडीई एक विजेता की तरह काम करता है। हालांकि, इस विशेष परियोजना के लिए मैं कोड का निर्माण कर सकता हूं और इसे रीसेट बटन डाउनलोड और उपयोग करके चला सकता हूं। जैसे ही मैं HAL_FLASHEx_Erase () दिनचर्या का उपयोग करता हूं, मैं प्रोजेक्ट पर डीबगर का उपयोग नहीं कर सकता। एक बार जब मैं उस दिनचर्या को अंजाम देता हूं, तो IDE एक डायलॉग "एक्सेस टारगेट नहीं कर सकता है। शट डाउन डिबग सत्र।"

इसके लायक क्या है, मुझे पता है कि यह एक प्रोग्रामिंग त्रुटि नहीं है क्योंकि अगर मैं कोड डाउनलोड करता हूं और फिर रीसेट बटन दबाकर कोड निष्पादित करता हूं तो यह काम करेगा। मैंने टीआई बोर्ड के साथ इसी डिबगर का उपयोग किया है और यह फ्लैश प्रोग्राम को चलाने और फ्लैश रूटीन को निष्पादित करने में सक्षम था। मुझे पूरा यकीन है कि मैं फ़्लैश के उस हिस्से को नहीं मिटा रहा हूँ जहाँ कोड संग्रहीत है, इसलिए ऐसा नहीं है।

अगर मैं मेन लाइन में इस लाइन पर कदम रखता हूँ

if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)

तब यह डीबग सत्र को छोड़ देता है। अगर मैं इसके बजाय एक ही पंक्ति में कदम रखता हूं और फिर फ्लैश इरेज रूटीन में प्रत्येक कॉल पर कदम रखता हूं, तो यह काम करेगा और अंततः रूटीन से हट जाएगा और मैं बाकी कोड को डीबग कर सकता हूं।


यकीन नहीं होता, लेकिन शायद CMSIS-DAP का USB साइड पावर-साइकल हो गया है। उस बोर्ड में बाहरी डिबग घटकों के लिए काफी जटिल बिजली वितरण है। लक्ष्य तक नहीं पहुंच सकता है, इसका अर्थ है कि डीएपी से कनेक्शन (सीरियल-वायर) टूट गया है।
सीन होउलहेन

क्या हम डिबगर के रूप में ऑन-बोर्ड ST-LINK / V2 के बारे में बात कर रहे हैं?
बेंस कौलिक्स

यदि आप एक कोड छवि साझा करने में सक्षम हैं, तो कोई और व्यक्ति सत्यापित कर सकता है (और हार्डवेयर समस्याओं को नियंत्रित कर सकता है)। केवल अपने आप में एक M7 बोर्ड है ...
शॉन हुलिएन

बेन्स कौलिक्स, इसके डिबगर को stm32f072B-डिस्को बोर्ड में बनाया गया है। इसका ST-Link डीबगर है, न कि एक केएल ULINK2 डिबगर जो ST-LINK / V2 है। मेरे पास उन केईएल यूएसबी से जुड़े डिबगर में से एक है, लेकिन यह एक रिबन केबल के साथ बोर्ड से जुड़ता है। मैं बोर्ड पर मिनी यूएसबी एसटी-लिंक कनेक्टर का उपयोग कर रहा हूं और रिबन केबल कनेक्टर का नहीं। बोर्ड मिनी-यूएसबी कनेक्टर से बिजली प्राप्त करता है न कि एक अलग बिजली आपूर्ति।
netskink

1
कोड नमूने के बारे में। नमूना STMicro से खोज रिपोट द्वारा प्रदान किया गया है। ST repot में प्रोजेक्ट का पथ प्रोजेक्ट / STM32F072B-Discovery / Examples / FLASH / FLASH_EraseProgram है। मैं उस निर्देशिका में एमडीके-एआरएम परियोजना का उपयोग कर रहा हूं। यह लाइन 108 पर विफल रहता है जहां यह HAL_FLASHEx_Erase ()
netskink

जवाबों:


7

मेरा अनुमान है कि यह किसी स्तर पर बिजली-आपूर्ति से संबंधित है। या तो बाहरी आपूर्ति, या बिजली की पटरियों पर ऑन-बोर्ड स्विचिंग।

परिदृश्य को स्पष्ट करने के लिए, डिबग एक हार्डवेयर रीसेट के बाद ठीक काम करता है, लेकिन जब आपका लक्ष्य फ्लैश के ब्लॉक को मिटा देता है, तो डिबग कनेक्शन को हटा दिया जाता है?

डिबग कोड को सही ढंग से चलाने के बारे में परवाह नहीं करता है - आप लॉकअप स्थिति में हो सकते हैं, और डिबेट को रोकने के लिए अभी भी काम करना चाहिए। CPU पक्ष में केवल एक चीज जो डीबग को लॉक करती है वह एक डेडलॉक की गई AHB एक्सेस है। इसका मतलब है कि समस्या या तो एसटीडी 32 एफ 7 के बीच एसडब्ल्यूडी इंटरफेस के साथ है, और ऑन-बोर्ड यूएसबी-एसडीडी इंटरफेस चिप (एसटीएम 32 भी है, मुझे लगता है)। इस डिवाइस में कुछ ऑन-बोर्ड पॉवर रेल स्विचिंग है जिसने मुझे पहली बार बोर्ड का उपयोग करने में भ्रमित किया।

यह ध्यान देने योग्य है कि फ्लैश मिटाए जाने से डिवाइस की वर्तमान नाली बढ़ जाएगी - क्या आपका बाहरी पीएसयू नौकरी तक है, और क्या आप एक विकल्प का उपयोग कर सकते हैं?

संपादित करें: आपकी प्रतिक्रिया के आधार पर प्रश्न में कोड पर कदम रखने से डिबगर क्रैश हो जाता है, जबकि सिंगल-स्टेपिंग नहीं होता है, मुझे लगता है कि आपका मुद्दा इस प्रश्न से संबंधित है ।

स्टेप-ओवर को एक ब्रेकपॉइंट (और हॉल्ट स्टेट के लिए मतदान) का उपयोग करके कार्यान्वित किया जाता है, जबकि सिंगल-स्टेप हार्डवेयर में समर्थित होता है। यह अभी भी नहीं समझाता है कि डिबगर क्यों भ्रमित हो रहा है, लेकिन क्या यह संभव है कि डिबगर कोड (फ्लैश से) का उपयोग करने की कोशिश कर रहा है, जबकि फ्लैश नियंत्रक सक्रिय है।

इन टिप्पणियों के आधार पर, मैं आपको मिटाए जाने के बाद एक विराम बिंदु निर्धारित करने का सुझाव दूंगा और इस परिदृश्य को चालू करने से बचने का प्रयास करूंगा ।


सही है, यह ठीक काम करता है, लेकिन जब मैं डिबगर ड्रॉप के यूएसबी कनेक्शन को ब्लॉक करता हूं। मैं एक बेकार USB हब का उपयोग कर रहा था ताकि यह तर्कसंगत लगे; हालाँकि, कंप्यूटर से सीधे जुड़ना और एक अलग हब का उपयोग करना एक ही परिणाम देता है।
नेट्सिंक

यदि आप फ्लैश एक्सेस करते हुए कोड चला रहे हैं, तो आप थोड़ी देर के लिए एएचबी को गतिरोध में डाल देंगे। मैं इस परिदृश्य में कदम इमेजिंग गड़बड़ हो सकता है। stackoverflow.com/questions/3445598 में अधिक है।
सीन होलीहेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.