{{위키데이터 속성 추적}}
{{Infobox file format
| name = S-record
| icon = 
| screenshot = [[파일:Motorola SREC Chart.png|border|230px]]
| caption = 모토로라 SREC 포맷의 참조 차트. (여기서 "바이트"는 문자 수를 의미)
| extension = <tt>.s19</tt>, <tt>.s28</tt>, <tt>.s37</tt>, <tt>.s</tt>, <tt>.s1</tt>, <tt>.s2</tt>, <tt>.s3</tt>, <tt>.sx</tt>, <tt>.srec</tt>, <tt>.mot</tt>, <tt>.mxt</tt>
| mime = 
| developer = 
| type = 
| url = 
}}

'''모토로라 S-레코드'''(Motorola S-record)는 [[ASCII]] [[십육진법|16진]] 텍스트 형태로 이진 정보를 전달하는 [[모토로라]]가 개발한 파일 포맷이다. 이 파일 포맷의 다른 이름은 '''SRECORD''', '''SREC''', '''S19''', '''S28''', '''S37'''이다. 마이크로컨트롤러의 [[플래시 메모리]], [[EPROM]], [[EEPROM]], 그리고 다른 종류의 프로그래밍 가능한 논리 장치의 프로그래밍에 흔히 사용된다. 일반적인 상황에서 컴파일러나 어셈블러는 프로그램의 솟 코드(예: C 또는 어셈블리어)를 기계어로 변환하고 이를 HEX 파일로 출력한다. 그 뒤 HEX 파일을 프로그래머가 가져와 기계 코드를 [[비휘발성 메모리]]로 버닝(burn)하거나 적재 및 실행을 위해 대상 시스템에 전송한다.

== 개요 ==
S-레코드 포맷은 1970년대 중순 [[모토로라 6800]] 프로세서용으로 개발되었다.

== 예시 ==
색 범례
{{legend inline| #FFCCCC |레코드 타입}}
{{legend inline| #CCFFCC |바이트 수}}
{{legend inline| #CCCCFF |주소}}
{{legend inline| #CCFFFF |데이터}}
{{legend inline| #CCCCCC |체크섬}}

=== 체크섬 계산 ===
다음의 예시 레코드는

 {{SREC HEX|1|13|7AF0|0A0A0D00000000000000000000000000|61}}

체크섬 값이 어떻게 계산되는지를 보여주며, 그 방법은 아래와 같다:
# 추가: 각 바이트 {{bg|#CCFFCC|13}} + {{bg|#CCCCFF|7A+F0}} + {{bg|#CCFFFF|0A+0A+0D+00+00+00+00+00+00+00+00+00+00+00+00+00}} = <code>19E</code> (16진) 전체를 추가.
# 마스크(Mask): 전체 중 최소 중요 바이트를 유지 = <code>9E</code> (16진)
# 보충(Complement): 최소 중요 바이트의 [[1의 보수]]를 계산 = {{bg|#CCCCCC|61}} (16진)

=== 16비트 메모리 주소 ===

 {{SREC HEX|0|0F|0000|68656C6C6F20202020200000|3C}}
 {{SREC HEX|1|1F|0000|7C0802A6900100049421FFF07C6C1B787C8C23783C60000038630000|26}}
 {{SREC HEX|1|1F|001C|4BFFFFE5398000007D83637880010014382100107C0803A64E800020|E9}}
 {{SREC HEX|1|11|0038|48656C6C6F20776F726C642E0A00|42}}
 {{SREC HEX|5|03|0003||F9}}
 {{SREC HEX|9|03|0000||FC}}

== 같이 보기 ==
* [[인텔 HEX]]: 인텔의 16진 파일 포맷

== 참고 문헌 ==
*{{인용|url=<!-- COPYLINK issue; website does not claim to have permission; Latrobe Uni cannot grant Motorola's permission http://www.68bits.com/M68HC05EVM.pdf --> |title=M68HC05EVM Evaluation Module User's Manual |edition=4th |publisher=Motorola (Freescale) |year=1990}} Appendix A, "S Record Information", page A-1, states, "For compatibility with teletypewriters, some programs may limit the number of [data] bytes to as few as 28 (56 printable characters in the S-record)."
*{{인용|url=https://archive.org/details/bitsavers_motorola68ionModuleUsersManualDec83_3216374 |title=M146805EVM Evaluation Module Users Manual |edition=1st |publisher=Motorola (Freescale) |year=1983}} <!-- The manual for this board https://archive.org/details/bitsavers_motorola68_219174 -->
*{{인용|url=<!-- COPYLINK issue; Holley does not claim to have permission to publish. http://www.swtpc.com/mholley/MP_A/MikbugEn100.pdf --> |title=MCM6830L7 MIKBUG / MINIBUG ROM |series=Engineering Note 100 |publisher=Motorola (Freescale) |year=1975}}

== 외부 링크 ==
* [https://tools.ietf.org/html/rfc4194 RFC 4194 - The S Hexdump Format] - IETF
;Software
* [http://srecord.sourceforge.net/ SRecord] is a collection of tools for manipulating SREC format files.
* [http://www.keil.com/download/docs/4.asp BIN2MOT], BINARY to Motorola S-Record file converter utility.
* [https://github.com/BigWinston/SRecordizer/wiki SRecordizer] is a tool for viewing, editing, and error checking S19 format files.
* [https://pypi.python.org/pypi/bincopy bincopy] is a python package for manipulating SREC format files.

{{기본정렬:Srec}}

[[분류:임베디드 시스템]]
[[분류:파일 포맷]]