क्या कभी PIC का कोडिंग के लिए C ++ का उपयोग करना संभव है?
हाँ, यह अब संभव है। DsPIC के लिए, IAR सिस्टम्स C ++ कंपाइलर है (हालांकि यह बहुत पुराना है और समर्थित नहीं है)।
एक अन्य विकल्प C ++ से C कनवर्टर का उपयोग करना है। प्री-बिल्ड चरण का उपयोग करते हुए, C ++ को C में कनवर्ट करें, फिर अपने सामान्य C कंपाइलर को C (नॉटी लुकिंग) C दें। LLVM या Comeau के C ++ कंपाइलर पर एक नज़र डालें जो दोनों ऐसा करते हैं। कोमू केवल $ 50 है, लेकिन संभवत: पूरे टूलचेन और पुस्तकालयों को ठीक से काम करने के लिए कुछ प्रयास करना होगा।
क्या कोई हार्डवेयर सीमाएं हैं जो हमें C ++ का उपयोग करने से रोकती हैं?
लघु उत्तर, नहीं, कोई हार्डवेयर सीमाएँ नहीं हैं। लंबे उत्तर, सी ++ निश्चित रूप से एक ढेर और / या स्टैक के उपयोग को प्रोत्साहित करता है, जो सीमित रैम के साथ छोटे एमसीयू के साथ संघर्ष करेगा।
वे एक ढेर / ढेर के साथ संघर्ष क्यों करते हैं? दो कारणों से: ए) कई एमसीयू में सीमित रैम होती है, जो निश्चित रूप से ढेर के लिए पर्याप्त नहीं होती है, और बमुश्किल एक स्टैक के लिए पर्याप्त होती है। बी) कई MCUs पॉइंटर्स को अच्छी तरह से हैंडल नहीं करते हैं, इसलिए स्टैक पर वेरिएबल्स का उपयोग वास्तव में प्रदर्शन को मारता है।
जब लोग MCU पर C ++ का उपयोग करने के बारे में पूछते हैं, तो मुझे C ++ से C की तुलना करने के लिए रचनात्मक लगता है। सटीक वही प्रश्न थे (और अभी भी हैं) MCU पर C के बारे में पूछा गया। लोग आइडिया पर गंजा हो जाते थे। 256 बाइट रैम MCU पर एक उच्च स्तरीय भाषा, ?? असंभव। लेकिन अब हम सभी जानते हैं कि यह संभव है। मैंने PIC12 के लिए C लिखा है। कोई दिक्कत नहीं है। यह संभव है क्योंकि ए) सॉफ़्टवेयर डेवलपर्स को पता है कि उन्हें थोड़ा सावधान रहना होगा: मॉलॉक () आदि और बी का उपयोग न करें। कंपाइलर को विशेष रूप से एमसीयू के लिए लिखा गया है। संकलक मेमोरी आवंटन के साथ अतिरिक्त सावधान भी होगा, यह एक ढेर बनाने की कोशिश नहीं करेगा और एक स्टैक नहीं बना सकता है। कुछ सी कंपाइलर बस आपको री-एंट्रेंट (पुनरावर्ती) कोड लिखने की अनुमति नहीं देंगे, जिसके लिए पूरी तरह से स्टैक की आवश्यकता होती है।
यह जानते हुए कि MCU के लिए C लिखना संभव है, MCU पर C ++ लिखने के प्रश्न पर भी यही उत्तर लागू होते हैं। जब तक कंपाइलर लक्ष्य डिवाइस की सीमाओं को समझता है, और उपयोगकर्ता भाषा को भी समझता है, वास्तव में कोई समस्या नहीं है। C ++ में, आप केवल उसी चीज़ का भुगतान करते हैं जो आप उपयोग करते हैं। C ++ (ऑब्जेक्ट्स और सब कुछ के साथ) लिखना पूरी तरह से संभव है जो आपके द्वारा प्राप्त सी का उपयोग करने पर आपके द्वारा प्राप्त किए गए सटीक एसएसएम आउटपुट का उत्पादन करेगा।
अब, PIC32s निश्चित रूप से C ++ के साथ सामना कर सकते हैं। उनके पास 64kB तक रैम है, और MIPS कोर पर आधारित हैं, जो कि 32-बिट प्रोसेसर के साथ ठीक से उगाया जाता है। यह पॉइंटर्स और स्टैक के साथ-साथ पीसी से भी निपट सकता है। दरअसल, MIPS पर आधारित पीसी हैं (या कम से कम, वहां उपयोग किया जाता है)।
अफसोस की बात है कि C ++ को लेकर इतनी गलतफहमी है। यहां तक कि बहुत अनुभवी कोडर्स को भी पता नहीं है कि भाषा कैसे काम करती है। सी + + एम्बेडेड सीपीयू पर उपयुक्त क्यों है, इस पर मेरा जवाब देखें ।
जब हम C ++ के बजाय C ++ का उपयोग करते हैं, तो प्रोग्राम की .hex फ़ाइल और प्रोग्राम का रनिंग समय कितना बढ़ जाता है?
जैसा कि मैंने कहा, कोई अंतर नहीं हो सकता है। Bjarne Stroustrup ने कई कार्यों के लिए समय और स्थान के प्रदर्शन की तुलना करने के लिए C / C ++ कंपाइलरों के एक समूह की तुलना की। परिणाम व्यापक रूप से भिन्न हैं। कुछ मामलों में, C ++ धीमी और बड़ी निकली, कुछ मामले धीमे और छोटे, या अधिक तेज़ और बड़े और इससे भी तेज़ और छोटे! तो, आपके प्रश्न का उत्तर यह है कि यह कंपाइलर पर बहुत अधिक निर्भर करता है, लेकिन सामान्य तौर पर, इसे कोई फर्क नहीं पड़ता है। अधिक विवरण के लिए, C ++ प्रदर्शन पर तकनीकी रिपोर्ट देखें
क्या इस पर भविष्य की कोई योजना या विकास चल रहा है?
यह मैं नहीं जानता। मुझे पता है कि माइक्रोचिप सी 32 संकलक खुला है, और आप स्रोत डाउनलोड कर सकते हैं। मुझे यह भी पता है कि मैंने जिस व्यक्ति के साथ काम किया है, उसने वास्तव में कुछ निर्देशों को ऑनलाइन पाया और सी ++ कोड को संकलित करने के लिए कंपाइलर प्राप्त करने में कामयाब रहा। लेकिन उन्होंने मुझे एक उचित उपकरण श्रृंखला के साथ स्थापित करने में सक्षम होने से पहले कंपनी छोड़ दी।
अपडेट करें
माइक्रोचिप में अब एम्बेडेड MCU के PIC32 रेंज के लिए C ++ कंपाइलर उपलब्ध है।