๐ ๋ค์ด๊ฐ๋ฉฐ
RMAP์ ์ฌ๋งํ ํจํท ํ๋์ ํธ๋์ญ์ ์ ์ดํด๋ณด๊ธฐ์๋ Write Command ๋งํ ๊ฒ์ด ์๋ค. ํ์ง๋ง ๊ทธ๋ ๋ค๊ณ ๋๋จธ์ง ํธ๋์ญ์ ์ ๋ญ๋ฑ๊ทธ๋ฆฌ๊ณ ๋์ด๊ฐ ์๋ ์๋ ๋ฒ.
Read ๋ฐ Read-Modify-Write ๋ช ๋ น์ด๋ ๊ธฐ๋ณธ ๊ณจ์กฐ๋ ๊ฐ์ง๋ง ์ธ๋ถ ์ค์ ๊ณผ ์ ๊ฒฝ์จ์ผ ํ ๋ถ๋ถ์ด ๋ค๋ฅด๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ ์ด ๋ ๋ช ๋ น์ด๋ฅผ ๋ค๋ฃจ์ด ๋ณด๋ ค ํ๋ค.
์ฐธ๊ณ ์๋ฃ
- 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.
๐ Read Command
Read Command๋ ๊ฑฐ์ ๋ชจ๋ ํ๋๊ฐ Write Command์ ๊ตฌ์กฐ๊ฐ ๊ฐ๋ค. ๋จ ์ฝ๊ธฐ ์ก์ ์ด๋ฏ๋ก Data ๋ด์ฉ๊ณผ Data CRC๋ ํฌํจ๋์ง ์์๋ค.
Read Command์ Instruction ํ๋์์ ์ดํด๋ณผ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋นํธ 5๋ Write=1, Read=0 ์ด๋ฏ๋ก 0์ผ๋ก ๊ณ ์ ๋๋ค.
- Data CRC๊ฐ ์์ผ๋ฏ๋ก Verify ๋นํธ๋ 0์ผ๋ก ๊ณ ์ ๋๋ค.
- ์ฝ์ ๋ด์ฉ์ ๋ฐ์์ผ ํ๋ฏ๋ก Reply(Acknowledge) ๋นํธ๋ 1๋ก ๊ณ ์ ๋๋ค.
๐ฅ Read Reply
๋ฐ๋๋ก Read Reply์ Data์ Data CRC๊ฐ ํฌํจ๋์ด ์๋ค.
Reply ํจํท์ด๋ฏ๋ก Packet Type=00 ์ด๋ค.
๐ฎ Read-Modify-Write
Read-Modify-Write(RMW)๋ ์ง๋ ๋ ๋ช ๋ น์ด์ ๋ค๋ฅด๊ฒ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๊ฒ์ด ์๋, ๋ ์ง์คํฐ์ ์์์ ์ ๊ทผ์ ์ํ ๋ช ๋ น์ด์ด๋ค.
์ฌ๋ฌ ํ๋์จ์ด๊ฐ ๊ฐ์ ๋ ์ง์คํฐ๋ฅผ ๊ณต์ ํ๋ ๊ฒฝ์ฐ, write๋ก ๋ ์ง์คํฐ๋ฅผ ๋ฎ์ด์ฐ๋ฉด ๊ทธ ์ฌ์ด์ ๋ค๋ฅธ ํ๋์จ์ด๊ฐ ๋ฐ๊ฟ๋์ ๋นํธ๋ฅผ ๋ ๋ ค๋ฒ๋ฆด ์ ์๋ค. RMW๋ ๋นํธ ๋ง์คํฌ๋ฅผ ์ฌ์ฉํ์ฌ target ์ชฝ์์ ์ด ๋ฌธ์ ๋ฅผ ๋นํธ ๋จ์๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ค.
Data [[1]] [0] [0] [0] [[1]] [[0]] [[0]] [0]
Mask [[1]] [0] [0] [0] [[1]] [[1]] [[1]] [0] <- This has to be 1
Read [[1]] [1] [1] [0] [[0]] [[0]] [[1]] [1]
Result [[1]] [1] [1] [0] [[1]] [[0]] [[0]] [1]์ด์ค ๋๊ดํธ๋ก ํ์๋ ๊ฒ์ฒ๋ผ Mask ๋นํธ๊ฐ 1์ธ ์์น๋ Data ํ๋์ ๊ฐ์ผ๋ก ๋ฎ์ด์จ์ง๊ณ , Mask ๋นํธ๊ฐ 0์ธ ์์น๋ ์๋ Read ๊ฐ์ด ๊ทธ๋๋ก ์ ์ง๋๋ค.
๐ชก Read-Modify-Write Command
Instruction
RMW์ Instruction ํ๋๋ ๋ชจ๋ ๊ฐ์ด ๊ณ ์ ๋์ด ์๋ค.
- Packet Type:
01=Command - Write/Read=
0: Read ๋ช ๋ น๊ณผ ๋์ผํ๊ฒ clear ์ํ๋ก ์ค์ ํ๋ค. - Verify=
yes: RMW๋ฅผ ์ผ๋ฐ Read ๋ช ๋ น๊ณผ ๊ตฌ๋ถ์ง๋๋ค. - Reply=
yes: ํด๋น ์ฃผ์์ ์๋ ๋ค์ด์๋ ๊ฐ์ ๋ฐํ๋ฐ๋๋ค. - Increment=
yes: ์ฌ๋ฌ ๋ฐ์ดํธ์ ๊ฑธ์ณ RMW๊ฐ ์ ์ฉ๋ ๊ฒฝ์ฐ ์ฃผ์๊ฐ ์๋์ผ๋ก ์ฆ๊ฐํ๋ค.
Data Length
RMW์ Data Length ํ๋๋ Data ํ๋์ Mask ํ๋์ ๊ธธ์ด๋ฅผ ํฉํ ๊ฐ์ ๊ฐ์ง๋ค. ์๋ฅผ ๋ค์ด 2๋ฐ์ดํธ ์๋๋ฅผ RMWํ๋ ๊ฒฝ์ฐ Data 2๋ฐ์ดํธ + Mask 2๋ฐ์ดํธ๋ก Data Length๋ 0x04๊ฐ ๋๋ค.
์ต๋ 4๋ฐ์ดํธ๋ฅผ ์์ ํ ์ ์์ผ๋ฏ๋ก Data Length๋ 0x00, 0x02, 0x04, 0x06, 0x08 ์ค ํ๋์ ๊ฐ๋ง ๊ฐ์ง๊ฒ ๋๋ค.
Mask
์์์ ์ค๋ช ํ ๊ฒ๊ณผ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ๋ก ์ด๋ค ๊ฐ์ ์จ๋ฃ์์ง ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. Data์ ์กฐํฉํ๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
Written Data = (Mask AND Command_Data) OR (NOT Mask AND Read_Data)๋ค๋ง Read ๊ฐ๊ณผ Mask, Data๋ฅผ ์กฐํฉํ๋ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ์ ์์ฒด๋ ๊ท๊ฒฉ์์ ๊ฐ์ ํ์ง ์๊ณ target ์ชฝ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํ์ ๋งก๊ฒจ์ ธ ์๋ค. ์ ๋ฐฉ์์ ํ๋์ ์์์ผ ๋ฟ์ด๋ฉฐ, target์ ๋ฐ๋ผ test-and-set๊ณผ ๊ฐ์ ๋ค๋ฅธ ์กฐํฉ ๋ฐฉ์์ ๊ตฌํํ ์๋ ์๋ค.
๐๐ป Read-Modify-Write Reply
RMW Reply์๋ Modifyํ๊ธฐ ์ Read ๊ฐ์ด ํจ๊ป ์ค๋ ค์ ๋ฐํ๋๋ค. Initiator๋ ์ด ๊ฐ์ ํตํด ์์ ์ ๋ ์ง์คํฐ ์ํ๋ ๊ฐ์ด ํ์ธํ ์ ์๋ค.
Instruction
- Packet Type:
00=Reply
Data Length
Command์์๋ Data์ Mask๋ฅผ ๋ชจ๋ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ๊ทธ ๋์ ํฉํ ๊ฐ์ด์ง๋ง, Reply์์๋ Data๋ง ๋ด๊ฒจ ์์ผ๋ฏ๋ก 0x00 ~ 0x04์ ๊ฐ์ ๊ฐ์ง๋ค.
โจ ๋ง์น๋ฉฐ
RMAP์ด RMW๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ง์ํ์ง๋ง, ์ค์ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒ์ Write/Read Command์ธ ๊ฒ ๊ฐ๋ค. ๋งค๋ด์ผ์ ์ดํด๋ณด๋ฉด RMW๋ฅผ ์ ์ธํ๊ณ ๊ตฌํํ๋ ๊ฒ๋ ์ง์๋๋ค๊ณ ์ ํ ์์ผ๋, ๋ง์ฝ ๊ณต์ ์คํ์ ๋ฐํ์ผ๋ก IP๋ฅผ ๋ง๋ ๋ค๋ฉด ์ํฉ์ ๋ง๊ฒ ์ ํํด ๊ตฌํํ๋ ๊ฒ๋ ๊ฐ๋ฅํด ๋ณด์ธ๋ค.
SpaceWire์ ์์ ํ๋กํ ์ฝ๋ก๋ CCSDS packet transfer protocol์ด ๋ ์๋ค. ๊ธฐํ๊ฐ ๋๋ค๋ฉด ์ด ํ๋กํ ์ฝ๋ ๊ณต๋ถํ์ฌ ๋ค๋ค ๋ณด๊ณ ์ถ๋ค.