9 research outputs found
CAN Virtualization Framework for Automotive Platform
ํ์๋
ผ๋ฌธ (์์ฌ)-- ์์ธ๋ํ๊ต ๋ํ์ : ๊ณต๊ณผ๋ํ ์ ๊ธฐยท์ ๋ณด๊ณตํ๋ถ, 2018. 2. ํ์ฑ์.์ต๊ทผ ํ๋์จ์ด์ ์ฑ๋ฅ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ฆ๊ฐํ ์ปดํจํ
์์์ ํจ์จ์ ์ผ๋ก ํ์ฉํ๋ ค๋ ๋
ธ๋ ฅ์ด ์๋์ฐจ ์
๊ณ์์ ์ด๋ฃจ์ด์ง๊ณ ์๋ค. ์ด๋ฌํ ๋
ธ๋ ฅ์ ์ผํ์ผ๋ก ์ฐจ๋ ๋ด๋ถ์ ์ฌ๋ฌ ์์คํ
๋ค์ ๊ฐ์ํํ์ฌ ํ๋์ ํ๋ก์ธ์ ์์ ํตํฉ/ํ์ฌ ํ๋ ค๋ ์๋๋ฅผ ํ๊ณ ์๋ค. ์๋์ฐจ ์
๊ณ๋ ์ด๋ฌํ ์๋๋ฅผ ํตํ์ฌ ๋ถํ ๊ฐ๊ฒฉ์ ์ ๊ฐํ๊ณ ์์คํ
์ค๊ณ์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๋ ค ํ๋ค. ์ฐจ๋์ฉ ์์คํ
์ ๊ฐ์ํ ํ๊ธฐ ์ํด์๋ ์ผ๋ฐ์ ์ธ ์์คํ
์ ๊ฐ์ํ์ ๋ฌ๋ฆฌ ์ฐจ๋ ์์คํ
์ ํนํ๋ ๊ฐ์ข
์์คํ
์์๋ค์ ๊ฐ์ํ ํด์ผ ๋๋ค. ๋ํ์ ์ผ๋ก CAN(Control Area Network)์ด ์๋ค. CAN์ ํ์กด ์ฐจ๋์ฉ ์์คํ
๋ค์ด ์๋ก ํต์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํต์ ๋ฒ์ค๋ก, ํ์ดํผ๋ฐ์ด์ ๋ ๊ฐ์ํ๋ ์ฐจ๋์ฉ ์์คํ
๊ฐ์ ํต์ ์ ์ ๊ณตํ๊ธฐ ์ํ์ฌ ์ด๋ฌํ CAN์ ๊ฐ์ํ๋ฅผ ์ง์ํด์ผ ํ๋ค.
์ด๋ฅผ ์ํ์ฌ ๋ช๋ช ๋ฐฉ๋ฒ๋ค์ด ์ ์๋์๋ค. ๊ธฐ์กด์ CAN ๊ฐ์ํ ๊ธฐ์ ์ ํฌ๊ฒ ํ๋์จ์ด์ ์ ๊ทผ๊ณผ ์ํํธ์จ์ด์ ์ ๊ทผ์ผ๋ก ๋๋ ์ ์๋ค. ํ๋์จ์ด์ ์ ๊ทผ์ ๊ฐ์ํ ๋ ์ฐจ๋์ฉ ์์คํ
์๋งํผ ์ค์ CAN ์ปจํธ๋กค๋ฌ๋ฅผ ๋ค์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด ์ ๊ทผ์ ๊ฐ๊ฐ์ ์ฐจ๋์ฉ ์์คํ
๋ค์๊ฒ CAN ์ปจํธ๋กค๋ฌ๋ฅผ ๋
์ ์ ๊ณตํ์ฌ ๊ฐ ์์คํ
์ CAN ์ปจํธ๋กค๋ฌ๊ฐ ์ง์ํ๋ ์ต๊ณ ์ฑ๋ฅ์ ์ ๊ณต๋ฐ์ ์ ์๋ค. ์ด ์ ๊ทผ์ ํตํด ๊ฐ ์ฐจ๋์ฉ ์์คํ
์ด ์๊ตฌํ๋ ์ฑ๋ฅ์ ์๊ตฌ์ฌํญ์ ๋ง์กฑ์ํฌ ์ ์์ผ๋, ์ฐจ๋์ฉ ์์คํ
๊ฐ์ํ์ ๋ณธ ๋ชฉ์ ๊ณผ ๋ค๋ฅด๊ฒ ์ฐจ๋ ๋ถํ์ ๋จ๊ฐ ์์น๊ณผ ํจ๊ป ์์คํ
์ค๊ณ ๋ณต์ก๋์ ์์น์ ์ด๋ํ๋ค. ์ด์ ๋ฐํด ์ํํธ์จ์ด์ ์ ๊ทผ์ ํ์ดํผ๋ฐ์ด์ ๊ฐ ๋จ์ผ CAN ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ CAN ์ปจํธ๋กค๋ฌ๋ก ์ถ์ํ ํ์ฌ, ๊ฐ์ํ๋ ๊ฐ๊ฐ์ ์ฐจ๋์ฉ ์์คํ
๋ค์๊ฒ ๊ฐ์ CAN ์ปจํธ๋กค๋ฌ๋ฅผ ์ ๊ณตํ๋ ์ ๊ทผ์ด๋ค. ํ์ง๋ง ๊ธฐ์กด ์ํํธ์จ์ด์ ์ ๊ทผ์ CAN์ ๊ธฐ๋ฅ์ ์ธก๋ฉด์์์ ๊ฐ์ํ๋ง์ ๊ณ ๋ คํ๊ณ ์๋ค. ์ด๋ฌํ ์ ๊ทผ์ ์ค์๊ฐ ์์คํ
๊ณผ ๋น์ค์๊ฐ ์์คํ
์ผ๋ก ๊ตฌ์ฑ๋ ๊ฐ์ํ ๋ ์ฐจ๋์ฉ ์์คํ
ํ๊ฒฝ์ ์ง์ํ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค. ์๋ฅผ ๋ค์ด, ๋จ์ผ CAN ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ์ํ๋ ์ฐจ๋์ฉ ์์คํ
๋ค์ด ๊ณต์ ํ ๋, ํ์ดํผ๋ฐ์ด์ ๋ ์ค์๊ฐ ์ฐจ๋์ฉ ์์คํ
์๊ฒ ๋ฒ์ค ๋์ญํญ์ ํญ์ ์ ์ ํ ์ ์๋๋ก ๋ณด์ฅํด ์ฃผ๊ณ , ๋น์ค์๊ฐ ์ฐจ๋์ฉ ์์คํ
๋ค์๊ฒ๋ ๊ณต์ ์ฑ์ ๊ธฐ๋ฐํ์ฌ ๋ฒ์ค ๋์ญํญ์ ํ ๋นํด์ฃผ์ด์ผ ํ๋ค. ํ์ง๋ง ๊ธฐ์กด ์ํํธ์จ์ด์ ์ ๊ทผ์ ์์คํ
ํน์ฑ์ ๋ํ ๊ณ ๋ ค๋ฅผ ํ์ง ์๊ธฐ ๋๋ฌธ์, ์ค์ ์ฐจ๋์ฉ ์์คํ
์ ์ ์ฉํ ๊ฒฝ์ฐ ์์คํ
๊ฐ์ ๋ฒ์ค ๋์ญํญ ๊ฐ์ญ ๋ฌธ์ ๋ฅผ ์ผ์ผ์ผ ์ค์๊ฐ์ฑ์ ๋ณด์ฅ์ด ๋ถ๊ฐ๋ฅํ ๋ฌธ์ ์ ํจ๊ป ์ผ๋ถ ์์คํ
์ ๋ฒ์ค ๋์ญํญ ๊ธฐ์ ๋ฌธ์ ๋ฅผ ์ด๋ํ ์ ์๋ค.
๋ณธ ํ์๋
ผ๋ฌธ์์๋ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด VirtIO์ ๊ธฐ๋ฐํ CAN ๊ฐ์ํ ํ๋ ์์ํฌ๋ฅผ ์ ์ํ๋ค. ์ ์๋ CAN ๊ฐ์ํ ํ๋ ์์ํฌ๋ ์ํํธ์จ์ด์ ๊ธฐ๋ฒ์ ๊ธฐ๋ฐํ๋ ๋น์ค์๊ฐ ์์คํ
๊ณผ ์ค์๊ฐ ์์คํ
์ ์์คํ
ํน์ฑ์ ๊ณ ๋ คํ์ฌ ์ค๊ณ ๋์๋ค. ๋ณธ ํ๋ ์์ํฌ๋ ๊ฐ ์์คํ
๋ค์ด CAN ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋, ์ค์๊ฐ ์์คํ
์ CAN ๋ฉ์์ง ์ ์ก๊ฒฝ๋ก์ธ fast path์ ๋น์ค์๊ฐ ์์คํ
์ CAN ๋ฉ์์ง ์ ์ก ๊ฒฝ๋ก์ธ slow path๋ฅผ ์ ๊ณตํ๋ค. ์ค์๊ฐ ์์คํ
์ fast path๋ฅผ ํตํ์ฌ ๋น๊ฐ์ํ ํ๊ฒฝ ์์ค์ผ๋ก CAN์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋น์ค์๊ฐ ์์คํ
์ slow path๋ฅผ ํตํ์ฌ ๊ณต์ ํ ๋ฒ์ค ๋์ญํญ์ ํ ๋น ๋ฐ์ ๊ธฐ์ ํ์ ์๋ CAN ๋ฉ์์ง ์ ์ก์ ์ํ ํ ์ ์๋ค.
๋ณธ CAN ๊ฐ์ํ ํ๋ ์์ํฌ๋ fast path์ slow path์ ๋ชฉ์ ์ ๋ฌ์ฑํ๊ธฐ ์ํ์ฌ ์ธ ๊ณ์ธต์ผ๋ก ์ด๋ฃจ์ด์ง ๊ณ์ธต ์ํคํ
์ฒ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๊ฐ ๊ณ์ธต์ ์ฒซ ๋ฒ์งธ ๊ณ์ธต์ธ front-end ๋๋ผ์ด๋ฒ, ๋ ๋ฒ์งธ ๊ณ์ธต์ธ back-end driver, ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ๊ณ์ธต์ธ ๊ฐ์๋ฒ์ค์ด๋ค. ์ฒซ ๋ฒ์งธ ๊ณ์ธต์ธ front-end ๋๋ผ์ด๋ฒ๋ ๊ฐ์๋จธ์ ๋ด๋ถ์ OS ์ปค๋์ ์กด์ฌํ์ฌ, ๊ฐ์๋จธ์ ๋ด๋ถ์ ์์ฉ๊ณผ ํ์ดํผ๋ฐ์ด์ ๋ฅผ ์ฐ๊ฒฐํ๋ค. Front-end ๋๋ผ์ด๋ฒ๋ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์๋จธ์ -ํ์ดํผ๋ฐ์ด์ ๋ชจ๋ ์ค์์นญ์ ์ํ ์ฑ๋ฅ์ ์ค๋ฒํค๋๋ฅผ ์ต์ํ ์ํค๊ธฐ ์ํ์ฌ ํ์ ๊ธฐ๋ฒ์ ๋ด์ฌํ๊ณ ์๋ค. ๋ณธ CAN ๊ฐ์ํ ํ๋ ์์ํฌ๋ fast path์ slow path์ ๋ฐ๋ผ ๊ฐ๊ธฐ ๋ค๋ฅธ ํ์ ํ์ฉ ์ ์ฑ
์ ์ ๊ณตํ๋ค. Fast path์๊ฒ ์ฑ๋ฅ์ ์ค๋ฒํค๋๊ฐ ์์ง๋ง ์งง์ ์ง์ฐ์๊ฐ์ ๊ฐ์ง ์ ์๋๋ก ํ์ ์ ์ฑ
์ ์ ๊ณตํ๋ค. Slow path์๊ฒ๋ CAN ๋ฉ์์ง์ ํ์
์ ๋ฐ๋ผ ์งง์ ์ง์ฐ์๊ฐ์ ๊ฐ๊ฒ ํ๊ฑฐ๋ ๋๋ ์ฑ๋ฅ์ ์ค๋ฒํค๋์ ์ต์ํํ ์ ์๋ ์ ์ฑ
์ ์ ๊ณตํ๋ค. ๋ ๋ฒ์งธ ๊ณ์ธต์ธ back-end ๋๋ผ์ด๋ฒ๋ ๋๋ฐ์ด์ค ์๋ฎฌ๋ ์ดํฐ ๋ด๋ถ์ ์กด์ฌํ์ฌ, front-end ๋๋ผ์ด๋ฒ์ ์ธ ๋ฒ์งธ ๊ณ์ธต์ธ ๊ฐ์๋ฒ์ค๋ฅผ ์ฐ๊ฒฐํ๋ค. Back-end ๋๋ผ์ด๋ฒ๋ ๊ณ์ธต ๊ฐ CAN ๋ฉ์์ง์ ์ ๋ฌ๋ง์ ๋ด๋นํ๊ธฐ ๋๋ฌธ์ ํน๋ณํ ๊ธฐ๋ฒ์ด ์ฌ์ฉ๋์ง ์๋๋ค. ๋ง์ง๋ง์ผ๋ก ๊ฐ์๋ฒ์ค๋ ํ์ดํผ๋ฐ์ด์ ๋ด๋ถ์ ์กด์ฌํ์ฌ back-end ๋๋ผ์ด๋ฒ์ ์ค์ CAN ์ปจํธ๋กค๋ฌ๋ฅผ ๋ด๋นํ๋ ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ๋ฅผ ์ฐ๊ฒฐํ๋ค. ๊ฐ์๋ฒ์ค๋ ์ฐจ๋์ฉ ๋ด๋ถ ์์คํ
๊ฐ CAN ํต์ , CAN ID์ ๊ธฐ๋ฐํ ์์ ๋ฉ์์ง ํํฐ๋ง ๋ฑ์ ์ ๋ฐ์ ์ธ CAN ๋ฒ์ค์ ๊ธฐ๋ฅ์ ๋ชจ์ฌํ๊ณ CAN ๋ฒ์ค ๋์ญํญ์ ์ ์ดํ๊ณ ๊ด๋ฆฌํ๋ค. ๊ฐ์๋ฒ์ค๋ fast path๋ฅผ ํตํด ์ค์๊ฐ ์์คํ
์ด ๋ฒ์ค ๋์ญํญ์ ํญ์ ์ ์ ํ์ฌ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ฉฐ, slow path๋ฅผ ํตํด ๋น์ค์๊ฐ ์์คํ
์ด ๊ณต์ ์ฑ์ ๊ธฐ๋ฐํ์ฌ ๋์ญํญ์ ํ ๋น ๋ฐ์ CAN ๋ฉ์์ง๋ฅผ ์ ์กํ ์ ์๋๋ก ํ๋ค.
๋ณธ ๋
ผ๋ฌธ์์ ์ ์๋ CAN ๊ฐ์ํ ํ๋ ์์ํฌ์ ํจ์ฉ์ฑ์ ๊ฒ์ฆํ๊ธฐ ์ํด์ ๊ตฌํ๊ณผ ํจ๊ป ์คํ์ ์งํํ์๋ค. ๊ตฌ์ฒด์ ์ผ๋ก Raspberry Pi 3B ๋ณด๋ ์์์ ๋ฆฌ๋
์ค ์ปค๋ ๊ธฐ๋ฐ ํ์ดํผ๋ฐ์ด์ ์ธ KVM(Kernel-based Virtual Machine)์์ ๋ณธ CAN ๊ฐ์ํ ํ๋ ์์ํฌ๋ฅผ ๊ตฌํํ๊ณ front-end ๋๋ผ์ด๋ฒ์ ๊ฐ์๋ฒ์ค์ ์ค๊ณ๋ ๊ธฐ๋ฅ์ ํ๊ฐํ์๋ค. ์คํ ๊ฒฐ๊ณผ ์ ์๋ ํ๋ ์์ํฌ๋ ์ค์๊ฐ ์์คํ
์๊ฒ ๋น๊ฐ์ํ ํ๊ฒฝ ์์ค์ ์ ์ง์ฐ CAN ์ ์ก ํ๊ฒฝ๊ณผ ๋น์ค์๊ฐ ์์คํ
์๊ฒ ๊ธฐ์ ์๋ ๊ณต์ ํ ๋ฒ์ค ๋์ญํญ์ ์ ๊ณตํ์ฌ, ์ค์๊ฐ ์์คํ
๊ณผ ๋น์ค์๊ฐ ์์คํ
์ด ํผ์ฌ๋ ์ฐจ๋์ฉ ๊ฐ์ํ ํ๊ฒฝ์ ๋์์ ์ง์ํ ์ ์์์ ๋ณด์๋ค. ์ด๋ฌํ ๊ฒฐ๊ณผ๋ ๋ณธ ๋
ผ๋ฌธ์์ ์ ์ํ CAN ๊ฐ์ํ ํ๋ ์์ํฌ์ ๋ด๋ถ์ ์ค๊ณ๋ ์ธ๋ถ ๊ธฐ๋ฒ๋ค์ด ๊ฐ์ํ๋ ์ฐจ๋์ฉ ์์คํ
์๊ฒ CAN ํต์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ผ๋ก์จ ์ค์ฉ์ ์ด๊ณ ํจ๊ณผ์ ์ธ ์๋จ์์ ๋ณด์ฌ์ค๋ค.์ 1 ์ฅ ์ ๋ก 1
์ 1 ์ ์ฐ๊ตฌ ๋๊ธฐ 3
์ 2 ์ ์ฐ๊ตฌ ๋ด์ฉ 5
์ 3 ์ ๋
ผ๋ฌธ ๊ตฌ์ฑ 8
์ 2 ์ฅ ๋ฐฐ๊ฒฝ ์ง์๊ณผ ๊ด๋ จ ์ฐ๊ตฌ 10
์ 1 ์ Control Area Network 10
์ 2 ์ I/O ๊ฐ์ํ ๊ธฐ์ 16
์ 3 ์ ๊ด๋ จ ์ฐ๊ตฌ 29
์ 3 ์ฅ ๋ฌธ์ ์ค๋ช
๊ณผ ํด๊ฒฐ ๋ฐฉ์ ๊ฐ๊ด 31
์ 1 ์ ์์คํ
๋ชจ๋ธ 31
์ 2 ์ ๋ฌธ์ ์ค๋ช
37
์ 3 ์ ํด๊ฒฐ ๋ฐฉ์ ๊ฐ๊ด 41
์ 4 ์ฅ VirtIO ๊ธฐ๋ฐ CAN ๊ฐ์ํ ์ํคํ
์ฒ 48
์ 1 ์ Front-end ๋๋ผ์ด๋ฒ 48
์ 2 ์ ๊ฐ์๋ฒ์ค 52
์ 3 ์ ์์ฝ ์ ๋ฆฌ 58
์ 5 ์ฅ ๊ตฌํ๊ณผ ์คํ์ ํ๊ฐ 63
์ 1 ์ CAN ๊ฐ์ํ ํ๋ ์์ํฌ ๊ตฌํ 63
์ 2 ์ ์คํ ์ค์ 68
์ 3 ์ ์คํ ๊ฒฐ๊ณผ 72
์ 4 ์ ์คํ ํ๊ฐ 76
์ 6 ์ฅ ๊ฒฐ ๋ก 80
์ฐธ๊ณ ๋ฌธํ 82
Abstract 85Maste