๐ ๋ค์ด๊ฐ๋ฉฐ
SpaceWire ํ๋กํ ์ฝ ์์ฒด๋ ํจํท ์ ์ก์ ์ํ ๊ป๋ฐ๊ธฐ์ด๋ค. ๋ ธ๋์ ๋ผ์ฐํฐ๋ฅผ ์ฐ๊ฒฐํ๊ณ , ๊ทธ ์ฌ์ด ๋งํฌ๋ฅผ ๋ชจ๋ ์๋ฆฝํ๊ณ ํจํท์ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋๋ฉด, ์ด์ ์ค์ํ ๊ฒ์ '์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๋์ง'์ ๋ํ ๋ฌธ์ ์ด๋ค.
SpaceWire๋ ๊ณต์์ ์ผ๋ก ๋ ๊ฐ์ ์์ ํ๋กํ ์ฝ์ ์ ๊ณตํ๋ค. ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์๋๋ก ํ๋ RMAP(Remote Memory Access Protocol)๊ณผ, ํจํท ์ฌ๋ฌ ๊ฐ๋ฅผ ์ก์์ ํ ์ ์๊ฒ ํ๋ CCSDS packet transfer protocol์ด๋ค.
์ฐธ๊ณ ์๋ฃ
- ECSS-E-ST-50-52C โ SpaceWire โ Remote memory access protocol (5 February 2010) (Web)
- ECSS-E-ST-50-52C โ SpaceWire โ Remote memory access protocol (5 February 2010) (PDF)
์ ์๊ถ ์๋ด
๋ณธ ํฌ์คํธ์ ํฌํจ๋ ์ผ๋ถ ์ด๋ฏธ์ง๋ ECSS(European Cooperation for Space Standardization) ๋ฌธ์(ECSS-E-ST-50-52C ๋ฑ)์์ ๋ฐ์ท ์บก์ฒํ ๊ฒ์ด๋ฉฐ, ํด๋น ์ด๋ฏธ์ง์ ์ ์๊ถ์ ESA/ECSS์ ์์ต๋๋ค. ๋ณธ ์บก์ฒ๋ ๋น์์ ์ ๊ฐ์ธ ๊ธฐ์ ๋ธ๋ก๊ทธ์์์ ํ์ต ๋ฐ ์ ๋ณด ๊ณต์ ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉ๋์์ผ๋ฉฐ, ๊ฐ ์ด๋ฏธ์ง ํ๋จ์ ์ถ์ฒ ๋ฌธ์๋ฅผ ํ๊ธฐํ์์ต๋๋ค. ์ ์๊ถ ๊ด๋ จ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ ์๋ ค์ฃผ์๋ฉด ์ฆ์ ์์ ๋๋ ์ญ์ ํ๊ฒ ์ต๋๋ค.
Copyright Notice
Some images in this post are captured excerpts from ECSS (European Cooperation for Space Standardization) documents (e.g., ECSS-E-ST-50-52C), and copyright for those images belongs to ESA/ECSS. These captures are used solely for non-commercial, educational purposes on a personal technical blog, with the source document noted below each image. If you have any copyright issues, please contact me and I will edit or remove the content promptly.
๐๏ธ RMAP Command์ ์ข ๋ฅ
RMAP์๋ Write Command, Read Command, ๊ทธ๋ฆฌ๊ณ Read-Modify-Write Command ์ธ ๊ฐ์ง ๋ช ๋ น์ด ์กด์ฌํ๋ค. ์ธ Command ๋ชจ๋ ํ๊ฒ ๋ ธ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ทผํ๋ค๋ ๊ณตํต์ ์ ๊ฐ์ง๋ฉฐ, ์ ๊ทผ ๋ฐฉ์๊ณผ Reply ๋ฐ์ ์ฌ๋ถ์์ ์ฐจ์ด๊ฐ ์๋ค.
| Command | ๋ชฉ์ | Reply ํจํท |
|---|---|---|
| Write | Target ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ ์ฐ๊ธฐ | ์ ํ์ ์๋ต |
| Read | Target ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ | ํญ์ ์๋ต |
| Read-Modify-Write | ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ์ฝ๊ณ ์ผ๋ถ ๋นํธ๋ง ์์ ํด ์ฌ๊ธฐ๋ก | ํญ์ ์๋ต |
์๋ต์ ๋ฐ์์ง ๋ฐ์ง ์์์ง์ ๋ํ ์ค์ ์ ํจํท ๋ด๋ถ์ Instruction ํ๋๋ก ๊ฒฐ์ ๋๋ค. ์ค๋์ ํฌ์คํธ์์๋ ํจํท ํ๋๋ฅผ ๊ฐ์ฅ ํญ๋๊ฒ ์ดํด๋ณผ ์ ์๋ Write Command๋ฅผ ๋จผ์ ๋ค๋ฃฌ๋ค.
๐งข Write Command Header
SPW ํจํท์ ํค๋๋ ํญ์ "ํ๊ฒ์ผ๋ก ๊ฐ๋ ๊ฒฝ๋ก"์ด๋ค. ์ด์ ํฌ์คํธ์์ ์ค๋ช ํ๋ฏ ๋คํธ์ํฌ๊ฐ path addressing์ ์ฑํํ๊ณ ์๋ค๋ฉด ๊ฒฝ๋ก ์ ๋ณด๋ฅผ ๋ชจ๋ ๋ด๊ณ , logical addressing์ ์ฑํํ๊ณ ์๋ค๋ฉด TLA๋ง ๋ด๋๋ก ํ ํ ๋ผ์ฐํฐ์ ๋ผ์ฐํ ํ ์ด๋ธ์ ๋ชจ๋ ๊ตฌ์ฑํด์ผ ํ๋ค.
๐๏ธ Write Command Cargo
Protocol ID
SPW Target Hardware๋ ์ต์ข ์นด๊ณ ๋ฅผ ๋ฐ์ผ๋ฉด ๊ฐ์ฅ ๋จผ์ ์ฒซ ๋ฐ์ดํธ๋ฅผ ํ์ธํด ์ด๊ฒ์ด ์ด๋ค ํจํท์ธ์ง ํ์ธํ๋ค.
์๋ฅผ ๋ค์ด RMAP์ Protocol ID๋ 0x01, CCSDS๋ 0x02์ด๋ฏ๋ก ์ด ๊ฐ์ ๋ฐ๋๋ค๋ฉด ์๋์ผ๋ก ํด๋น ํ๋กํ ์ฝ์ ๋ฐ๋ผ ์ฒ๋ฆฌํ๊ณ , ๊ทธ ์ธ์ ๊ฐ์ ๋ฐ๋๋ค๋ฉด ์ผ๋ฐ SPW ํจํท์ผ๋ก ์ฒ๋ฆฌํ๋ค.
Instruction
Instruction ํ๋๋ ๋ด๋ถ 8๋นํธ ๊ฐ๊ฐ์ด ๋ชจ๋ ์ ๋ณด๊ฐ์ ๊ฐ๋๋ค.
๋นํธ 7, 6์ ํจํท ํ์ ์ ์ ์ํ๋ค.
- Packet Type 01 = Command Packet
- Packet Type 00 = Reply Packet
๋นํธ 5~2๋ ๋ช ๋ น์ ๋ํ ์ธ๋ถ ์ค์ ์ ๋ด๊ณ ์๋ค.
- Read/Write:
Read=0,Write=1 - Verify: ์์ ํ ๋ฐ์ดํฐ๊ฐ ์ ํํ์ง Data CRC๋ฅผ ๋จผ์ ๊ฒ์ฆํด ํ์ธํ๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด CRC๋ฅผ ๊ณ์ฐํ ๋ฒํผ๊ฐ ๋๋ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฌด ํฐ ๋ฐ์ดํฐ๋ ์๋ฌ๋ฅผ ๋ฐํํ๋ค.
- Reply(Acknowlege): Write ์ํ ์ ํจํท๋ง ์ ๋๋ก ์ ์ก๋๋ฉด ์ ์ ๋์์ผ๋ก ์ฒ๋ฆฌํ ์ง, ์๋๋ฉด ์๋ต์ ๋ฐ์ ๋ฆฌํด ์ฝ๋ ๋ฐ ํ์์์์ ํ์ธํ ์ง ๊ฒฐ์ ํ๋ ๋นํธ์ด๋ค.
- Increment: ์๋ ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ์ฃผ์์ ๊ณ์ํด์ ์ธ์ง, ์๋๋ฉด 4๋ฐ์ดํธ์ฉ ์ฃผ์๋ฅผ ์ฆ๊ฐ์์ผ ๊ฐ๋ฉฐ ์ธ์ง ๊ฒฐ์ ํ๋ ๋นํธ์ด๋ค.
Reply Address Length๋ Reply Address Field ์น์ ์์ ํจ๊ป ์ค๋ช ํ๋ค.
RMAP Key
ํ๊ฒ ํ๋์จ์ด์๋ TLA ์ธ์๋ RMAP Key๋ผ๋ ๊ฒ์ฆ์ฉ ํ๋๊ฐ ์กด์ฌํ๋ค. ํ๋์จ์ด์ ํค์ ํจํท์ ์ค์ ๋ ํค๊ฐ์ด ๋์ผํด์ผ ํ๋ฉฐ, ๋ค๋ฅผ ๊ฒฝ์ฐ ํจํท์ ํ๊ธฐ๋๋ค.
Reply Address
RMAP ํจํท ๋๋ถ๋ถ์ ์๋ต์ ๋ฐ๋๋ค. ์ด๋ ์๋์ผ๋ก ๊ฒฝ๋ก๊ฐ ์ ์ฅ๋์ง ์์ผ๋ฏ๋ก ๋ฐ๋ก ์๋ต ํจํท์ด ๋์์ฌ ๊ฒฝ๋ก๋ฅผ ์๋ ค์ค์ผ ํ๋ค. Target Address์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋คํธ์ํฌ ๊ท์ฝ์ ๋ฐ๋ผ path addressing, logical addressing ๊ฐ ๋ฐฉ์์ ๋ง๊ฒ ํ๋๋ฅผ ์ฑ์ ์ฃผ๋ฉด ๋๋ค.
โ ๏ธ ๊ผญ ์์๋์ด์ผ ํ ์ : Reply Address๋ ํญ์ 4 byte ์ ๋ ฌ๋๋ค. โ ๏ธ
์๋ฅผ ๋ค์ด, ๋์์ฌ ๊ฒฝ๋ก๊ฐ 3๋ฒ ํฌํธ, 1๋ฒ ํฌํธ ๋ ๊ฐ๋ผ๋ฉด ์์ ํจ๋ฉ์ ์ฃผ์ด 0x00 0x00 0x03 0x01๋ก ํจํท์ ๋ด๊ธด๋ค.
๋ํ Instruction Field์ Reply Address Length 2๋นํธ๋ก Reply Address๊ฐ ์ด ๋ช ๋ฐ์ดํธ์ธ์ง ๊ฒฐ์ ๋๋ค.
00= 0 byte01= 4 bytes10= 8 bytes11= 12 bytes
๋ฐ๋ผ์ ์๋ต ํจํท์ ์์ฑํ ๋๋ ๋จผ์ Reply Address Length๋ฅผ ํ์ ํ๊ณ , ์์ชฝ 0x00 ํจ๋ฉ์ ๋ชจ๋ ์ ๊ฑฐํ ํ ์๋ต ํจํท ํค๋์ ํด๋น ๊ฒฝ๋ก๋ฅผ ๋ถ์ธ๋ค.
Transaction ID
Initiator๊ฐ ์ฐ์ํด์ ์ฌ๋ฌ ๊ฐ์ ํจํท์ ์ ์กํ๋ ๊ฒฝ์ฐ, ์ฌ๋ฌ ๊ฐ์ ์๋ต์ด ๋ค์ด์์ ๋ ํด๋น ์๋ต์ด ์ด๋ค ์์ฒญ๊ณผ ๋งค์นญ๋๋์ง ๊ตฌ๋ณํ ์ ์์ด์ผ ํ๋ค. Transaction ID๋ ์ด๋ฌํ ์ํฉ์์ ํจํท ๊ตฌ๋ณ์ด ๊ฐ๋ฅํ๋๋ก ํจํท๋ณ๋ก ๋ถ์ฌ๋๋ ID์ด๋ค.
Address
๋ฐ์ดํฐ๋ฅผ ์ธ(์ฝ์) ํ๊ฒ ๋ ธ๋์ ๋ด๋ถ ์ฃผ์์ด๋ค. ์ด ์ค Extended Address๋ 40 bit ์ฃผ์๋ฅผ ์ง์ํ๊ธฐ ์ํ ์ถ๊ฐ ์์ 8๋นํธ์ธ๋ฐ, ๋ง์ ๊ฒฝ์ฐ ๋จ์ํ 0์ผ๋ก ์ฑ์์ ธ ์๋ค.
Data Length
Data Length Field๋ ์ด 24๋นํธ๋ก, RMAP ํจํท์ ์ด๋ก ์ ์ผ๋ก ์ต๋ 16MB(์ ํํ๊ฒ๋ 16MB-1) ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ ์กํ ์ ์๋ค.
Header/Data CRC
RMAP CRC๋ ํ์ค 256-entry ๋ฃฉ์ ํ ์ด๋ธ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ, ํ ์ด๋ธ์ ECSS-E-ST-50-52C ๋ฌธ์ Annex A.3์์ ํ์ธํ ์ ์๋ค.
ํ๊ฒ ํ๋์จ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ ์ ๋จผ์ ํค๋ CRC๋ฅผ ํ์ธํด ์ค๋ฅ๊ฐ ์๋์ง ๊ฒ์ฆํ๊ณ , ๊ทธ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค. ์์๋ ํค๋ ์ ๋ณด๋ก ์ธํ ์ค๋์์ ์กฐ๊ธฐ์ ๋ฐฉ์งํ๊ณ , ๋ถํ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ง๊ธฐ ์ํ ๋ฐฉ์นจ์ด๋ค.
๋ฐ์ดํฐ CRC๋ Verify ๋นํธ ์ค์ ์ ๋ฐ๋ผ ๋์์ด ๋ค๋ฅด๋ค. ๋นํธ๊ฐ 1์ผ ๊ฒฝ์ฐ ์ฐ๊ธฐ ์ํ ์ ์ ๋ฒํผ์์ CRC๋ฅผ ๊ฒ์ฆํ๊ณ , ํ๋ฆฌ๋ฉด ์๋ฌ ๋ฐํ ํ ์์ ๋์์ ์ํํ์ง ์๋๋ค. ๋ฐ๋ฉด 0์ผ ๊ฒฝ์ฐ ์ผ๋จ ๋ฉ๋ชจ๋ฆฌ์ ์ด ํ CRC๋ฅผ ๊ฒ์ฆํ๋ฉฐ, ํ๋ฆฌ๋ฉด ์๋ฌ๋ฅผ ๋ฐํํ๊ฒ ๋๋ค.
๐ฌ Write Reply Header
Reply Address๋ ๋์ผํ๊ฒ ๋์ํ๋ฉฐ, ์ด๋ Command Packet์ ํฌํจ๋์ด ์๋ ๊ฐ๋ค์ด๋ค.
โธ๏ธ Write Reply Cargo
Instruction
Reply Packet์ Instruction ํ๋๋ Command์ ์ ์ฌํ์ง๋ง, ๋ช๋ช ๊ฐ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ๊ณ ์ ๋์ด ์๋ค.
- Packet Type 00 = Reply
- Reply(Acknowledge) Bit = 1
Status
๊ฐ์ฅ ์ค์ํ ํ๋๋ผ๊ณ ํ ์ ์๋ค. Status ํ๋๊ฐ 0์ด๋ฉด ์ ์ ๋์์ด๋ฉฐ, non-zero์ด๋ฉด ์๋ฌ์ด๋ค. ์๋ฌ ์ฝ๋์ ๋ํ ๋ด์ฉ์ ์๋์์ ํ์ ํ๋ค.
์ถ๊ฐ๋ก ํจํท ํ์์ ๋ง์ถ๊ธฐ ์ํ reserved ํ๋๊ฐ ์๋ค.
RMAP Status Codes
Non-zero ์๋ฌ์ฝ๋๋ ์ ํ์์ ๋ณผ ์ ์๋ฏ์ด 11์ข ๋ฅ์ด๋ค.
์ด ์ค General Error Code 1์ด ์กฐ๊ธ ์ ๋งคํ๋ฐ, ๋ฐ์ํ๋ ๋ฐ์๋ ์ฌ๋ฌ ์ด์ ๊ฐ ์์ง๋ง ์ฃผ๋ก ์ ๊ทผํ ์ ์๋ ์ฃผ์์ ์ ๊ทผํ์ ๋ ๋ฐ์ํ๋ค. 0x0040_0000์ ์ ๊ทผํด์ผ ํ๋๋ฐ 0x4000_0000์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ๋ฅผ ์์๋ก ๋ค ์ ์๋ค.
์ด status code๋ฅผ ํ์ธํ๊ธฐ ์ํด Write Command๋ฅผ ์ํํ ๋ ์ฌ๋งํ๋ฉด Acknowledge ๋นํธ๋ฅผ ์ผ ๋๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
โจ ๋ง์น๋ฉฐ
๋ด๊ฐ ์ฒ์ RMAP์ ๊ณต๋ถํ ๋ ๊ฐ์ฅ ํท๊ฐ๋ ธ๋ ๊ฒ์ด ๊ฐ ํจํท ํ๋์ ์ญํ ๊ณผ ์ด๋ค ๊ฐ์ผ๋ก ์ฑ์์ผ ํ๋์ง์๋ค. ํนํ ํ๋กํ ์ฝ ID, TLA, RMAP Key, Transaction ID ๋ฑ ๋ด ๋์ ๋๊ฐ์ ๋ณด์ด๋ ์๋ณ๊ฐ์ด ๋๋ฌด ๋ง์ ํ๋ค์๋๋ฐ, ๊ทธ๋์ ์ด๋ฒ ํฌ์คํธ์ ์ด ํ๋๋ค๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ ์ต๋ํ ์ ๋ด์ผ๋ ค ๋ ธ๋ ฅํ๋ค. ์์ ์ด ์ ๋์์ผ๋ ค๋ ๐
Read Command์ Read-Modify-Write Command๋ ๊ธฐ๋ณธ์ ์ธ ํ๋ ๊ตฌ์ฑ์ Write Command์ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ง๋ง, ํ ๋ฒ์ฉ ๋ค๋ฃฐ ํ์๊ฐ ์๋ค. ๋ค์ ๊ธ์์๋ ์ด ๋ Command๋ฅผ ๋ค๋ฃจ๊ณ , Write/Read ํธ๋์ญ์ ์ด ์ค์ ๋ก ์ด๋ค ์์๋ก ์ฃผ๊ณ ๋ฐ์์ง๋์ง ์ํ์ค ๋ค์ด์ด๊ทธ๋จ๊ณผ ํจ๊ป ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค.