मैं एक निर्माण सर्वर काइल uVision4 (MDK-ARM) के साथ कैसे उपयोग कर सकता हूं, एक बिल्ड स्क्रिप्ट, एक मेकफाइल का उपयोग कर सकता हूं?


13

मैं केएल एमडीके-एआरएम आधारित परियोजनाओं के दैनिक बिल्ड, या चेक-इन / कम ट्रिगर ट्रिगर का निर्माण करना चाहूंगा। अब तक मैं IDE के बैच फ़ाइल सुविधा के साथ जा रहा हूँ। इससे आपको कम से कम एक बार IDE के साथ प्रोजेक्ट बनाने की आवश्यकता होती है, फिर बैच फ़ाइल की जाँच करें .__iऔर ._iaIDE द्वारा बनाई गई फ़ाइलों और संबंधित फ़ाइलों की जाँच करें ।

इसके अतिरिक्त, IDE बैच फ़ाइल जैसे Windows PATH वैरिएबल में कई उपयोगकर्ता विशिष्ट चीजें डालता है। यह कई डेवलपर्स के लिए एक समस्या बन सकता है, क्योंकि बिल्डिंग के लिए बैच फ़ाइल को एक अलग डेवलपर से प्रत्येक कमिट में बदला जा सकता है।

अंत में, किसी को आर्मच , आर्मस्म और आर्मलिंक के लिए विभिन्न स्विचों पर नज़र रखने की आवश्यकता है ।

क्या Keil uVision प्रोजेक्ट्स बनाने के लिए अधिक मानक मेकफाइल का उपयोग करने का कोई तरीका है? क्या एक uVision परियोजना फ़ाइल को अधिक बनाए रखने योग्य बिल्ड स्क्रिप्ट में अनुवाद करने की एक विधि है?


मुझे लगता है कि यह बहुत अच्छा है कि आपके एक बिल्ड सर्वर को लागू कर रहे हैं। दुर्भाग्य से, मुझे केइल विकास प्रणाली के साथ कोई अनुभव नहीं है इसलिए मैं वास्तव में आपकी मदद नहीं कर सकता। मैं आपको एक समाधान पोस्ट करने के लिए प्रोत्साहित करना चाहूंगा यदि आप इसे प्राप्त करने के लिए काम करते हैं।
अर्ध

मैं किसी भी PATH निर्भरता (खुद Keil उपकरण के अलावा) या __i / _V फ़ाइलों के बिना बैच स्क्रिप्ट के माध्यम से Keil परियोजनाओं का निर्माण। क्या आप इस पर कोई और जानकारी साझा कर सकते हैं?
डिगिकाटा

1
@digikata मैं एक बैच फ़ाइल जनरेट करने के लिए IDE में से विकल्प का उपयोग कर रहा हूँ। यह केइल के प्रलेखन में वर्णित है यहाँ वर्णित एक कमांड लाइन संचालित विधि भी है , लेकिन मुझे उस कमांड से उचित कंसोल आउटपुट प्राप्त करने में कठिनाई हुई। दूसरी विधि एक नई प्रक्रिया शुरू करती है और आपको आउटपुट विंडो में आउटपुट विंडो को कॉपी करने का विकल्प देती है - बिल्ड सर्वर के लिए अच्छी विधि नहीं।
rmaVT

भविष्य के संदर्भ के लिए, इस सवाल का दायरा ओवरलैप के एक क्षेत्र में है जिसे हम अन्य स्टैक एक्सचेंज साइटों के साथ साझा करते हैं। केइल जैसे एम्बेडेड-विशिष्ट टूलचैन के बारे में प्रश्न निश्चित रूप से यहाँ स्वागत करते हैं! वे स्टैक ओवरफ्लो पर भी स्वागत करते हैं , लेकिन किसी भी स्थान पर पूछने के लिए स्वतंत्र महसूस करते हैं।
केविन वर्मर

1
@ क्वीनवर्मियर - हां, मैं खुद यही बात कहने वाला था। rmaVT, आप SO पर शैक्षिक रूप से "keil" टैग किए गए प्रश्नों को ब्राउज़ कर सकते हैं, जैसे कि EE SE पर "keil" टैग किए गए प्रश्न
दाविदरी

जवाबों:


8

यह सबसे अच्छी विधि है जो मैं हाल ही में लेकर आया हूं:

बिल्ड विकल्पों में, बैच फ़ाइल बनाएँ चुनें।

जब आप आईडीई से एक बिल्ड शुरू करते हैं, तो आईडीई में सेट किए गए विकल्पों के आधार पर कई टेक्स्ट फ़ाइलों के साथ एक बैच फ़ाइल बनाई जाती है। आपको स्रोत नियंत्रण में इन IDE जनरेट की गई फ़ाइलों को ट्रैक करने की आवश्यकता है:

  • *।बल्ला
  • * .ini
  • *।__मैं
  • *।_मैं एक
  • * .lnp
  • * .sct

तब foo.bat का निर्माण स्क्रिप्ट से किया जा सकता है।

हालांकि यह अतिरिक्त फ़ाइलों का निर्माण करता है जिन्हें स्रोत नियंत्रण में ट्रैक करने की आवश्यकता होती है यदि आप उत्पन्न बैच फ़ाइल से मज़बूती से निर्माण करना चाहते हैं, तो यह Keil प्रोजेक्ट फ़ाइल (foo.uvproj) और IDE पर भरोसा करने की आवश्यकता को दूर करता है। मुझे मतभेदों की तुलना करना आसान लगता है, और इस प्रकार परिवर्तन को ट्रैक की गई टेक्स्ट फ़ाइलों (* .__ i) में बदल दिया जाता है, जिसमें .uvproj फ़ाइल की तुलना में संकलक होते हैं। इसके अतिरिक्त, बैच फ़ाइल सीधे विभिन्न उपकरणों को बुलाती है, अर्धसूत्रीविभाजन, आर्मक, आर्मिलिंक, सीधे। यह आपको उन चरणों में से प्रत्येक के प्रत्यक्ष उत्पादन के साथ-साथ यदि आवश्यक हो तो भविष्य में एक अलग उपकरण श्रृंखला में एक परियोजना को स्थानांतरित करने के लिए एक उचित रूप से बेहतर क्षमता देता है।

मुझे पता है कि यह उत्तर मेरे मूल प्रश्न की तरह लगता है, लेकिन मैं वास्तव में केइल के उपकरण के साथ एक स्क्रिप्टेड बिल्ड को चलाने के बेहतर तरीके के बारे में नहीं जानता। मैंने यह देखने के लिए कहा कि दूसरों से क्या हो सकता है। मैं @digikata के उत्तर से पूरी तरह असहमत नहीं हूं, लेकिन मैं कंपाइलर झंडे और मेमोरी मैप को ट्रैकिंग के लिए एक आसान प्रारूप में रखना पसंद करता हूं और एक ऑल-इन-वन संकलन शुरू करने के बजाय संकलन के लिए अधिक यूनिक्स शैली के टूल का उपयोग करना चाहता हूं। आईडीई के साथ। मुझे लगता है कि IDE से ऑल-इन-वन संकलन मेरे कार्य केंद्र में अच्छी तरह से काम करता है, लेकिन बिल्ड सर्वर के लिए नहीं।

संपादित करें : बिल्ड सर्वर विंडोज सर्वर 2003 पर चलता है। मुझे यह स्वीकार करना चाहिए कि मैंने बैच फ़ाइल के बजाय आईडीई कमांड लाइन इंटरफ़ेस का उपयोग करने से संबंधित किया है। यह सिर्फ प्रबंधित करना बहुत मुश्किल हो गया।


इस कार्य के बारे में एक प्रश्न - आपका ऑपरेटिंग सर्वर किस ऑपरेटिंग सिस्टम पर चल रहा है? लिनक्स, विंडोज 7, विंडोज सर्वर 2003, विंडोज सर्वर 2008?
क्रिमसनएक्स

सवाल का जवाब देने के लिए धन्यवाद! ऐसा लगता है कि आर्म टूलचैन विंडोज सर्वर 2003 और 2008 R2 प्रति केइल डॉक्यूमेंटेशन पर काम करता है । अपने संपादन के संबंध में एक अनुवर्ती प्रश्न: आप uvproj फ़ाइल में परिवर्तनों को कैसे संभालते हैं (जैसे कि संकलन के लिए प्रोजेक्ट में एक नई फ़ाइल जोड़ना)? क्या आपको मैन्युअल रूप से बिल्ड सर्वर पर पदोन्नत फ़ाइल में संकलन विकल्पों को बदलना होगा?
क्रिमसनएक्स

आपको .uvproj फ़ाइल को स्रोत नियंत्रण में रखना होगा। यह बहुत अच्छी तरह से काम करता है, हालाँकि .userxxxxx फ़ाइल जो उत्पन्न होती है, उसके बावजूद कुछ उपयोगकर्ता प्राथमिकताएँ फ़ाइल में शेष हैं। बिल्ड सर्वर को बस उसी "प्रोजेक्ट" को खोलने और इसे बनाने की आवश्यकता है।
rmaVT

3

मैं मेकफाइल के भीतर से (एक उत्पन्न बैच फ़ाइल नहीं) बनाने के लिए कमांड लाइन के माध्यम से केइल आईडीई को कॉल करता हूं। आमतौर पर यह स्कैम के माध्यम से प्रोजेक्ट फाइलों को लॉक करने के लिए बेहतर काम करता है, या ऐसा करते समय संबंधित प्रोजेक्ट नामों का नाम बदलने के लिए एक संदर्भ बिल्ड कॉपी लें।

आईडीई रीड-ओनली प्रोजेक्ट फाइलों के साथ काम करने के लिए पूरी तरह से खुश है, इसलिए यदि आप उन्हें बंद कर देते हैं, तो चिढ़ यह है कि आपको सेटिंग्स बदलने, सहेजने और उन्हें वापस जांचने के लिए उन्हें अनलॉक करने की आवश्यकता है। यदि आप काफी स्थिर हैं। परियोजना में बिंदु यह बहुत मामूली है - वांछनीय भी।

यदि आप एक संदर्भ प्रतिलिपि लेते हैं, तो बिल्ड प्रोजेक्ट सेटिंग्स में बदलाव के रूप में टूट जाता है - विशेष रूप से प्रोजेक्ट फ़ाइलों को संकलन से जोड़ा या गिरा दिया जाता है। स्पष्ट रूप से उन परिवर्तनों को कैप्चर करना आवश्यक रूप से बुरा नहीं है, लेकिन बिल्ड को बनाए रखने के लिए आवश्यक एक अतिरिक्त कदम है।

किसी भी तरह से, आउटपुट फ़ाइल को "-ओ" विकल्प के माध्यम से लॉग फ़ाइल पर पुनर्निर्देशित करने से आप पूर्ण आउटपुट लॉग तक पहुंच सकते हैं। लॉग एक समय में एक पंक्ति से बाहर नहीं निकलता है, लेकिन यह सभी को लगता है। (मैं वास्तव में ग्रहण सीडीटी पर्यावरण के साथ एकीकरण के लिए जीएनयू एफएमटी को केइल त्रुटि प्रारूप को पार्स करता हूं। यह मुझे बिल्ड के बाद त्रुटियों / चेतावनियों पर सीधे कूदने देता है)

कमांड-लाइन बिल्ड भी __i, __ia फाइलें उत्पन्न करता है, इसलिए उन्हें बिल्ड सर्वर के लिए संस्करण नियंत्रण में जाने की आवश्यकता नहीं है।

उम्मीद है की यह मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.