ICMP ํŒจํ‚ท์„ ํ†ตํ•ด ์•…์šฉ๋œ ์ทจ์•ฝ์ ์„ ํฌํ•จํ•˜์—ฌ RTOS Zephyr์˜ ์ทจ์•ฝ์  25๊ฐœ

NCC๊ทธ๋ฃน ์—ฐ๊ตฌ์ง„ ์ถœํŒํ•˜๋‹ค ๋ฌด๋ฃŒ ํ”„๋กœ์ ํŠธ ๊ฐ์‚ฌ ๊ฒฐ๊ณผ ์‚ฐ๋“ค๋ฐ”๋žŒ, ๊ฐœ๋ฐœ ์ค‘ ์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท ๊ฐœ๋…(IoT, Internet of Things)์„ ์ค€์ˆ˜ํ•˜๋Š” ์žฅ์น˜๋ฅผ ๊ฐ–์ถ”๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์‹ค์‹œ๊ฐ„ ์šด์˜ ์ฒด์ œ(RTOS)์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ๊ณผ์ •์—์„œ ๋ฐํ˜€์ง„ 25๊ฐœ์˜ ์ทจ์•ฝ์  Zephyr์˜ ์ทจ์•ฝ์ ๊ณผ MCUboot์˜ ์ทจ์•ฝ์  1๊ฐœ. Zephyr๋Š” Intel์‚ฌ์˜ ์ฐธ์—ฌ๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด 6๊ฐœ์˜ ์ทจ์•ฝ์ ์ด ๋„คํŠธ์›Œํฌ ์Šคํƒ์—์„œ ํ™•์ธ๋˜์—ˆ์œผ๋ฉฐ, ์ปค๋„์—์„œ 4๊ฐœ, ๋ช…๋ น ์…ธ์—์„œ 2๊ฐœ, ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์ฒ˜๋ฆฌ๊ธฐ์—์„œ 5๊ฐœ, USB ํ•˜์œ„ ์‹œ์Šคํ…œ์—์„œ 5๊ฐœ, ํŽŒ์›จ์–ด ์—…๋ฐ์ดํŠธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์—์„œ 3๊ฐœ๊ฐ€ ์‹๋ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 9๊ฐœ์˜ ๋ฌธ์ œ๋Š” ์ค‘์š”๋กœ ํ‰๊ฐ€๋˜๋ฉฐ, 9๊ฐœ๋Š” ๋†’์Œ, 4๊ฐœ๋Š” ๋ณดํ†ต, 4๊ฐœ๋Š” ๋‚ฎ์Œ, 15๊ฐœ๋Š” ๊ณ ๋ ค ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋Š” IPvXNUMX ์Šคํƒ ๋ฐ MQTT ํŒŒ์„œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ , ์œ„ํ—˜ํ•œ ๋ฌธ์ œ๋Š” USB ๋Œ€์šฉ๋Ÿ‰ ์ €์žฅ์†Œ ๋ฐ USB DFU ๋“œ๋ผ์ด๋ฒ„์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์ •๋ณด ๊ณต๊ฐœ ๋‹น์‹œ ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์ทจ์•ฝ์  XNUMX๊ฐœ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ๋งŒ ์ค€๋น„๋˜์–ด ์žˆ์—ˆ์œผ๋ฉฐ ์„œ๋น„์Šค ๊ฑฐ๋ถ€๋กœ ์ด์–ด์ง€๋Š” ๋ฌธ์ œ๋‚˜ ์ถ”๊ฐ€ ์ปค๋„ ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ๊ฒฐํ•จ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋Š” ์ˆ˜์ •๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ์˜ IPv4 ์Šคํƒ์—์„œ ์›๊ฒฉ์œผ๋กœ ์•…์šฉ ๊ฐ€๋Šฅํ•œ ์ทจ์•ฝ์ ์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠน์ • ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •๋œ ICMP ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์†์ƒ์„ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. MQTT ํ”„๋กœํ† ์ฝœ ํŒŒ์„œ์—์„œ ๋˜ ๋‹ค๋ฅธ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ๋Š”๋ฐ, ์ด๋Š” ์ ์ ˆํ•œ ํ—ค๋” ํ•„๋“œ ๊ธธ์ด ํ™•์ธ์ด ๋ถ€์กฑํ•˜์—ฌ ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋œ ์‹ฌ๊ฐํ•œ ์„œ๋น„์Šค ๊ฑฐ๋ถ€ ๋ฌธ์ œ๋Š” IPv6 ์Šคํƒ ๋ฐ CoAP ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์—์„œ ๋ฐœ๊ฒฌ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ๋กœ์ปฌ์—์„œ ์„œ๋น„์Šค ๊ฑฐ๋ถ€๋ฅผ ์œ ๋ฐœํ•˜๊ฑฐ๋‚˜ ์ปค๋„ ์ˆ˜์ค€์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ทจ์•ฝ์ ์˜ ๋Œ€๋ถ€๋ถ„์€ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์ธ์ˆ˜์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๊ฒ€์‚ฌ ๋ถ€์กฑ๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ž„์˜ ์˜์—ญ์— ์“ฐ๊ฑฐ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์ฒ˜๋ฆฌ ์ฝ”๋“œ ์ž์ฒด์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์Œ์ˆ˜ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋ฒˆํ˜ธ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ •์ˆ˜ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ปค๋„์€ ASLR ๋ณดํ˜ธ(์ฃผ์†Œ ๊ณต๊ฐ„ ๋ฌด์ž‘์œ„ํ™”) ๊ตฌํ˜„๊ณผ ์Šคํƒ์— ์นด๋‚˜๋ฆฌ์•„ ํ‘œ์‹œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์—์„œ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋น„ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋งŽ์€ ๋ฌธ์ œ๊ฐ€ USB ์Šคํƒ๊ณผ ๊ฐœ๋ณ„ ๋“œ๋ผ์ด๋ฒ„์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, USB ๋Œ€์šฉ๋Ÿ‰ ์ €์žฅ ์žฅ์น˜์˜ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žฅ์น˜๊ฐ€ ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹USB ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐ๋  ๋•Œ ์ปค๋„ ์ˆ˜์ค€์—์„œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. USB๋ฅผ ํ†ตํ•ด ์ƒˆ ํŽŒ์›จ์–ด๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋“œ๋ผ์ด๋ฒ„์ธ USB DFU์˜ ์ทจ์•ฝ์„ฑ์œผ๋กœ ์ธํ•ด ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ˆ˜์ •๋œ ํŽŒ์›จ์–ด ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋‚ด๋ถ€ ํ”Œ๋ž˜์‹œ์— ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ ํ™•์ธ์„ ํ†ตํ•ด ๋ณด์•ˆ ๋ถ€ํŒ… ๋ชจ๋“œ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐฉํ˜• ๋ถ€ํŠธ๋กœ๋” ์ฝ”๋“œ๋„ ์—ฐ๊ตฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. MCU๋ถ€ํŠธ, ํ•˜๋‚˜์˜ ์–‘์„ฑ ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
UART๋ฅผ ํ†ตํ•ด SMP(Simple Management Protocol) ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zephyr์—์„œ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ์ „์—ญ ๊ณต์œ  ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„(SASOS, Single Address Space Operating System)๋งŒ ์ œ๊ณต๋œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„ ์ฝ”๋“œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„ ์ปค๋„๊ณผ ๊ฒฐํ•ฉ๋˜์–ด ํŠน์ • ํ•˜๋“œ์›จ์–ด์—์„œ ๋กœ๋“œ๋˜๊ณ  ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋†€๋ฆฌ์‹ ์‹คํ–‰ ํŒŒ์ผ์„ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ •๋˜๋ฏ€๋กœ ์ฝ”๋“œ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ค๊ณ  ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ปค๋„ ๊ธฐ๋Šฅ๋งŒ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zephyr์˜ ์ฃผ์š” ์žฅ์  ์ค‘ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์ ์€ ์–ธ๊ธ‰ ๋œ ์•ˆ์ „์„ ์—ผ๋‘์— ๋‘๊ณ  ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์Šน์ธ๋จ๊ฐœ๋ฐœ์˜ ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ๋Š” ํผ์ง• ํ…Œ์ŠคํŠธ, ์ •์  ๋ถ„์„, ์นจํˆฌ ํ…Œ์ŠคํŠธ, ์ฝ”๋“œ ๊ฒ€ํ† , ๋ฐฑ๋„์–ด ๊ตฌํ˜„ ๋ถ„์„ ๋ฐ ์œ„ํ˜‘ ๋ชจ๋ธ๋ง ๋“ฑ ์ฝ”๋“œ ๋ณด์•ˆ์„ ํ™•์ธํ•˜๋Š” ํ•„์ˆ˜ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€