एसआरईसी (फ़ाइल प्रारूप): Difference between revisions

From Vigyanwiki
No edit summary
 
(8 intermediate revisions by 3 users not shown)
Line 4: Line 4:
{{Use list-defined references|date=December 2021}}
{{Use list-defined references|date=December 2021}}
{{Infobox file format
{{Infobox file format
|name      = S-record
|name      = एस-रिकॉर्ड
|icon      =
|icon      =
|screenshot = [[File:Motorola SREC Chart.png|border|230px]]
|screenshot = [[File:Motorola SREC Chart.png|border|230px]]
|caption    = A quick reference chart for the Motorola SREC format. (Note that in the record example image the word "bytes" is alternatively used to specify characters.)
|caption    = मोटोरोला एसआरईसी प्रारूप के लिए एक त्वरित संदर्भ चार्ट। (ध्यान दें कि रिकॉर्ड उदाहरण छवि में "बाइट्स" शब्द का उपयोग वैकल्पिक रूप से वर्ण निर्दिष्ट करने के लिए किया जाता है।)
|extension  = <code>.s19</code>, <code>.s28</code>, <code>.s37</code>, <code>.s</code>, <code>.s1</code>, <code>.s2</code>, <code>.s3</code>, <code>.sx</code>, <code>.srec</code>, <code>.exo</code>,<ref name="Xilinx_2010_EXO"/> <code>.mot</code>, <code>.mxt</code>
|extension  = <code>.s19</code>, <code>.s28</code>, <code>.s37</code>, <code>.s</code>, <code>.s1</code>, <code>.s2</code>, <code>.s3</code>, <code>.sx</code>, <code>.srec</code>, <code>.exo</code>,<ref name="Xilinx_2010_EXO"/> <code>.mot</code>, <code>.mxt</code>
|mime      =
|mime      =
|developer  = Motorola
|developer  = मोटोरोला
|type      =
|type      =
|url        =
|url        =
}}
}}


'''मोटोरोला S-रिकॉर्ड''' एक फ़ाइल स्वरूप है, जो 1970 के दशक के मध्य में मोटोरोला द्वारा बनाया गया था, जो बाइनरी जानकारी को ASCII टेक्स्ट फॉर्म में हेक्स मान के रूप में बताता है। इस फ़ाइल फॉर्मेट को '''SRECORD, SREC, S19, S28, S37''' के रूप में भी जाना जा सकता है। इसका उपयोग आमतौर पर माइक्रोकंट्रोलर्स, [[ईपीरोम]], [[ईईपीरोम]] और अन्य टाइप के प्रोग्रामेबल लॉजिक उपकरणों में [[फ्लैश मेमोरी]] प्रोग्रामिंग के लिए किया जाता है। एक विशिष्ट एप्लिकेशन में, एक कंपाइलर या असेंबलर प्रोग्राम के सोर्स कोड (जैसे सी या असेंबली लैंग्वेज) को मशीन कोड में परिवर्तित करता है और इसे HEX फ़ाइल में आउटपुट करता है। फिर HEX फ़ाइल को प्रोग्रामर द्वारा मशीन कोड को गैर-वाष्पशील मेमोरी में "बर्न" करने के लिए आयात किया जाता है, या लोडिंग और निष्पादन के लिए लक्ष्य सिस्टम में स्थानांतरित किया जाता है।
'''मोटोरोला S-रिकॉर्ड''' एक फ़ाइल फॉर्मेट है, जो 1970 के दशक के मध्य में मोटोरोला द्वारा बनाया गया था, जो बाइनरी जानकारी को ASCII टेक्स्ट फॉर्म में हेक्स मान के रूप में बताता है। इस फ़ाइल फॉर्मेट को '''SRECORD, SREC, S19, S28, S37''' के रूप में भी जाना जा सकता है। इसका उपयोग सामान्यतः माइक्रोकंट्रोलर्स, [[ईपीरोम|EPROM]], [[ईईपीरोम]] और अन्य टाइप के प्रोग्रामेबल लॉजिक उपकरणों में [[फ्लैश मेमोरी]] प्रोग्रामिंग के लिए किया जाता है। एक विशिष्ट एप्लिकेशन में, कंपाइलर या असेंबलर प्रोग्राम के सोर्स कोड (जैसे सी या असेंबली लैंग्वेज) को मशीन कोड में परिवर्तित करता है और इसे HEX फ़ाइल में आउटपुट करता है। फिर HEX फ़ाइल को प्रोग्रामर द्वारा मशीन कोड को नॉन-वोलेटाइल  मेमोरी में "बर्न" करने के लिए आयात किया जाता है, या लोडिंग और निष्पादन के लिए लक्ष्य सिस्टम में स्थानांतरित किया जाता है।


==अवलोकन==
==अवलोकन==
Line 23: Line 23:


===अन्य हेक्स फॉर्मेट===
===अन्य हेक्स फॉर्मेट===
समान उद्देश्य के साथ अन्य ASCII एन्कोडिंग भी हैं। BPNF, BHLF, और B10F प्रारंभिक बाइनरी फॉर्मेट थे, लेकिन वे न तो कॉम्पैक्ट हैं और न ही फ्लेक्सिबल हैं। हेक्साडेसिमल फॉर्मेट अधिक कॉम्पैक्ट हैं क्योंकि वे प्रति वर्ण 1 बिट के बजाय 4 बिट का प्रतिनिधित्व करते हैं। कई, जैसे S-रिकॉर्ड, अधिक लचीले होते हैं क्योंकि उनमें एड्रेस जानकारी शामिल होती है ताकि वे PROM के केवल एक हिस्से को निर्दिष्ट कर सकें। इंटेल HEX फॉर्मेट का उपयोग अक्सर इंटेल प्रोसेसर के साथ किया जाता था। [[टेकहेक्स]] एक और हेक्स फॉर्मेट है जिसमें डिबगिंग के लिए एक प्रतीक तालिका शामिल हो सकती है।
समान उद्देश्य के साथ अन्य ASCII एन्कोडिंग भी हैं। BPNF, BHLF, और B10F प्रारंभिक बाइनरी फॉर्मेट थे, लेकिन वे न तो कॉम्पैक्ट हैं और न ही फ्लेक्सिबल हैं। हेक्साडेसिमल फॉर्मेट अधिक कॉम्पैक्ट हैं क्योंकि वे प्रति कैरेक्टर 1 बिट के बजाय 4 बिट का प्रतिनिधित्व करते हैं। कई, जैसे S-रिकॉर्ड, अधिक लचीले होते हैं क्योंकि उनमें एड्रेस जानकारी सम्मिलित होती है ताकि वे PROM के केवल एक हिस्से को निर्दिष्ट कर सकें। इंटेल HEX फॉर्मेट का उपयोग प्रायः इंटेल प्रोसेसर के साथ किया जाता था। [[टेकहेक्स]] और हेक्स फॉर्मेट है जिसमें डिबगिंग के लिए एक प्रतीक तालिका सम्मिलित हो सकती है।


==फॉर्मेट==
==फॉर्मेट==
Line 32: Line 32:
| style='background: #FFCCCC' | S || style='background: #FFCCCC' | Type || style='background: #CCFFCC' | Byte Count || style='background: #CCCCFF' | Address || style='background: #CCFFFF' | Data || style='background: #CCCCCC' | Checksum
| style='background: #FFCCCC' | S || style='background: #FFCCCC' | Type || style='background: #CCFFCC' | Byte Count || style='background: #CCCCFF' | Address || style='background: #CCFFFF' | Data || style='background: #CCCCCC' | Checksum
|}
|}
SREC प्रारूप फ़ाइल में ASCII टेक्स्ट रिकॉर्ड की एक श्रृंखला होती है। रिकॉर्ड्स में बाएं से दाएं निम्नलिखित संरचना है:
SREC फॉर्मेट फ़ाइल में ASCII टेक्स्ट रिकॉर्ड की एक श्रृंखला होती है। रिकॉर्ड्स में बाएं से दाएं निम्नलिखित संरचना है:
# ''रिकॉर्ड स्टार्ट''- प्रत्येक रिकॉर्ड एक बड़े अक्षर S अक्षर (ASCII 0x53) से शुरू होता है जो स्टार्ट-ऑफ़-रिकॉर्ड के लिए है।<ref name="Wiles-Felix_1975"/>
# ''रिकॉर्ड स्टार्ट''- प्रत्येक रिकॉर्ड एक बड़े अक्षर S अक्षर (ASCII 0x53) से प्रारम्भ होता है जो स्टार्ट-ऑफ़-रिकॉर्ड के लिए है।<ref name="Wiles-Felix_1975"/>
#''रिकॉर्ड टाइप''- एकल संख्यात्मक अंक 0 से 9 वर्ण (ASCII 0x30 से 0x39), जो रिकॉर्ड के टाइप को परिभाषित करता है। नीचे दी गई तालिका देखें।
#''रिकॉर्ड टाइप''- एकल संख्यात्मक अंक 0 से 9 कैरेक्टर (ASCII 0x30 से 0x39), जो रिकॉर्ड के टाइप को परिभाषित करता है। नीचे दी गई तालिका देखें।
# ''बाइट काउंट'' - दो हेक्साडेसिमल अंक (00 से एफएफ), जो बाकी रिकॉर्ड (address + data + checksum) में आने वाले बाइट्स (हेक्स अंक जोड़े) की संख्या को दर्शाता है। इस फ़ील्ड का न्यूनतम मान 3 (16-बिट एड्रेस फ़ील्ड के लिए 2 प्लस 1 चेकसम बाइट) और अधिकतम मान 255 (0xFF) है। "00" / "01" / "02" अवैध मान हैं।
# ''बाइट काउंट'' - दो हेक्साडेसिमल अंक (00 से एफएफ), जो बाकी रिकॉर्ड (address + data + checksum) में आने वाले बाइट्स (हेक्स अंक जोड़े) की संख्या को दर्शाता है। इस फ़ील्ड का न्यूनतम मान 3 (16-बिट एड्रेस फ़ील्ड के लिए 2 प्लस 1 चेकसम बाइट) और अधिकतम मान 255 (0xFF) है। "00" / "01" / "02" अवैध मान हैं।
# ''एड्रेस'' - रिकॉर्ड टाइप के अनुसार निर्धारित चार/छह/आठ हेक्स अंक। एड्रेस बाइट्स बिग-एंडियन फॉर्मेट में व्यवस्थित हैं।
# ''एड्रेस'' - रिकॉर्ड टाइप के अनुसार निर्धारित चार/छह/आठ हेक्स अंक। एड्रेस बाइट्स बिग-एंडियन फॉर्मेट में व्यवस्थित हैं।
# ''डेटा'' - डेटा के ''n'' बाइट्स के लिए ''2n'' हेक्स अंकों का एक क्रम। S1/S2/S3 रिकॉर्ड के लिए, प्रति रिकॉर्ड अधिकतम 32 बाइट्स सामान्य है क्योंकि यह 80 कैरेक्टर चौड़ी टर्मिनल स्क्रीन पर फिट होगा, हालांकि 16 बाइट्स एक विशिष्ट एड्रेस पर प्रत्येक बाइट को विज़ुअली डिकोड करना आसान होगा।
# ''डेटा'' - डेटा के ''n'' बाइट्स के लिए ''2n'' हेक्स अंकों का एक क्रम। S1/S2/S3 रिकॉर्ड के लिए, प्रति रिकॉर्ड अधिकतम 32 बाइट्स सामान्य है क्योंकि यह 80 कैरेक्टर चौड़ी टर्मिनल स्क्रीन पर फिट होगा, हालांकि 16 बाइट्स एक विशिष्ट एड्रेस पर प्रत्येक बाइट को विज़ुअली डिकोड करना आसान होगा।
# चेकसम - दो हेक्स अंक, बाइट गणना, एड्रेस और डेटा फ़ील्ड के लिए दो हेक्स अंक जोड़े द्वारा दर्शाए गए मानों के योग का सबसे कम महत्वपूर्ण बाइट। C प्रोग्रामिंग भाषा में, योग को चेकसम में परिवर्तित किया जाता है: <code>0xFF - (sum & 0xFF)</code><br />
# चेकसम - दो हेक्स अंक, बाइट गणना, एड्रेस और डेटा फ़ील्ड के लिए दो हेक्स अंक जोड़े द्वारा दर्शाए गए मानों के योग का सबसे कम महत्वपूर्ण बाइट। C प्रोग्रामिंग लैंग्वेज में, योग को चेकसम में परिवर्तित किया जाता है: <code>0xFF - (sum & 0xFF)</code><br />
===टेक्स्ट लाइन टर्मिनेटर===
===टेक्स्ट लाइन टर्मिनेटर===
SREC रिकॉर्ड को एक या अधिक ASCII लाइन समाप्ति वर्णों द्वारा अलग किया जाता है ताकि प्रत्येक रिकॉर्ड एक टेक्स्ट लाइन पर अकेला दिखाई दे। यह रिकॉर्ड को दृष्टिगत रूप से सीमित करके सुपाठ्यता को बढ़ाता है और यह रिकॉर्ड के बीच पैडिंग भी प्रदान करता है जिसका उपयोग मशीन पार्सिंग दक्षता में सुधार करने के लिए किया जा सकता है।
SREC रिकॉर्ड को एक या अधिक ASCII लाइन समाप्ति वर्णों द्वारा अलग किया जाता है ताकि प्रत्येक रिकॉर्ड एक टेक्स्ट लाइन पर अकेला दिखाई दे। यह रिकॉर्ड को दृष्टिगत रूप से सीमित करके सुपाठ्यता को बढ़ाता है और यह रिकॉर्ड के बीच पैडिंग भी प्रदान करता है जिसका उपयोग मशीन पार्सिंग दक्षता में सुधार करने के लिए किया जा सकता है।


प्रोग्राम जो HEX रिकॉर्ड बनाते हैं, आमतौर पर लाइन टर्मिनेशन कैरेक्टर का उपयोग करते हैं जो उनके [[ऑपरेटिंग सिस्टम]] के सम्मेलनों के अनुरूप होते हैं। उदाहरण के लिए, लिनक्स प्रोग्राम लाइनों को समाप्त करने के लिए एकल एलएफ कैरेक्टर (लाइन फीड, एएससीआईआई कैरेक्टर वैल्यू के रूप में 0x0A) कैरेक्टर का उपयोग करते हैं, जबकि विंडोज़ प्रोग्राम एक एलएफ कैरेक्टर के बाद सीआर कैरेक्टर ([[कैरिज रिटर्न]], एएससीआईआई कैरेक्टर वैल्यू के रूप में 0x0D) का उपयोग करते हैं।
प्रोग्राम जो HEX रिकॉर्ड बनाते हैं, सामान्यतः लाइन टर्मिनेशन कैरेक्टर का उपयोग करते हैं जो उनके [[ऑपरेटिंग सिस्टम]] के सम्मेलनों के अनुरूप होते हैं। उदाहरण के लिए, लिनक्स प्रोग्राम लाइनों को समाप्त करने के लिए एकल LF कैरेक्टर (लाइन फीड, एएससीआईआई कैरेक्टर वैल्यू के रूप में 0x0A) कैरेक्टर का उपयोग करते हैं, जबकि विंडोज़ प्रोग्राम LF कैरेक्टर के बाद सीआर कैरेक्टर ([[कैरिज रिटर्न]], एएससीआईआई कैरेक्टर वैल्यू के रूप में 0x0D) का उपयोग करते हैं।


===रिकॉर्ड टाइप===
===रिकॉर्ड टाइप===
Line 63: Line 63:
"0000"
"0000"
| {{Na}}
| {{Na}}
|इस रिकॉर्ड में विक्रेता विशिष्ट ASCII टेक्स्ट टिप्पणी शामिल है जिसे हेक्स अंक जोड़े की एक श्रृंखला के रूप में दर्शाया गया है। इस रिकॉर्ड के डेटा को शून्य-समाप्त स्ट्रिंग के प्रारूप में देखना आम बात है। टेक्स्ट डेटा निम्नलिखित जानकारी के मिश्रण सहित कुछ भी हो सकता है: फ़ाइल/मॉड्यूल नाम, संस्करण/संशोधन संख्या, दिनांक/समय, उत्पाद का नाम, विक्रेता का नाम, पीसीबी पर मेमोरी डिज़ाइनर, कॉपीराइट नोटिस, साइन ऑन।<ref name="Hennig-Roleff_1993" /> यह देखना आम है: 48, 44, 52 जो "H", "D", "आर" अक्षरों का एएससीआईआई प्रतिनिधित्व है।<ref name="Unix-SREC" />
|इस रिकॉर्ड में विक्रेता विशिष्ट ASCII टेक्स्ट कमेंट सम्मिलित है जिसे हेक्स अंक जोड़े की एक श्रृंखला के रूप में दर्शाया गया है। इस रिकॉर्ड के डेटा को शून्य-समाप्त स्ट्रिंग के फॉर्मेट में देखना आम बात है। टेक्स्ट डेटा निम्नलिखित जानकारी के मिश्रण सहित कुछ भी हो सकता है: फ़ाइल/मॉड्यूल नाम, संस्करण/संशोधन संख्या, दिनांक/समय, उत्पाद का नाम, विक्रेता का नाम, पीसीबी पर मेमोरी डिज़ाइनर, कॉपीराइट नोटिस, साइन ऑन।<ref name="Hennig-Roleff_1993" /> यह देखना आम है: 48, 44, 52 जो "H", "D", "आर" अक्षरों का एएससीआईआई प्रतिनिधित्व है।<ref name="Unix-SREC" />
|-
|-
|''S1''
|''S1''
Line 70: Line 70:
एड्रेस
एड्रेस
| {{Ya}}
| {{Ya}}
|इस रिकॉर्ड में वह डेटा है जो 16-बिट एड्रेस पर शुरू होता है।<ref name="Unix-SREC" /><ref name="Hennig-Roleff_1993" /> इस रिकॉर्ड में मौजूद डेटा के बाइट्स की संख्या "बाइट काउंट फ़ील्ड" माइनस 3 ("16-बिट एड्रेस फ़ील्ड" के लिए 2 बाइट्स प्लस "चेकसम फ़ील्ड" के लिए 1 बाइट) है। यह रिकॉर्ड आमतौर पर 8-बिट प्रोसेसर, जैसे 6502 , 6800 , 8051 , Z80 , AVR , PIC के लिए उपयोग किया जाता है ।
|इस रिकॉर्ड में वह डेटा है जो 16-बिट एड्रेस पर प्रारम्भ होता है।<ref name="Unix-SREC" /><ref name="Hennig-Roleff_1993" /> इस रिकॉर्ड में उपस्थित डेटा के बाइट्स की संख्या "बाइट काउंट फ़ील्ड" माइनस 3 ("16-बिट एड्रेस फ़ील्ड" के लिए 2 बाइट्स प्लस "चेकसम फ़ील्ड" के लिए 1 बाइट) है। यह रिकॉर्ड सामान्यतः 8-बिट प्रोसेसर, जैसे 6502 , 6800 , 8051 , Z80 , AVR , PIC के लिए उपयोग किया जाता है ।
|-
|-
|''S2''
|''S2''
Line 77: Line 77:
एड्रेस
एड्रेस
| {{Ya}}
| {{Ya}}
|इस रिकॉर्ड में वह डेटा शामिल है जो 24-बिट एड्रेस पर शुरू होता है।<ref name="Unix-SREC" /> इस रिकॉर्ड में मौजूद डेटा के बाइट्स की संख्या "बाइट काउंट फ़ील्ड" माइनस 4 ("24-बिट एड्रेस फ़ील्ड" के लिए 3 बाइट्स प्लस "चेकसम फ़ील्ड" के लिए 1 बाइट) है।
|इस रिकॉर्ड में वह डेटा सम्मिलित है जो 24-बिट एड्रेस पर प्रारम्भ होता है।<ref name="Unix-SREC" /> इस रिकॉर्ड में उपस्थित डेटा के बाइट्स की संख्या "बाइट काउंट फ़ील्ड" माइनस 4 ("24-बिट एड्रेस फ़ील्ड" के लिए 3 बाइट्स प्लस "चेकसम फ़ील्ड" के लिए 1 बाइट) है।
|-
|-
|''S3''
|''S3''
Line 84: Line 84:
एड्रेस
एड्रेस
| {{Ya}}
| {{Ya}}
|इस रिकॉर्ड में वह डेटा है जो 32-बिट एड्रेस पर शुरू होता है।<ref name="Unix-SREC" /> इस रिकॉर्ड में मौजूद डेटा के बाइट्स की संख्या "बाइट काउंट फ़ील्ड" माइनस 5 ("32-बिट एड्रेस फ़ील्ड" के लिए 4 बाइट्स प्लस "चेकसम फ़ील्ड" के लिए 1 बाइट) है। यह रिकॉर्ड आमतौर पर 32-बिट प्रोसेसर, जैसे 68000 , एआरएम , आरआईएससी-वी के लिए उपयोग किया जाता है ।
|इस रिकॉर्ड में वह डेटा है जो 32-बिट एड्रेस पर प्रारम्भ होता है।<ref name="Unix-SREC" /> इस रिकॉर्ड में उपस्थित डेटा के बाइट्स की संख्या "बाइट काउंट फ़ील्ड" माइनस 5 ("32-बिट एड्रेस फ़ील्ड" के लिए 4 बाइट्स प्लस "चेकसम फ़ील्ड" के लिए 1 बाइट) है। यह रिकॉर्ड सामान्यतः 32-बिट प्रोसेसर, जैसे 68000 , एआरएम , आरआईएससी-वी के लिए उपयोग किया जाता है ।
|-
|-
|''S4''
|''S4''
Line 97: Line 97:
गणना
गणना
| {{Na}}
| {{Na}}
|इस वैकल्पिक रिकॉर्ड में S1/S2/S3 रिकॉर्ड की 16-बिट गणना शामिल है।<ref name="Unix-SREC" /> इस रिकॉर्ड का उपयोग तब किया जाता है जब रिकॉर्ड संख्या 65,535 (0xFFFF) से कम या उसके बराबर हो, अन्यथा S6 रिकॉर्ड का उपयोग किया जाएगा।
|इस वैकल्पिक रिकॉर्ड में S1/S2/S3 रिकॉर्ड की 16-बिट गणना सम्मिलित है।<ref name="Unix-SREC" /> इस रिकॉर्ड का उपयोग तब किया जाता है जब रिकॉर्ड संख्या 65,535 (0xFFFF) से कम या उसके बराबर हो, अन्यथा S6 रिकॉर्ड का उपयोग किया जाएगा।
|-
|-
|''S6''
|''S6''
Line 104: Line 104:
गणना
गणना
| {{Na}}
| {{Na}}
|इस वैकल्पिक रिकॉर्ड में S1/S2/S3 रिकॉर्ड की 24-बिट गणना शामिल है। यदि रिकॉर्ड संख्या 16,777,215 (0xFFFFFF) से कम या उसके बराबर है तो इस रिकॉर्ड का उपयोग किया जाता है। यदि 65,536 (0x10000) से कम है, तो S5 रिकॉर्ड का उपयोग किया जाएगा। '''नोट:''' यह नया रिकॉर्ड सबसे हालिया बदलाव है (यह आधिकारिक नहीं हो सकता है)।<ref name="Unix-SREC" />
|इस वैकल्पिक रिकॉर्ड में S1/S2/S3 रिकॉर्ड की 24-बिट गणना सम्मिलित है। यदि रिकॉर्ड संख्या 16,777,215 (0xFFFFFF) से कम या उसके बराबर है तो इस रिकॉर्ड का उपयोग किया जाता है। यदि 65,536 (0x10000) से कम है, तो S5 रिकॉर्ड का उपयोग किया जाएगा। '''नोट:''' यह नया रिकॉर्ड सबसे हालिया बदलाव है (यह आधिकारिक नहीं हो सकता है)।<ref name="Unix-SREC" />
|-
|-
|''S7''
|''S7''
Line 112: Line 112:
एड्रेस
एड्रेस
| {{Na}}
| {{Na}}
|इस रिकॉर्ड में 32-बिट एड्रेस पर आरंभिक निष्पादन स्थान शामिल है।<ref name="Unix-SREC" /><ref name="M68000-PRM" /> इसका उपयोग एस3 रिकॉर्ड की श्रृंखला को समाप्त करने के लिए किया जाता है। यदि SREC फ़ाइल का उपयोग केवल मेमोरी डिवाइस को प्रोग्राम करने के लिए किया जाता है और निष्पादन स्थान को नजरअंदाज कर दिया जाता है, तो शून्य के एड्रेस का उपयोग किया जा सकता है।
|इस रिकॉर्ड में 32-बिट एड्रेस पर आरंभिक निष्पादन स्थान सम्मिलित है।<ref name="Unix-SREC" /><ref name="M68000-PRM" /> इसका उपयोग एस3 रिकॉर्ड की श्रृंखला को समाप्त करने के लिए किया जाता है। यदि SREC फ़ाइल का उपयोग केवल मेमोरी डिवाइस को प्रोग्राम करने के लिए किया जाता है और निष्पादन स्थान को अनदेखा कर दिया जाता है, तो शून्य के एड्रेस का उपयोग किया जा सकता है।
|-
|-
|''S8''
|''S8''
Line 120: Line 120:
एड्रेस
एड्रेस
| {{Na}}
| {{Na}}
|इस रिकॉर्ड में 24-बिट एड्रेस पर आरंभिक निष्पादन स्थान शामिल है।<ref name="Unix-SREC" /><ref name="M68000-PRM" /> इसका उपयोग एस2 रिकॉर्ड की श्रृंखला को समाप्त करने के लिए किया जाता है। यदि SREC फ़ाइल का उपयोग केवल मेमोरी डिवाइस को प्रोग्राम करने के लिए किया जाता है और निष्पादन स्थान को नजरअंदाज कर दिया जाता है, तो शून्य के एड्रेस का उपयोग किया जा सकता है।
|इस रिकॉर्ड में 24-बिट एड्रेस पर आरंभिक निष्पादन स्थान सम्मिलित है।<ref name="Unix-SREC" /><ref name="M68000-PRM" /> इसका उपयोग एस2 रिकॉर्ड की श्रृंखला को समाप्त करने के लिए किया जाता है। यदि SREC फ़ाइल का उपयोग केवल मेमोरी डिवाइस को प्रोग्राम करने के लिए किया जाता है और निष्पादन स्थान को अनदेखा कर दिया जाता है, तो शून्य के एड्रेस का उपयोग किया जा सकता है।
|-
|-
|''S9''
|''S9''
Line 128: Line 128:
एड्रेस
एड्रेस
| {{Na}}
| {{Na}}
|इस रिकॉर्ड में 16-बिट एड्रेस पर आरंभिक निष्पादन स्थान शामिल है।<ref name="Unix-SREC" /><ref name="M68000-PRM" /> इसका उपयोग एस1 रिकॉर्ड की श्रृंखला को समाप्त करने के लिए किया जाता है।<ref name="Hennig-Roleff_1993" /> यदि SREC फ़ाइल का उपयोग केवल मेमोरी डिवाइस को प्रोग्राम करने के लिए किया जाता है और निष्पादन स्थान को नजरअंदाज कर दिया जाता है, तो शून्य के एड्रेस का उपयोग किया जा सकता है।
|इस रिकॉर्ड में 16-बिट एड्रेस पर आरंभिक निष्पादन स्थान सम्मिलित है।<ref name="Unix-SREC" /><ref name="M68000-PRM" /> इसका उपयोग एस1 रिकॉर्ड की श्रृंखला को समाप्त करने के लिए किया जाता है।<ref name="Hennig-Roleff_1993" /> यदि SREC फ़ाइल का उपयोग केवल मेमोरी डिवाइस को प्रोग्राम करने के लिए किया जाता है और निष्पादन स्थान को अनदेखा कर दिया जाता है, तो शून्य के एड्रेस का उपयोग किया जा सकता है।
|}
|}


===रिकॉर्ड क्रम===
===रिकॉर्ड क्रम===
हालाँकि कुछ यूनिक्स डॉक्यूमेंट में कहा गया है कि "किसी फ़ाइल के भीतर S-रिकॉर्ड का क्रम कोई महत्व नहीं रखता है और कोई विशेष क्रम नहीं माना जा सकता है", <ref name="Unix-SREC"/> व्यवहार में अधिकांश सॉफ्टवेयर ने SREC रिकॉर्ड का आदेश दिया है। विशिष्ट रिकॉर्ड क्रम एक (कभी-कभी वैकल्पिक) S0 हेडर रिकॉर्ड से शुरू होता है, एक या अधिक S1/S2/S3 डेटा रिकॉर्ड के अनुक्रम के साथ जारी रहता है, एक वैकल्पिक S5/S6 गणना रिकॉर्ड हो सकता है, और एक उपयुक्त S7/S8/S9 समाप्ति रिकॉर्ड के साथ समाप्त होता है।
हालाँकि कुछ यूनिक्स डॉक्यूमेंट में कहा गया है कि "किसी फ़ाइल के भीतर S-रिकॉर्ड का क्रम कोई महत्व नहीं रखता है और कोई विशेष क्रम नहीं माना जा सकता है", <ref name="Unix-SREC"/> व्यवहार में अधिकांश सॉफ्टवेयर ने SREC रिकॉर्ड का आदेश दिया है। विशिष्ट रिकॉर्ड क्रम एक (कभी-कभी वैकल्पिक) S0 हेडर रिकॉर्ड से प्रारम्भ होता है, एक या अधिक S1/S2/S3 डेटा रिकॉर्ड के अनुक्रम के साथ जारी रहता है, एक वैकल्पिक S5/S6 गणना रिकॉर्ड हो सकता है, और एक उपयुक्त S7/S8/S9 समाप्ति रिकॉर्ड के साथ समाप्त होता है।


; S19-स्टाइल 16-बिट एड्रेस रिकॉर्ड
; S19-स्टाइल 16-बिट एड्रेस रिकॉर्ड
Line 152: Line 152:
# S7
# S7


===सीमाएँ===
===परिसीमाएँ===


====रिकॉर्ड लंबाई====
====रिकॉर्ड लंबाई====
ऐतिहासिक [[यूनिक्स]] ओ/S दस्तावेज़ीकरण का एक मैनुअल पृष्ठ बताता है: एक S-रिकॉर्ड फ़ाइल में विशेष रूप से स्वरूपित ASCII वर्ण स्ट्रिंग्स का एक अनुक्रम होता है। एक S-रिकॉर्ड की लंबाई 78 बाइट्स से कम या उसके बराबर होगी। [[मैनुअल पेज]] डेटा फ़ील्ड में वर्णों की संख्या को 64 (या 32 डेटा बाइट्स) तक सीमित करता है।<ref name="Unix-SREC"/>8-हेक्स-वर्ण एड्रेस और 64 डेटा वर्णों वाला एक रिकॉर्ड 78 (2 + 2 + 8 + 64 + 2) वर्ण लंबा होगा (यह गणना संभावित अंत-पंक्ति या स्ट्रिंग समाप्ति वर्णों को अनदेखा करती है), और 80-वर्ण चौड़े [[ तैलिप्रिंटर ]] पर फिट बैठता है। मैनुअल पेज के नीचे एक नोट में कहा गया है, यह मैनुअल पेज एकमात्र ऐसा स्थान है जहां कुल रिकॉर्ड लंबाई पर 78-बाइट सीमा या डेटा लंबाई पर 64-बाइट सीमा का दस्तावेजीकरण किया गया है। सामान्य मामले के लिए इन मूल्यों पर भरोसा नहीं किया जाना चाहिए।<ref name="Unix-SREC"/>  
ऐतिहासिक यूनिक्स O/S डॉक्यूमेंटेशन के एक मैनुअल पृष्ठ में कहा गया है: "एक S-रिकॉर्ड फ़ाइल में विशेष रूप से स्वरूपित ASCII कैरेक्टर स्ट्रिंग्स का एक अनुक्रम होता है। एक एस-रिकॉर्ड लंबाई में 78 बाइट्स से कम या उसके बराबर होगा"। [[मैनुअल पेज]] डेटा फ़ील्ड में वर्णों की संख्या को 64 (या 32 डेटा बाइट्स) तक सीमित कर देता है।<ref name="Unix-SREC"/> 8-हेक्स-कैरेक्टर पते और 64 डेटा वर्णों वाला एक रिकॉर्ड 78 (2 + 2 + 8 + 64 + 2) कैरेक्टर लंबा होगा (यह गिनती संभावित अंत-लाइन या स्ट्रिंग समाप्ति वर्णों को अनदेखा करती है), और 80-कैरेक्टर चौड़े टेलीप्रिंटर पर फ़िट हो जाता है। मैनुअल पेज के नीचे एक नोट में कहा गया है, "यह मैनुअल पेज एकमात्र ऐसा स्थान है जहां कुल रिकॉर्ड लंबाई पर 78-बाइट सीमा या डेटा लंबाई पर 64-बाइट सीमा का डॉयमेंटेड किया गया है। इन मूल्यों पर सामान्य स्थिति के लिए भरोसा नहीं किया जाना चाहिए"।<ref name="Unix-SREC"/>
यदि 78 बाइट ऐतिहासिक सीमा को नजरअंदाज कर दिया जाए, तो S-रिकॉर्ड की अधिकतम लंबाई 514 अक्षर होगी। 0xFF (255) की बाइट गणना मानते हुए, यह रिकॉर्ड टाइप फ़ील्ड के लिए 2 + बाइट काउंट फ़ील्ड के लिए 2 + एड्रेस / डेटा / चेकसम फ़ील्ड के लिए (2 * 255) होगी। अधिकतम दो नियंत्रण वर्ण (कैरिज रिटर्न और/या [[रेखा भरण]]), और/या C/C++ प्रोग्रामिंग भाषाओं के लिए एक NUL (0x00) स्ट्रिंग टर्मिनेटर रखने के लिए अतिरिक्त बफर स्थान की आवश्यकता हो सकती है। लंबी लाइन लंबाई का उपयोग करने में समस्याएं हैं: मोटोरोला S-रिकॉर्ड फॉर्मेट परिभाषा 255 बाइट्स पेलोड, या 514 अक्षरों की लाइनों, साथ ही लाइन समाप्ति की अनुमति देती है। सभी EPROM प्रोग्रामर के पास इतने बड़े रिकॉर्ड से निपटने के लिए पर्याप्त बड़ी लाइन बफ़र्स होने चाहिए। बहुत कम लोग ऐसा करते हैं।<ref name="SF-srec_examples"/>
 
यदि 78 बाइट ऐतिहासिक सीमा को अनदेखा कर दिया जाता है, तो S-रिकॉर्ड की अधिकतम लंबाई 514 कैरेक्टर होगी। 0xFF (255) की बाइट गिनती मानते हुए, यह रिकॉर्ड प्रकार फ़ील्ड के लिए 2 + बाइट काउंट फ़ील्ड के लिए 2 + एड्रेस / डेटा / चेकसम फ़ील्ड के लिए (2 * 255) होगा। अधिकतम दो नियंत्रण कैरेक्टर (कैरिज रिटर्न और/या लाइन फ़ीड), और/या सी/सी++ प्रोग्रामिंग भाषाओं के लिए एक NUL (0x00) स्ट्रिंग टर्मिनेटर रखने के लिए अतिरिक्त बफर स्पेस की आवश्यकता हो सकती है। लंबी लाइन लंबाई का उपयोग करने में समस्याएं हैं: "मोटोरोला S-रिकॉर्ड फॉर्मेट परिभाषा 255 बाइट्स पेलोड, या 514 अक्षरों की लाइनों, साथ ही लाइन समाप्ति की अनुमति देती है। सभी EPROM प्रोग्रामर के पास इतने बड़े रिकॉर्ड से निपटने के लिए पर्याप्त बड़ी लाइन बफर होनी चाहिए। ऐसा बहुत कम लोग करते हैं।"<ref name="SF-srec_examples" />
====डेटा फ़ील्ड====
====डेटा फ़ील्ड====
S0/S1/S2/S3 रिकॉर्ड के लिए डेटा की न्यूनतम मात्रा शून्य है।
S0/S1/S2/S3 रिकॉर्ड के लिए डेटा की न्यूनतम मात्रा शून्य है।


कुछ ऐतिहासिक डॉक्यूमेंट इस फ़ील्ड में अधिकतम 32 बाइट्स डेटा (64 हेक्स वर्ण) की अनुशंसा करते हैं<ref name="Unix-SREC"/>(शायद इसलिए कि 32 डेटा के 2 की सबसे बड़ी शक्ति है जो एक [[प्रति पंक्ति वर्ण]] वाइड टेलीप्रिंटर/[[कंप्यूटर टर्मिनल]]/[[ छिद्रित कार्ड ]] पर फिट होगी)।
कुछ ऐतिहासिक डॉक्यूमेंट इस फ़ील्ड में अधिकतम 32 बाइट्स डेटा (64 हेक्स कैरेक्टर) की अनुशंसा करते हैं<ref name="Unix-SREC"/>(शायद इसलिए कि 32 डेटा के 2 की सबसे बड़ी शक्ति है जो एक [[प्रति पंक्ति वर्ण|प्रति लाइन कैरेक्टर]] वाइड टेलीप्रिंटर/[[कंप्यूटर टर्मिनल]]/[[ छिद्रित कार्ड ]] पर फिट होगी)।


यदि 32 बाइट ऐतिहासिक सीमा को नजरअंदाज कर दिया जाता है, तो डेटा की अधिकतम मात्रा एड्रेस फ़ील्ड के आकार (4/6/8) के आधार पर भिन्न होती है। डेटा के बाइट्स की अधिकतम संख्या की गणना 255 (बाइट काउंट फ़ील्ड के लिए अधिकतम) माइनस (चेकसम फ़ील्ड के लिए 1 बाइट) माइनस (एड्रेस फ़ील्ड में बाइट्स की संख्या) द्वारा की जाती है, इस टाइप प्रत्येक रिकॉर्ड टाइप के लिए डेटा की अधिकतम मात्रा है: S0 & S1 रिकॉर्ड्स, 251 डेटा बाइट्स (502 HEX वर्ण) के लिए 252 डेटा बाइट्स (504 HEX वर्ण)।
यदि 32 बाइट ऐतिहासिक सीमा को अनदेखा कर दिया जाता है, तो डेटा की अधिकतम मात्रा एड्रेस फ़ील्ड (4/6/8) के आकार के आधार पर भिन्न होती है। डेटा के बाइट्स की अधिकतम संख्या 255 (बाइट काउंट फ़ील्ड के लिए अधिकतम) माइनस (चेकसम फ़ील्ड के लिए 1 बाइट) माइनस (एड्रेस फ़ील्ड में बाइट्स की संख्या) से गणना की जाती है, इस प्रकार प्रत्येक रिकॉर्ड प्रकार के लिए डेटा की अधिकतम मात्रा है: S0 और S1 रिकॉर्ड के लिए 252 डेटा बाइट्स (504 हेक्स कैरेक्टर), S2 रिकॉर्ड के लिए 251 डेटा बाइट्स (502 हेक्स कैरेक्टर), और S3 रिकॉर्ड के लिए 250 डेटा बाइट्स (500 हेक्स कैरेक्टर)।


====टिप्पणियाँ====
====टिप्पणियाँ====
S0 हेडर रिकॉर्ड में ASCII-टू-हेक्स रूपांतरित टिप्पणियों के अलावा, SREC फ़ाइल फॉर्मेट आधिकारिक तौर पर मानव-पठनीय ASCII टिप्पणियों का समर्थन नहीं करता है, हालांकि कुछ सॉफ़्टवेयर उन सभी पंक्तियों को अनदेखा कर देते हैं जो S से शुरू नहीं होती हैं और/या चेकसम फ़ील्ड के बाद के सभी टेक्स्ट को अनदेखा कर देते हैं (इस टाइप टिप्पणियों के लिए अनुगामी टेक्स्ट का उपयोग कभी-कभी (असंगत रूप से) किया जाता है)। उदाहरण के लिए, सीसीएस पीआईसी कंपाइलर एक रखने का समर्थन करता है; Intel HEX फ़ाइल के ऊपर या नीचे टिप्पणी पंक्ति, और इसके मैनुअल में कहा गया है कि कुछ प्रोग्रामर (विशेष रूप से MPLAB) हेक्स फ़ाइल के शीर्ष पर टिप्पणियाँ पसंद नहीं करते हैं, यही कारण है कि कंपाइलर के पास हेक्स फ़ाइल के नीचे टिप्पणी रखने का विकल्प होता है।<ref name="CCS_2014"/>
S0 हेडर रिकॉर्ड में एएससीआईआई-टू-हेक्स परिवर्तित टिप्पणियों के अलावा, SREC फ़ाइल प्रारूप आधिकारिक तौर पर मानव-पठनीय ASCII टिप्पणियों का समर्थन नहीं करता है, हालाँकि कुछ सॉफ़्टवेयर उन सभी लाइनयों को अनदेखा कर देते हैं जो "S" से प्रारम्भ नहीं होती हैं और/या चेकसम फ़ील्ड के बाद के सभी टेक्स्ट को अनदेखा कर देते हैं (इस प्रकार टिप्पणियों के लिए कभी-कभी पिछला टेक्स्ट (असंगत रूप से) उपयोग किया जाता है)। उदाहरण के लिए, CCS PIC कंपाइलर ";" रखने का समर्थन करता है। इंटेल हेक्स फ़ाइल के ऊपर या नीचे कमेंट लाइन, और इसके मैनुअल में कहा गया है "कुछ प्रोग्रामर (विशेष रूप से MPLAB) हेक्स फ़ाइल के शीर्ष पर टिप्पणियाँ विकल्प नहीं करते", यही कारण है कि कम्पाइलर के पास कमेंट को हेक्स फ़ाइल के नीचे रखने का विकल्प होता है।<ref name="CCS_2014"/>
==उदाहरण==
==उदाहरण==
; रंग किंवदंती
; कलर लीजेंड
{{legend inline| #FFCCCC |Record type}}
{{legend inline| #FFCCCC |Record type}} {{legend inline| #CCFFCC |Byte count}} {{legend inline| #CCCCFF |Address}} {{legend inline| #CCFFFF |Data}} {{legend inline| #CCCCCC |Checksum}}
{{legend inline| #CCFFCC |Byte count}}
{{legend inline| #CCCCFF |Address}}
{{legend inline| #CCFFFF |Data}}
{{legend inline| #CCCCCC |Checksum}}


===चेकसम गणना===
===चेकसम गणना===
Line 180: Line 177:


यह दिखाने के लिए डिकोड किया गया है कि चेकसम मूल्य की गणना कैसे की जाती है। निम्नलिखित उदाहरण हेक्साडेसिमल मान (एक मोटोरोला सम्मेलन) को इंगित करने के लिए डॉलर चिह्न ($) का उपयोग करता है:
यह दिखाने के लिए डिकोड किया गया है कि चेकसम मूल्य की गणना कैसे की जाती है। निम्नलिखित उदाहरण हेक्साडेसिमल मान (एक मोटोरोला सम्मेलन) को इंगित करने के लिए डॉलर चिह्न ($) का उपयोग करता है:
# जोड़ें: प्रत्येक बाइट $13 + $7A + $F0 + $0A + $0A + $0D + $00 + ... + $00 = $019E योग जोड़ें।
# ऐड: प्रत्येक बाइट '''$13 + $7A + $F0 + $0A + $0A + $0D + $00 + ... + $00 = $019E''' योग जोड़ें।
# मास्क: योग की सबसे महत्वपूर्ण बाइट ($01) को हटा दें और सबसे कम महत्वपूर्ण बाइट (LSB) को बरकरार रखें, जो कि $9E है।
# मास्क: योग की सबसे महत्वपूर्ण बाइट ('''$01''') को हटा दें और सबसे कम महत्वपूर्ण बाइट (LSB) को बरकरार रखें, जो कि ऐड है।
# पूरक: एलएसबी के पूरक की गणना करें, जो $61 है।
# कॉंप्लीमेंट: एलएसबी के पूरक की गणना करें, जो '''$61''' है।


C प्रोग्रामिंग भाषा में, योग को चेकसम में परिवर्तित किया जाता है: <code>0xFF - (sum & 0xFF)</code>
C प्रोग्रामिंग लैंग्वेज में, योग को चेकसम में परिवर्तित किया जाता है: <code>0xFF - (sum & 0xFF)</code>
===16-बिट मेमोरी एड्रेस===  
===16-बिट मेमोरी एड्रेस===  
{{SREC HEX|0|0F|0000|68656C6C6F20202020200000|3C}}  
{{SREC HEX|0|0F|0000|68656C6C6F20202020200000|3C}}  
{{SREC HEX|1|1F|0000|7C0802A6900100049421FFF07C6C1B787C8C23783C60000038630000|26}}  
{{SREC HEX|1|1F|0000|7C0802A6900100049421FFF07C6C1B787C8C23783C60000038630000|26}}  
{{SREC HEX|1|1F|001C|4BFFFFE5398000007D83637880010014382100107C0803A64E800020|E9}}  
 
{{SREC HEX|1|1F|001C|4BFFFFE5398000007D83637880010014382100107C0803A64E800020|E9}}
 
{{SREC HEX|1|11|0038|48656C6C6F20776F726C642E0A00|42}}  
{{SREC HEX|1|11|0038|48656C6C6F20776F726C642E0A00|42}}  
{{SREC HEX|5|03|0003||F9}}  
{{SREC HEX|5|03|0003||F9}}  
{{SREC HEX|9|03|0000||FC}}
{{SREC HEX|9|03|0000||FC}}


Line 196: Line 198:
* [[बाइनरी-टू-टेक्स्ट एन्कोडिंग]], एक सर्वेक्षण और एन्कोडिंग एल्गोरिदम की तुलना
* [[बाइनरी-टू-टेक्स्ट एन्कोडिंग]], एक सर्वेक्षण और एन्कोडिंग एल्गोरिदम की तुलना
* [[इंटेल हेक्स प्रारूप|इंटेल हेक्स फॉर्मेट]]
* [[इंटेल हेक्स प्रारूप|इंटेल हेक्स फॉर्मेट]]
* [[एमओएस प्रौद्योगिकी फ़ाइल स्वरूप]]
* [[एमओएस प्रौद्योगिकी फ़ाइल स्वरूप|एमओएस प्रौद्योगिकी फ़ाइल फॉर्मेट]]
* [[टेक्ट्रोनिक्स हेक्स प्रारूप|टेक्ट्रोनिक्स हेक्स फॉर्मेट]]
* [[टेक्ट्रोनिक्स हेक्स प्रारूप|टेक्ट्रोनिक्स हेक्स फॉर्मेट]]


Line 237: Line 239:
* [https://github.com/arkku/srec kk_srec] is a C library and program for reading the SREC format.
* [https://github.com/arkku/srec kk_srec] is a C library and program for reading the SREC format.


{{DEFAULTSORT:Srec (File Format)}}[[Category: बाइनरी-टू-टेक्स्ट एन्कोडिंग प्रारूप]] [[Category: अंतः स्थापित प्रणालियाँ]] [[Category: कंप्यूटर फ़ाइल स्वरूप]]
{{DEFAULTSORT:Srec (File Format)}}
 
 


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Srec (File Format)]]
[[Category:Created On 25/07/2023]]
[[Category:CS1 Deutsch-language sources (de)|Srec (File Format)]]
[[Category:Created On 25/07/2023|Srec (File Format)]]
[[Category:Lua-based templates|Srec (File Format)]]
[[Category:Machine Translated Page|Srec (File Format)]]
[[Category:Pages with script errors|Srec (File Format)]]
[[Category:Short description with empty Wikidata description|Srec (File Format)]]
[[Category:Templates Vigyan Ready|Srec (File Format)]]
[[Category:Templates that add a tracking category|Srec (File Format)]]
[[Category:Templates that generate short descriptions|Srec (File Format)]]
[[Category:Templates using TemplateData|Srec (File Format)]]
[[Category:Use dmy dates from March 2020|Srec (File Format)]]
[[Category:Use list-defined references from December 2021|Srec (File Format)]]
[[Category:अंतः स्थापित प्रणालियाँ|Srec (File Format)]]
[[Category:कंप्यूटर फ़ाइल स्वरूप|Srec (File Format)]]
[[Category:बाइनरी-टू-टेक्स्ट एन्कोडिंग प्रारूप|Srec (File Format)]]

Latest revision as of 17:04, 21 August 2023

एस-रिकॉर्ड
Motorola SREC Chart.png
मोटोरोला एसआरईसी प्रारूप के लिए एक त्वरित संदर्भ चार्ट। (ध्यान दें कि रिकॉर्ड उदाहरण छवि में "बाइट्स" शब्द का उपयोग वैकल्पिक रूप से वर्ण निर्दिष्ट करने के लिए किया जाता है।)
Filename extension
.s19, .s28, .s37, .s, .s1, .s2, .s3, .sx, .srec, .exo,[1] .mot, .mxt
Developed byमोटोरोला

मोटोरोला S-रिकॉर्ड एक फ़ाइल फॉर्मेट है, जो 1970 के दशक के मध्य में मोटोरोला द्वारा बनाया गया था, जो बाइनरी जानकारी को ASCII टेक्स्ट फॉर्म में हेक्स मान के रूप में बताता है। इस फ़ाइल फॉर्मेट को SRECORD, SREC, S19, S28, S37 के रूप में भी जाना जा सकता है। इसका उपयोग सामान्यतः माइक्रोकंट्रोलर्स, EPROM, ईईपीरोम और अन्य टाइप के प्रोग्रामेबल लॉजिक उपकरणों में फ्लैश मेमोरी प्रोग्रामिंग के लिए किया जाता है। एक विशिष्ट एप्लिकेशन में, कंपाइलर या असेंबलर प्रोग्राम के सोर्स कोड (जैसे सी या असेंबली लैंग्वेज) को मशीन कोड में परिवर्तित करता है और इसे HEX फ़ाइल में आउटपुट करता है। फिर HEX फ़ाइल को प्रोग्रामर द्वारा मशीन कोड को नॉन-वोलेटाइल मेमोरी में "बर्न" करने के लिए आयात किया जाता है, या लोडिंग और निष्पादन के लिए लक्ष्य सिस्टम में स्थानांतरित किया जाता है।

अवलोकन

इतिहास

S-रिकॉर्ड फॉर्मेट मोटोरोला 6800 प्रोसेसर के लिए 1970 के दशक के मध्य में बनाया गया था। उस और अन्य एंबेडेड प्रोसेसर के लिए सॉफ़्टवेयर विकास उपकरण S-रिकॉर्ड फॉर्मेट में निष्पादन योग्य कोड और डेटा बनाएंगे। PROM प्रोग्रामर तब S-रिकॉर्ड फॉर्मेट को पढ़ेंगे और एम्बेडेड सिस्टम में प्रयुक्त PROM या EPROM में डेटा को "बर्न" करेंगे।

अन्य हेक्स फॉर्मेट

समान उद्देश्य के साथ अन्य ASCII एन्कोडिंग भी हैं। BPNF, BHLF, और B10F प्रारंभिक बाइनरी फॉर्मेट थे, लेकिन वे न तो कॉम्पैक्ट हैं और न ही फ्लेक्सिबल हैं। हेक्साडेसिमल फॉर्मेट अधिक कॉम्पैक्ट हैं क्योंकि वे प्रति कैरेक्टर 1 बिट के बजाय 4 बिट का प्रतिनिधित्व करते हैं। कई, जैसे S-रिकॉर्ड, अधिक लचीले होते हैं क्योंकि उनमें एड्रेस जानकारी सम्मिलित होती है ताकि वे PROM के केवल एक हिस्से को निर्दिष्ट कर सकें। इंटेल HEX फॉर्मेट का उपयोग प्रायः इंटेल प्रोसेसर के साथ किया जाता था। टेकहेक्स और हेक्स फॉर्मेट है जिसमें डिबगिंग के लिए एक प्रतीक तालिका सम्मिलित हो सकती है।

फॉर्मेट

रिकॉर्ड संरचना

S Type Byte Count Address Data Checksum

SREC फॉर्मेट फ़ाइल में ASCII टेक्स्ट रिकॉर्ड की एक श्रृंखला होती है। रिकॉर्ड्स में बाएं से दाएं निम्नलिखित संरचना है:

  1. रिकॉर्ड स्टार्ट- प्रत्येक रिकॉर्ड एक बड़े अक्षर S अक्षर (ASCII 0x53) से प्रारम्भ होता है जो स्टार्ट-ऑफ़-रिकॉर्ड के लिए है।[2]
  2. रिकॉर्ड टाइप- एकल संख्यात्मक अंक 0 से 9 कैरेक्टर (ASCII 0x30 से 0x39), जो रिकॉर्ड के टाइप को परिभाषित करता है। नीचे दी गई तालिका देखें।
  3. बाइट काउंट - दो हेक्साडेसिमल अंक (00 से एफएफ), जो बाकी रिकॉर्ड (address + data + checksum) में आने वाले बाइट्स (हेक्स अंक जोड़े) की संख्या को दर्शाता है। इस फ़ील्ड का न्यूनतम मान 3 (16-बिट एड्रेस फ़ील्ड के लिए 2 प्लस 1 चेकसम बाइट) और अधिकतम मान 255 (0xFF) है। "00" / "01" / "02" अवैध मान हैं।
  4. एड्रेस - रिकॉर्ड टाइप के अनुसार निर्धारित चार/छह/आठ हेक्स अंक। एड्रेस बाइट्स बिग-एंडियन फॉर्मेट में व्यवस्थित हैं।
  5. डेटा - डेटा के n बाइट्स के लिए 2n हेक्स अंकों का एक क्रम। S1/S2/S3 रिकॉर्ड के लिए, प्रति रिकॉर्ड अधिकतम 32 बाइट्स सामान्य है क्योंकि यह 80 कैरेक्टर चौड़ी टर्मिनल स्क्रीन पर फिट होगा, हालांकि 16 बाइट्स एक विशिष्ट एड्रेस पर प्रत्येक बाइट को विज़ुअली डिकोड करना आसान होगा।
  6. चेकसम - दो हेक्स अंक, बाइट गणना, एड्रेस और डेटा फ़ील्ड के लिए दो हेक्स अंक जोड़े द्वारा दर्शाए गए मानों के योग का सबसे कम महत्वपूर्ण बाइट। C प्रोग्रामिंग लैंग्वेज में, योग को चेकसम में परिवर्तित किया जाता है: 0xFF - (sum & 0xFF)

टेक्स्ट लाइन टर्मिनेटर

SREC रिकॉर्ड को एक या अधिक ASCII लाइन समाप्ति वर्णों द्वारा अलग किया जाता है ताकि प्रत्येक रिकॉर्ड एक टेक्स्ट लाइन पर अकेला दिखाई दे। यह रिकॉर्ड को दृष्टिगत रूप से सीमित करके सुपाठ्यता को बढ़ाता है और यह रिकॉर्ड के बीच पैडिंग भी प्रदान करता है जिसका उपयोग मशीन पार्सिंग दक्षता में सुधार करने के लिए किया जा सकता है।

प्रोग्राम जो HEX रिकॉर्ड बनाते हैं, सामान्यतः लाइन टर्मिनेशन कैरेक्टर का उपयोग करते हैं जो उनके ऑपरेटिंग सिस्टम के सम्मेलनों के अनुरूप होते हैं। उदाहरण के लिए, लिनक्स प्रोग्राम लाइनों को समाप्त करने के लिए एकल LF कैरेक्टर (लाइन फीड, एएससीआईआई कैरेक्टर वैल्यू के रूप में 0x0A) कैरेक्टर का उपयोग करते हैं, जबकि विंडोज़ प्रोग्राम LF कैरेक्टर के बाद सीआर कैरेक्टर (कैरिज रिटर्न, एएससीआईआई कैरेक्टर वैल्यू के रूप में 0x0D) का उपयोग करते हैं।

रिकॉर्ड टाइप

निम्न तालिका 10 संभावित S-रिकॉर्ड का वर्णन करती है। S4 आरक्षित है और वर्तमान में परिभाषित नहीं है। S6 मूल रूप से आरक्षित था लेकिन बाद में इसे फिर से परिभाषित किया गया था।

रिकॉर्ड

फ़ील्ड

रिकॉर्ड

उद्देश्य

एड्रेस

फ़ील्ड

डेटा

फ़ील्ड

रिकॉर्ड

विवरण

S0 हैडर 16-बिट

"0000"

No इस रिकॉर्ड में विक्रेता विशिष्ट ASCII टेक्स्ट कमेंट सम्मिलित है जिसे हेक्स अंक जोड़े की एक श्रृंखला के रूप में दर्शाया गया है। इस रिकॉर्ड के डेटा को शून्य-समाप्त स्ट्रिंग के फॉर्मेट में देखना आम बात है। टेक्स्ट डेटा निम्नलिखित जानकारी के मिश्रण सहित कुछ भी हो सकता है: फ़ाइल/मॉड्यूल नाम, संस्करण/संशोधन संख्या, दिनांक/समय, उत्पाद का नाम, विक्रेता का नाम, पीसीबी पर मेमोरी डिज़ाइनर, कॉपीराइट नोटिस, साइन ऑन।[3] यह देखना आम है: 48, 44, 52 जो "H", "D", "आर" अक्षरों का एएससीआईआई प्रतिनिधित्व है।[4]
S1 डेटा 16-बिट

एड्रेस

Yes इस रिकॉर्ड में वह डेटा है जो 16-बिट एड्रेस पर प्रारम्भ होता है।[4][3] इस रिकॉर्ड में उपस्थित डेटा के बाइट्स की संख्या "बाइट काउंट फ़ील्ड" माइनस 3 ("16-बिट एड्रेस फ़ील्ड" के लिए 2 बाइट्स प्लस "चेकसम फ़ील्ड" के लिए 1 बाइट) है। यह रिकॉर्ड सामान्यतः 8-बिट प्रोसेसर, जैसे 6502 , 6800 , 8051 , Z80 , AVR , PIC के लिए उपयोग किया जाता है ।
S2 डेटा 24-बिट

एड्रेस

Yes इस रिकॉर्ड में वह डेटा सम्मिलित है जो 24-बिट एड्रेस पर प्रारम्भ होता है।[4] इस रिकॉर्ड में उपस्थित डेटा के बाइट्स की संख्या "बाइट काउंट फ़ील्ड" माइनस 4 ("24-बिट एड्रेस फ़ील्ड" के लिए 3 बाइट्स प्लस "चेकसम फ़ील्ड" के लिए 1 बाइट) है।
S3 डेटा 32-बिट

एड्रेस

Yes इस रिकॉर्ड में वह डेटा है जो 32-बिट एड्रेस पर प्रारम्भ होता है।[4] इस रिकॉर्ड में उपस्थित डेटा के बाइट्स की संख्या "बाइट काउंट फ़ील्ड" माइनस 5 ("32-बिट एड्रेस फ़ील्ड" के लिए 4 बाइट्स प्लस "चेकसम फ़ील्ड" के लिए 1 बाइट) है। यह रिकॉर्ड सामान्यतः 32-बिट प्रोसेसर, जैसे 68000 , एआरएम , आरआईएससी-वी के लिए उपयोग किया जाता है ।
S4 आरक्षित - - यह रिकॉर्ड सुरक्षित है.
S5 गणना करना 16-बिट

गणना

No इस वैकल्पिक रिकॉर्ड में S1/S2/S3 रिकॉर्ड की 16-बिट गणना सम्मिलित है।[4] इस रिकॉर्ड का उपयोग तब किया जाता है जब रिकॉर्ड संख्या 65,535 (0xFFFF) से कम या उसके बराबर हो, अन्यथा S6 रिकॉर्ड का उपयोग किया जाएगा।
S6 गणना करना 24-बिट

गणना

No इस वैकल्पिक रिकॉर्ड में S1/S2/S3 रिकॉर्ड की 24-बिट गणना सम्मिलित है। यदि रिकॉर्ड संख्या 16,777,215 (0xFFFFFF) से कम या उसके बराबर है तो इस रिकॉर्ड का उपयोग किया जाता है। यदि 65,536 (0x10000) से कम है, तो S5 रिकॉर्ड का उपयोग किया जाएगा। नोट: यह नया रिकॉर्ड सबसे हालिया बदलाव है (यह आधिकारिक नहीं हो सकता है)।[4]
S7 प्रारंभ एड्रेस

(समाप्ति)

32-बिट

एड्रेस

No इस रिकॉर्ड में 32-बिट एड्रेस पर आरंभिक निष्पादन स्थान सम्मिलित है।[4][5] इसका उपयोग एस3 रिकॉर्ड की श्रृंखला को समाप्त करने के लिए किया जाता है। यदि SREC फ़ाइल का उपयोग केवल मेमोरी डिवाइस को प्रोग्राम करने के लिए किया जाता है और निष्पादन स्थान को अनदेखा कर दिया जाता है, तो शून्य के एड्रेस का उपयोग किया जा सकता है।
S8 प्रारंभ एड्रेस

(समाप्ति)

24-बिट

एड्रेस

No इस रिकॉर्ड में 24-बिट एड्रेस पर आरंभिक निष्पादन स्थान सम्मिलित है।[4][5] इसका उपयोग एस2 रिकॉर्ड की श्रृंखला को समाप्त करने के लिए किया जाता है। यदि SREC फ़ाइल का उपयोग केवल मेमोरी डिवाइस को प्रोग्राम करने के लिए किया जाता है और निष्पादन स्थान को अनदेखा कर दिया जाता है, तो शून्य के एड्रेस का उपयोग किया जा सकता है।
S9 प्रारंभ एड्रेस

(समाप्ति)

16-बिट

एड्रेस

No इस रिकॉर्ड में 16-बिट एड्रेस पर आरंभिक निष्पादन स्थान सम्मिलित है।[4][5] इसका उपयोग एस1 रिकॉर्ड की श्रृंखला को समाप्त करने के लिए किया जाता है।[3] यदि SREC फ़ाइल का उपयोग केवल मेमोरी डिवाइस को प्रोग्राम करने के लिए किया जाता है और निष्पादन स्थान को अनदेखा कर दिया जाता है, तो शून्य के एड्रेस का उपयोग किया जा सकता है।

रिकॉर्ड क्रम

हालाँकि कुछ यूनिक्स डॉक्यूमेंट में कहा गया है कि "किसी फ़ाइल के भीतर S-रिकॉर्ड का क्रम कोई महत्व नहीं रखता है और कोई विशेष क्रम नहीं माना जा सकता है", [4] व्यवहार में अधिकांश सॉफ्टवेयर ने SREC रिकॉर्ड का आदेश दिया है। विशिष्ट रिकॉर्ड क्रम एक (कभी-कभी वैकल्पिक) S0 हेडर रिकॉर्ड से प्रारम्भ होता है, एक या अधिक S1/S2/S3 डेटा रिकॉर्ड के अनुक्रम के साथ जारी रहता है, एक वैकल्पिक S5/S6 गणना रिकॉर्ड हो सकता है, और एक उपयुक्त S7/S8/S9 समाप्ति रिकॉर्ड के साथ समाप्त होता है।

S19-स्टाइल 16-बिट एड्रेस रिकॉर्ड
  1. S0
  2. S1 (एक या अधिक रिकॉर्ड)
  3. S5 (वैकल्पिक रिकॉर्ड)
  4. S9
S28-स्टाइल 24-बिट एड्रेस रिकॉर्ड
  1. S0
  2. S2 (एक या अधिक रिकॉर्ड)
  3. S5 (वैकल्पिक रिकॉर्ड)
  4. S8
S37-स्टाइल 32-बिट एड्रेस रिकॉर्ड
  1. S0
  2. S3 (एक या अधिक रिकॉर्ड)
  3. S5 (वैकल्पिक रिकॉर्ड)
  4. S7

परिसीमाएँ

रिकॉर्ड लंबाई

ऐतिहासिक यूनिक्स O/S डॉक्यूमेंटेशन के एक मैनुअल पृष्ठ में कहा गया है: "एक S-रिकॉर्ड फ़ाइल में विशेष रूप से स्वरूपित ASCII कैरेक्टर स्ट्रिंग्स का एक अनुक्रम होता है। एक एस-रिकॉर्ड लंबाई में 78 बाइट्स से कम या उसके बराबर होगा"। मैनुअल पेज डेटा फ़ील्ड में वर्णों की संख्या को 64 (या 32 डेटा बाइट्स) तक सीमित कर देता है।[4] 8-हेक्स-कैरेक्टर पते और 64 डेटा वर्णों वाला एक रिकॉर्ड 78 (2 + 2 + 8 + 64 + 2) कैरेक्टर लंबा होगा (यह गिनती संभावित अंत-लाइन या स्ट्रिंग समाप्ति वर्णों को अनदेखा करती है), और 80-कैरेक्टर चौड़े टेलीप्रिंटर पर फ़िट हो जाता है। मैनुअल पेज के नीचे एक नोट में कहा गया है, "यह मैनुअल पेज एकमात्र ऐसा स्थान है जहां कुल रिकॉर्ड लंबाई पर 78-बाइट सीमा या डेटा लंबाई पर 64-बाइट सीमा का डॉयमेंटेड किया गया है। इन मूल्यों पर सामान्य स्थिति के लिए भरोसा नहीं किया जाना चाहिए"।[4]

यदि 78 बाइट ऐतिहासिक सीमा को अनदेखा कर दिया जाता है, तो S-रिकॉर्ड की अधिकतम लंबाई 514 कैरेक्टर होगी। 0xFF (255) की बाइट गिनती मानते हुए, यह रिकॉर्ड प्रकार फ़ील्ड के लिए 2 + बाइट काउंट फ़ील्ड के लिए 2 + एड्रेस / डेटा / चेकसम फ़ील्ड के लिए (2 * 255) होगा। अधिकतम दो नियंत्रण कैरेक्टर (कैरिज रिटर्न और/या लाइन फ़ीड), और/या सी/सी++ प्रोग्रामिंग भाषाओं के लिए एक NUL (0x00) स्ट्रिंग टर्मिनेटर रखने के लिए अतिरिक्त बफर स्पेस की आवश्यकता हो सकती है। लंबी लाइन लंबाई का उपयोग करने में समस्याएं हैं: "मोटोरोला S-रिकॉर्ड फॉर्मेट परिभाषा 255 बाइट्स पेलोड, या 514 अक्षरों की लाइनों, साथ ही लाइन समाप्ति की अनुमति देती है। सभी EPROM प्रोग्रामर के पास इतने बड़े रिकॉर्ड से निपटने के लिए पर्याप्त बड़ी लाइन बफर होनी चाहिए। ऐसा बहुत कम लोग करते हैं।"[6]

डेटा फ़ील्ड

S0/S1/S2/S3 रिकॉर्ड के लिए डेटा की न्यूनतम मात्रा शून्य है।

कुछ ऐतिहासिक डॉक्यूमेंट इस फ़ील्ड में अधिकतम 32 बाइट्स डेटा (64 हेक्स कैरेक्टर) की अनुशंसा करते हैं[4](शायद इसलिए कि 32 डेटा के 2 की सबसे बड़ी शक्ति है जो एक प्रति लाइन कैरेक्टर वाइड टेलीप्रिंटर/कंप्यूटर टर्मिनल/छिद्रित कार्ड पर फिट होगी)।

यदि 32 बाइट ऐतिहासिक सीमा को अनदेखा कर दिया जाता है, तो डेटा की अधिकतम मात्रा एड्रेस फ़ील्ड (4/6/8) के आकार के आधार पर भिन्न होती है। डेटा के बाइट्स की अधिकतम संख्या 255 (बाइट काउंट फ़ील्ड के लिए अधिकतम) माइनस (चेकसम फ़ील्ड के लिए 1 बाइट) माइनस (एड्रेस फ़ील्ड में बाइट्स की संख्या) से गणना की जाती है, इस प्रकार प्रत्येक रिकॉर्ड प्रकार के लिए डेटा की अधिकतम मात्रा है: S0 और S1 रिकॉर्ड के लिए 252 डेटा बाइट्स (504 हेक्स कैरेक्टर), S2 रिकॉर्ड के लिए 251 डेटा बाइट्स (502 हेक्स कैरेक्टर), और S3 रिकॉर्ड के लिए 250 डेटा बाइट्स (500 हेक्स कैरेक्टर)।

टिप्पणियाँ

S0 हेडर रिकॉर्ड में एएससीआईआई-टू-हेक्स परिवर्तित टिप्पणियों के अलावा, SREC फ़ाइल प्रारूप आधिकारिक तौर पर मानव-पठनीय ASCII टिप्पणियों का समर्थन नहीं करता है, हालाँकि कुछ सॉफ़्टवेयर उन सभी लाइनयों को अनदेखा कर देते हैं जो "S" से प्रारम्भ नहीं होती हैं और/या चेकसम फ़ील्ड के बाद के सभी टेक्स्ट को अनदेखा कर देते हैं (इस प्रकार टिप्पणियों के लिए कभी-कभी पिछला टेक्स्ट (असंगत रूप से) उपयोग किया जाता है)। उदाहरण के लिए, CCS PIC कंपाइलर ";" रखने का समर्थन करता है। इंटेल हेक्स फ़ाइल के ऊपर या नीचे कमेंट लाइन, और इसके मैनुअल में कहा गया है "कुछ प्रोग्रामर (विशेष रूप से MPLAB) हेक्स फ़ाइल के शीर्ष पर टिप्पणियाँ विकल्प नहीं करते", यही कारण है कि कम्पाइलर के पास कमेंट को हेक्स फ़ाइल के नीचे रखने का विकल्प होता है।[7]

उदाहरण

कलर लीजेंड

  Record type   Byte count   Address   Data   Checksum

चेकसम गणना

निम्नलिखित उदाहरण रिकॉर्ड:

S1137AF00A0A0D0000000000000000000000000061

यह दिखाने के लिए डिकोड किया गया है कि चेकसम मूल्य की गणना कैसे की जाती है। निम्नलिखित उदाहरण हेक्साडेसिमल मान (एक मोटोरोला सम्मेलन) को इंगित करने के लिए डॉलर चिह्न ($) का उपयोग करता है:

  1. ऐड: प्रत्येक बाइट $13 + $7A + $F0 + $0A + $0A + $0D + $00 + ... + $00 = $019E योग जोड़ें।
  2. मास्क: योग की सबसे महत्वपूर्ण बाइट ($01) को हटा दें और सबसे कम महत्वपूर्ण बाइट (LSB) को बरकरार रखें, जो कि ऐड है।
  3. कॉंप्लीमेंट: एलएसबी के पूरक की गणना करें, जो $61 है।

C प्रोग्रामिंग लैंग्वेज में, योग को चेकसम में परिवर्तित किया जाता है: 0xFF - (sum & 0xFF)

16-बिट मेमोरी एड्रेस

S00F000068656C6C6F202020202000003C

S11F00007C0802A6900100049421FFF07C6C1B787C8C23783C6000003863000026

S11F001C4BFFFFE5398000007D83637880010014382100107C0803A64E800020E9

S111003848656C6C6F20776F726C642E0A0042

S5030003F9

S9030000FC

यह भी देखें

संदर्भ

  1. "AR#476 PROMGen - Description of PROM/EEPROM file formats: MCS, EXO, HEX, and others". Xilinx. 2010-03-08. Motorola EXORmacs - File Format Code 87. Archived from the original on 2020-03-03. Retrieved 2020-03-03.
  2. Wiles, Mike; Felix, Andre (2000-10-21) [1975]. Holley, Michael (ed.). MCM6830L7 MIKBUG / MINIBUG ROM (PDF) (Engineering note). Motorola Semiconductor Products, Inc. Note 100. Archived from the original (PDF) on 2019-06-16. Retrieved 2019-06-16. (23 pages)
  3. 3.0 3.1 3.2 Hennig-Roleff, Werner (1993-02-01) [1988]. "HEX.DOC: Motorola - HEX Format". SIM51. 1.04 (in Deutsch). Archived from the original on 2017-08-11. Retrieved 2021-12-08. (NB. This is an older version of SIM51, the software and documentation was maintained up to 1996.)
  4. 4.00 4.01 4.02 4.03 4.04 4.05 4.06 4.07 4.08 4.09 4.10 4.11 4.12 "Motorola S-records (UNIX man page and comments)". Uisp AVR In-System Programmer. Archived from the original on 2002-07-03.
  5. 5.0 5.1 5.2 "Appendix C". M68000 Family Programmer's Reference Manual. Revision 1. Motorola. 1992. pp. C-1–C-5. ISBN 978-0-13723289-5.
  6. "srec_examples and srec_cat". SourceForge. Archived from the original on 2013-01-27.
  7. CCS Compiler Reference Manual PCB/PCM/PCH (PDF), Custom Computer Services, Inc., May 2014, p. 142, retrieved 2015-02-08


अग्रिम पठन


बाहरी संबंध

  • SRecord is a collection of tools for manipulating SREC format files.
  • BIN2MOT, BINARY to Motorola S-Record file converter utility.
  • SRecordizer is a tool for viewing, editing, and error checking S19 format files.
  • bincopy is a Python package for manipulating SREC format files.
  • kk_srec is a C library and program for reading the SREC format.