IVS 교육 내용을 정리하던 중, 이 부분은 공개로 정리해도 좋을 것 같아 따로 정리한다.
교육 내용과 위키 내용을 바탕으로 정리 할 예정
SREC - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. S-record모토로라 SREC 포맷의 참조 차트. (여기서 "바이트"는 문자 수를 의미)파일 확장자.s19, .s28, .s37, .s, .s1, .s2, .s3, .sx, .srec, .mot, .mxt 모토로라 S-레코드(Motorola S-r
ko.wikipedia.org
SREC (file format) - Wikipedia
From Wikipedia, the free encyclopedia File format developed by Motorola S-recordA quick reference chart for the Motorola SREC format. (Note that in the record example image the word "bytes" is alternatively used to specify characters.)Filename extension .s
en.wikipedia.org
위키 내용부터 확인해보자.
모토로라 S-레코드(Motorola S-record)는 ASCII 16진 텍스트 형태로 이진 정보를 전달하는 모토로라가 개발한 파일 포맷이다. 이 파일 포맷의 다른 이름은 SRECORD, SREC, S19, S28, S37이다. 마이크로컨트롤러의 플래시 메모리, EPROM, EEPROM, 그리고 다른 종류의 프로그래밍 가능한 논리 장치의 프로그래밍에 흔히 사용된다. 일반적인 상황에서 컴파일러나 어셈블러는 프로그램의 코드를 기계어로 변환하고 이를 HEX 파일로 출력한다. 그 뒤 HEX 파일을 프로그래머가 가져와 기계 코드를 비휘발성 메모리로 버닝(burn)하거나 적재 및 실행을 위해 대상 시스템에 전송한다.


위의 큰 사진은 위키에서 제공하는 사진이고, 아래의 사진은 교육에서 가져온 S-record의 예시 사진이다.
우선 S-Record의 구조부터 살펴보자.
S0, S1, S2, S3, S4, S5, S6, S7, S8, S9
이 8가지는 s-record의 헤더이다. 이 헤더의 숫자에 따라 해당 record의 Line이 어떤 것과 관련있는 내용인지 먼저 알려준다고 생각하면 편하다.
헤더 관련 세부 사항은 영문 위키에서 찾을 수 있는데, 그 중 내가 이해한 것을 바탕으로 정리하면 다음과 같다.
1. S0 : 16진수로 주석을 달아놓은 것으로, 파일, 모듈이름, 버전, 시간, 날짜, 공급자 이름, 제품 이름 등이 따라온다.
2. S1 ~ S3 : 뒤에 데이터가 올 것이라고 알려주는 Record
S1은 8비트 프로세서, S2는 24비트 프로세서, S3는 32비트 프로세서에서 사용하는 헤더이며, 셋 다 체크섬 필드를 포함한다.
3. S4 : 사용은 하지 않고, 정의만 해놓은 헤더
4. S5 ~ S6 : 앞의 S1 ~ S3의 레코드 개수를 기록
이 레코드가 있어야 앞에서 받은 S1~S3를 제대로 받았는지 확인이 가능하다.
S5의 경우 65535개(16비트) 이하, S6의 경우 65536 ~ 16,777,215개(24비트) 일 때 사용된다.
5. S7 ~ S9 : S1 ~ S3에 따라 사용되는 끝을 알려주는 레코드
S1을 사용했다면 S9, S2를 사용했다면 S8, S3을 사용했다면 S7이 종료 레코드가 된다.
Count
헤더 다음으로는 Byte Count가 나온다. 몇 byte가 올 것인지 알려주는데, 이는 (주소+데이터+체크섬)을 포함하며 이를 10진수로 센 다음에 16진수로 변환하여 적는다.
즉, 25 는 0x25 = 37(10진수)이므로, 뒤에는 37바이트가 와야한다. (참고로 1바이트 = 0x00으로 두자리)
추가로, 주소와 체크섬이 포함되므로 그 둘을 포함한 길이보다 작을 수 없다.
Address
주소는 보통 2/3/4 바이트의 길이로 이루어진다.
또한 적어지는 방식은 빅엔디안으로, 사람이 보기 편하고 디버깅에 용이한 모습이다.
Checksum
데이터는 넘기고, 체크섬으로 바로 진행하겠다. (데이터는 각기 다르기때문)
카운트~주소의 끝 까지 모두 더한 뒤, 이를 1의 보수를 취해 나온 값을 가진다.
'CS 지식 정리' 카테고리의 다른 글
| 구조체란? - C언어 알아보기 (2) | 2025.02.25 |
|---|---|
| MCU 스케줄링(Scheduling)의 이해 및 TC275 기반 실습 (0) | 2025.02.18 |
| AUTOSAR 기반 프로그램Folder Tree 분석 (0) | 2025.02.16 |
| 프로토콜이란? OSI 7 계층 별 정의를 알아보자 (3) | 2025.02.05 |
| CS 독학 - 시작 하기 앞서.. (0) | 2025.01.14 |