Appendix A. Serial Programming(8250 UART)
https://en.wikibooks.org/wiki/Serial_Programming/8250_UART_Programming#8086_I/O_ports
์ด ์น์ ์ ์ฃผ์ ์ด์ ์ 82050 UART์ ์ง์ค๋ ๊ฒ์ด์ง๋ง, ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ํจ๊ป ์์ ํ ์ปดํจํฐ ์นฉ์ ์ ๋ง ์ธ ๊ฐ์ง๋ค.
8250 UART
8259 PIC(ํ๋ก๊ทธ๋จ์ ์ธํฐ๋ฝํธ ์ปจํธ๋กค๋ฌ)
8086 CPU(์ค์ ์ฒ๋ฆฌ ์ฅ์น)
์ด๋ค์ ๋จ์ํ ์นฉ ๋ถํ ๋ฒํธ ์์ฒด๊ฐ ์๋๋ผ ์นฉ ์ ํ๊ตฐ์์ ๋ช ์ฌํ์ญ์์ค. ์ปดํจํฐ ๋์์ธ์ ๋ช ๋ ๋์ ๊ฝค ๋ง์ด ์งํํด์๊ณ , ์ธ ๊ฐ์ ์นฉ์ด ๊ฒฐํฉ๋์ด ๊ฐ์ ๋ฐ๋์ฒด์ ๋ฃ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๊ทธ๋์ ํด๋น ๊ธ์์ 8086์ด๋ผ๊ณ ๋งํ ๋, ๋๋ 80286, 80386, ํํฐ์, ๊ทธ๋ฆฌ๊ณ ์ธํ ์ด์ธ์ ์ ์กฐ์ ์ฒด๊ฐ ๋ง๋ ํธํ ์นฉ์ ํฌํจํ ํ์ ์นฉ์ ์๋ฏธํ๋ค. ๋ค๋ฅธ ์ํคํ ์ณ๋ค์ ์๋ฆฌ์ผ ๋ฐ์ดํฐ ํต์ ์ ๋ํด ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์์ง๋ง, ์ฌ๋ฌ ์ํํธ์จ์ด์์ ์๋ํด์ผ ํ๋ค?
ํ๋์ ์ด์์ฒด์ ๋ ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ๋ค๋ฃจ๊ฒ ๋ ์ธ๋ถ์ฌํญ์ ๋๋ถ๋ถ์ ๋ฎ์ ์์ค์ ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ฏ๋ก, ์ด๊ฒ์ ๋น์ ์ด ์์ ์ ์ด์์ฒด์ ๋ฅผ ๋ง๋ค์ง ์๋ ํ, ๋น์ ์ด ์ค์ค๋ก ๊ตฌํํ ์ ์๋ ์ด๋ค ๊ฒ ๋ณด๋ค๋ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ ๋นจ๋ฆฌ ์ดํดํ ์ ์์ด์ผ ํ๋ค. ์์ ์๋ฒ ๋๋ ์ปดํจํฐ ์ฅ์น๋ฅผ ์ค๊ณํ๋ ์ฌ๋๋ค์๊ฒ, ์ด ์์ค์์ 8250์ ์ดํดํ๋ ๊ฒ์ด ์๋นํ ๋ ์ค์ํด์ก๋ค.
8086๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก 8250๋ 16550 UART์์ ๋ถํฐ ์๋นํ ์งํํ๋ค. ๋ ์๋๋ก ๋ด๋ ค๊ฐ์ ๋๋ PC์์ ๋ง์ ๋ค๋ฅธ UART ์นฉ๋ค๊ณผ ๊ฐ๊ฐ์ ์นฉ์ ์ํฅ์ ๋ฏธ์น๋ ๋ช๊ฐ์ง ๊ธฐ์ดํ ์ ์ด๋ ๋ณํ๋ฅผ ๊ฐ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ฐ๊ตฌํ ๊ฒ์ด๋ค. ์ฐจ์ด์ ์ CPU ์ํคํ ์ฒ์ ๋ณ๊ฒฝ๋งํผ ์ค์ํ์ง ์์ผ๋ฉฐ, UART ์นฉ์ ์ ๋ฐ์ดํธํ๋ ์ฃผ๋ ์ด์ ๋ ํ์ฌ ์ฌ์ฉ ์ค์ธ CPU๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ CPU์์ ์๋ํ๋๋ก ํ๊ธฐ ์ํจ์ด์๋ค. 8250 ์์ฒด๋ ๋จ์ํ ํํฐ์ ์นฉ์ ๋ฐ๋ผ๊ฐ์ง ๋ชปํ๋ค.
์ํํธ์จ์ด ์ธก๋ฉด์์ ์ง๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ๊ธฐ๋ฐ์ ๊ตฌ์ถํ๋ ค๋ ์๋๋ผ๋ ์ ์ ๊ธฐ์ตํ์ญ์์ค. ์ด๊ฒ์ด ํ๋์จ์ด ์ค๊ณ์๋ ์ ์ฉํ ์ ์์ง๋ง ์ ์ฒด ์์คํ ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ๊ธฐ ์ค๋ช ์์ ์๋นํ ๋๋ฝ๋ ๊ฒ์ด๋ค.
8086 I/O ports
์ฐ๋ฆฌ๋ ์ธํ 8086๋ณด๋ค ํจ์ฌ ๋ ๋ฉ๋ฆฌ, ์๋์ ์ธํ CPU์ธ 4004์ ๊ทธ ํ๊ณ์์ธ 8008๋ก ๋์๊ฐ์ผ ํ๋ค. 8008์ ๋ํ ๋ชจ๋ ์ปดํจํฐ ์ง์นจ, ์ฆ op-code๋ ์ค๋๋ ์ ์ธํ ์นฉ์์ ์ฌ์ ํ ์๋ํ๋ฏ๋ก 30๋ ์ ์ ์์ฑ๋ ํฌํธ I/O ํํ ๋ฆฌ์ผ๋ ์ค๋๋ ์๋ ์ ํจํ๋ค. ์๋ก์ด CPU๋ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ง์นจ์ ๊ฐํํ์ง๋ง, ์๋์ ์ง์นจ์ ์ฌ์ ํ ๋จ์ ์๋ค.
8008์ด ์ถ์๋์ ์ธํ ์ CPU๊ฐ ์ธ๋ถ ์ฅ์น์ ํต์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ณ ์ํ๋ ค๊ณ ํ๋ค. ๊ทธ๋ค์ ์นฉ์ด ์ธ๋ถ ์ฅ์น์์ ํต์ ์ ์ฉ์ ํ์ ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ I/O ํฌํธ ์ํคํ ์ฒ๋ผ๋ ๋ฐฉ๋ฒ์ ์ ํํ๋ค. 8008๋ , ์ด๊ฒ์ ์นฉ๊ณผ์ ํต์ ์ ์ฉ ํ์ด ์ด 16๊ฐ๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ ํํ ์ธ๋ถ์ฌํญ์ ์นฉ ์ค๊ณ์ ํ์ฌ ๋ ผ์ํ๊ธฐ์๋ ๋๋ฌด ์์ธํ ๋ค๋ฅธ ์์ธ์ ๋ฐ๋ผ ๋ค์ํ์ง๋ง, ์ผ๋ฐ์ ์ธ ์ด๋ก ์ ์๋นํ ๊ฐ๋จํ๋ค.
ํ ์ค 8๊ฐ๋ ํน์ ์ฅ์น์ ์ ํธ๋ฅผ ๋ํ๋ด๋ I/O ์ฝ๋๋ฅผ ๋ํ๋ธ๋ค. ์ด๋ฅผ I/O ํฌํธ๋ผ๊ณ ํ๋ค. ์ด ์ฝ๋๋ 2์ง์ ์ฝ๋์ผ ๋ฟ์ด๋ฏ๋ก 256๊ฐ์ ๋ค๋ฅธ ์ฅ์น๋ฅผ CPU์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ๋ํ๋ธ๋ค. ๊ทธ๊ฒ๋ณด๋ค ์กฐ๊ธ ๋ ๋ณต์กํด์ง์ง๋ง, ๋น์ ์ ์ฌ์ ํ ๊ทธ๊ฒ์ ๊ณ ๊ฐ๋ค์ ์ํด 256๊ฐ์ PO ๋ฐ์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ ์์ ๋์ ์ฐ์ฒด๊ตญ ๊ฐ์ ์ํํธ์จ์ด์์ ๊ทธ๊ฒ์ ์๊ฐํ ์ ์๋ค.
๋ค์ ํ ์ธํธ๋ ๊ตํ๋๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ธ๋ค. ๋น์ ์ ์ด๊ฒ์ PO ๋ฐ์ค์ ๋ฃ๊ฑฐ๋ PO ๋ฐ์ค์์ ๊บผ๋ด๋ ์ฝ์๋ก ์๊ฐํ ์ ์๋ค.
์ธ๋ถ ์ฅ์น๊ฐ ํด์ผ ํ ์ผ์ ์ ์ถ๋ ฅ ์ฝ๋๋ฅผ ์ฐพ๋ ๊ฒ๋ฟ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ์ฐพ์ผ๋ ค๋ "ํ ๋น"๊ณผ ์ผ์นํ๋ฉด ํด๋น ํฌํธ์ ๋ํ ์ ์ด๊ถ์ ๊ฐ๊ฒ ๋๋ค. ํ์ ๋ฐ์ดํฐ๊ฐ CPU๋ก ์ ์ก๋๋์ง ๋๋ CPU์์ ์ ์ก๋๋์ง ์ฌ๋ถ๋ฅผ ํ์ํ๋ค. ์ด๊ธฐ PC ์ค์ ์ ์ต์ํ ์ฌ๋๋ค์๊ฒ๋, ๋ ๊ฐ ์ด์์ ๊ธฐ๊ธฐ๊ฐ ๋์์ ๋์ผํ I/O ํฌํธ์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ์ ์ถ๋ ฅ ์ถฉ๋์ด ๋ฐ์ํ๋ ๊ณณ์ด๋ค. ์ด๊ฒ์ ํนํ ์๋ก์ด ์ฅ๋น๋ฅผ ์ถ๊ฐํ ๋ ๊ทธ๋ฌํ ์ด๊ธฐ ์์คํ ์ ๋ํ ์์ฐ๋ฆผ์ ์์ฒ์ด์๋ค.
์ด๋ ๊ธฐ์กด์ RAM ์๋ ๋ฐฉ์๊ณผ ๋งค์ฐ ์ ์ฌํ๋ฉฐ, ์ผ๋ถ CPU ์ค๊ณ๋ RAM์์ ์ด ์ ์ฒด ํ๋ก์ธ์ค๋ฅผ ๊ทธ๋๋ก ๋ชจ๋ฐฉํ์ฌ I/O ์ ์ด๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์์ฝํ๋ค. ์ด๊ฒ์ ๋์ ์ํํธ์จ์ด์ ์ฌ์ฉ๋ ์ ์๋ ์ ์ฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ถ๋ฅผ ์น๋ ๊ฒ์ ํฌํจํ์ฌ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ฒฐ๊ตญ IBM PC์ ์ดํ PC ์์คํ ์์๋ ๋ฉ๋ชจ๋ฆฌ ๋งต I/O(Memory Mapped I/O)์ PMIO(Port-Mapped I/O)๊ฐ ๋ชจ๋ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ ๋ง ๋ณต์กํด์ง๋ค. ๊ทธ๋ฌ๋ ์ง๋ ฌ ํต์ ์ ์ํด์๋ 8250 ์นฉ์ด ์๋ํ๋ ๋ฐฉ์์ธ ๋งํผ ํฌํธ I/O ๋ฐฉ์์ ๊ณ ์ํ ๊ฒ์ด๋ค.
Software I/O access
9๋ฒ ํฌํธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ฑฐ๋ ๋ฐ๊ธฐ ์ํ ์ด์ ๋น๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋ ๋์ ์์ค์ ์ธ์ด๋ก ํ๋ก๊ทธ๋๋ฐํ ๋, ๊ทธ๊ฒ์ ์ข ๋ ๊ฐ๋จํด์ง๋ค. ์ผ๋ฐ์ ์ธ C ์ธ์ด ํฌํธ I/O ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋๋ค.
๊ฒฝ๊ณ !! ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ ๋ง ๊ฒฝ๊ณ ๋ค. ์ด๋ค ํฌํธ์ ์ฐ๊ฒฐ๋์ด ์๋์ง ์ ๋๋ก ์์ง ๋ชปํ ์ฑ ์์๋ก ์ปดํจํฐ์ I/O ํฌํธ์ ์ก์ธ์คํ๋ฉด ์ปดํจํฐ๊ฐ ์ ๋ง ์๋ง์ด ๋ ์ ์๋ค. ์ต์ํ ์ด์์ฒด์ ๋ฅผ ๋ง๊ฐ๋จ๋ฆฌ๊ณ ์ปดํจํฐ๊ฐ ์๋ํ์ง ์๊ฒ ํ ๊ฒ์ด๋ค. ์ผ๋ถ I/O ํฌํธ์ ์ฐ๋ ๊ฒ์ ์ปดํจํฐ์ ๋ด๋ถ ๊ตฌ์ฑ์ ์๊ตฌ์ ์ผ๋ก ๋ฐ๊ฟ ์ ์์ผ๋ฉฐ, ์ํํธ์จ์ด๋ฅผ ํตํด ๋ฐ์ํ ์์์ ๋ณต๊ตฌํ๋ ๋ฐ ํ์ํ ์๋ฆฌ์ ์ผ๋ก ์ด๋ํ ์ ์๋ค. ๋ ๋์ ๊ฒ์, ์ด๋ค ๊ฒฝ์ฐ์๋ ์ปดํจํฐ์ ์ค์ ์ ์ธ ์์์ ์ ํ ์ ์๋ค. ์ด๋ ์ปดํจํฐ ๋ด๋ถ์ ์ผ๋ถ ์นฉ์ด ๋ ์ด์ ์๋ํ์ง ์์ ๊ฒ์ด๊ณ ์ปดํจํฐ๊ฐ ๋ค์ ์๋ํ๊ธฐ ์ํด์๋ ๊ทธ ๋ถํ๋ค์ ๊ต์ฒดํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์์๋ ์นฉ์ ์ปดํจํฐ ๋ถ๋ถ์ ํํธ์๋ ๊ณตํ์ ๋ํ๋ด๋ ๊ฒ์ด์ง๋ง, ๋ถํํ๋ ๊ทธ๋ฐ ์ผ์ด ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๋ถ์ ๊ทธ๊ฒ์ ์์์ผ ํ๋ค.
I/O ํฌํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ ค์ํ์ง ๋ง๊ณ , ์ฐ๋ ๊ฒ์ ํ์คํ ํ๊ณ , ํน์ I/O ํฌํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ๊ฐ I/O ํฌํธ์ ๋ํด ์ด๋ค ์ฅ๋น๊ฐ "๋งคํ"๋๋์ง ํ์ธํ์ญ์์ค. ์ฐ๋ฆฌ๋ ์๋ฆฌ์ผ ํต์ ์ ์ํ I/O ํฌํธ๋ฅผ ์ด๋ป๊ฒ ์๋ณํ๋์ง์ ๋ํด ์ข ๋ ์ธ๋ถ์ ์ธ ์ ๋ณด๋ฅผ ์ป์ ๊ฒ์ด๋ค. ๋ง์นจ๋ด ์ฐ๋ฆฌ๋ ์ฝ๊ฐ์ ์ํํธ์จ์ด๋ฅผ ์ฐ๊ธฐ ์์ํ์ผ๋ฉฐ, ์์ผ๋ก ๋ ๋ง์ ์ํํธ์จ์ด๋ฅผ ๋ง๋ค ๊ฒ์ด๋ค.
x86 ํฌํธ I/O ํ์ฅ
8008 CPU์ 8086 ์ฌ์ด์๋ ๋ช ๊ฐ์ง ์ฐจ์ด์ ์ด ์๋ค. ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฐ์ฅ ์ฃผ๋ชฉํ ๋งํ ์ ์ ํฌํธ I/O ์ฃผ์ 256๊ฐ ๋์ 8086์ด 65536๊ฐ์ ์๋ก ๋ค๋ฅธ I/O ํฌํธ์ ์ ๊ทผํ ์ ์๋ค๋ ์ ์ด๋ค. ๊ทธ๋ฌ๋ ์ปดํจํฐ ๊ตฌ์ฑ์ IBM PC์ ๊ฒฝ์ฐ 16๊ฐ ์ดํ์ ์์ด์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, 10๊ฐ์ ์์ด์ด๋ง ์ฌ์ฉ๋์ด 1024๊ฐ์ ์๋ก ๋ค๋ฅธ ํฌํธ๋ง ๋ง๋ค์๋ค. ๋ฌด์๋๊ณ ์๋ ํฌํธ ๋ฒํธ์ ๋ ๋์ ๋นํธ๋ ๋์ผํ ํฌํธ์ ๋ํด ์ฌ๋ฌ ํฌํธ ๋ฒํธ ๋ณ์นญ์ ๋ง๋ค์๋ค.
๊ฒ๋ค๊ฐ, 8086์ ๋จ์ํ ํ๋์ ๋ฌธ์๋ฅผ ์์ด๋ ๋ฐ์ผ๋ก ๋ณด๋ด๋ ๊ฒ ์ธ์, 16๋นํธ๋ฅผ ํ ๋ฒ์ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํด์ค ๊ฒ์ด๋ค. 16๋นํธ ์๋ ๋ฐ์ดํธ๋ ์ฐ์ ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์๋์์ด๋ก ์ฝ๊ฑฐ๋ ์ด๋ค. 386 ์นฉ์ 32๋นํธ๊น์ง ๋์์ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํด์ค๋ค. 65536๊ฐ ์ด์์ ์๋ก ๋ค๋ฅธ I/O ํฌํธ์ ํ์์ฑ์ด ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ ์ ์ด ์์ผ๋ฉฐ, ์ฅ์น์ ๋ ํฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ DMA(Direct Memory Access) ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. ์ด ๊ณณ์ ์ฅ์น๊ฐ CPU๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ปดํจํฐ์ RAM์ ์ง์ ์ฐ๊ณ ์ฝ๋ ๊ณณ์ด๋ค. ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ๊ทธ ์ฃผ์ ๋ฅผ ๋ค๋ฃจ์ง ์์ ๊ฒ์ด๋ค.
๋ํ 8086 CPU๋ 65536๊ฐ์ ์๋ก ๋ค๋ฅธ I/O ํฌํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์์๋ค. ์ธํ ์ ์นฉ ์ค๊ณ์๋ค์ ๊ฐ๊ฒฉ์ด ์ ๋ ดํด์ก๊ณ ๋จ์ง 10๋นํธ์ ๋ํ ์ด๋๋ ์ค ๋ผ์ธ๋ง ๊ฐ์ง๊ณ ์์๋๋ฐ, ์ด๊ฒ์ ์ํํธ์จ์ด ์ค๊ณ์๋ค์ด ๋ ๊ฑฐ์ ์์คํ ๊ณผ ํจ๊ป ์ผํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด๋ I/O ํฌํธ ์ฃผ์ $1E8 ๋ฐ $19E8(๋ฐ ๊ธฐํ...)๋ ์๋ฏธํ๋ค. ์ด๊ฒ์ ๋จ์ง ์์์ผ ๋ฟ์ด๋ค)๋ ์ด๊ธฐ PC์ ๋์ผํ I/O ํฌํธ๋ก ํด๊ฒฐ๋๋ค. ํํฐ์ CPU์๋ ์ด๋ฌํ ์ ํ์ด ์์ง๋ง, ์ด๊ธฐ ํ๋์จ์ด ์ค ์ผ๋ถ๋ฅผ ์ํด ์์ฑ๋ ์ํํธ์จ์ด๋ ๋๋๋ก ์์ ๋นํธ๊ฐ ๋ฌด์๋์๊ธฐ ๋๋ฌธ์ "aliased"๋ I/O ํฌํธ ์ฃผ์์ ์ฐ์ด๊ธฐ๋ ํ๋ค. ๋ค๋ฅธ ๊ณผ๊ฑฐ์ ๋ฌธ์ ๋ค์ด ๋ํ๋์ง๋ง, ๋คํํ๋ 82050 ์นฉ๊ณผ ์๋ฆฌ์ผ ํต์ ์ ๊ฒฝ์ฐ, ์ด๋ฌํ ์จ๋ฆฌ์ด์ฑ ์ํฉ์ "์ด์ ์ผ๋ก ์ผ๋" ์๋ฆฌ์ผ ๋๋ผ์ด๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ ํ, ์ด๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค. ์ด ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ผ๋ก PC์ ์ผ๋ฐ์ ์ธ 2๊ฐ ๋๋ 4๊ฐ ์ง๋ ฌ COM ํฌํธ ์ด์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ๋ํ๋๋ค.
x86 ํ๋ก์ธ์ ์ธํฐ๋ฝํธ
8086 CPU์ ํธํ ์นฉ์ ์ธํฐ๋ฝํธ ๋ผ์ธ์ผ๋ก ์๋ ค์ง ๊ฒ์ ๊ฐ์ง๊ณ ์๋ค. ์ด๊ฒ์ ๋ง ๊ทธ๋๋ก CPU๊ฐ ํ๊ณ ์๋ ๋ชจ๋ ๊ฒ์ ๋ฉ์ถ๊ณ ์ผ๋ถ I/O ์ํฉ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํ ๋๋ผ๋ ๊ฒ์ ์๋ฆฌ๊ธฐ ์ํด ์ ์์ด ์ผ์ง ์ ์๋ ๋๋จธ์ง ์ปดํจํฐ์ ์ฐ๊ฒฐ๋ ์ ์ ์ด๋ค.
8086๋ ๋ด์๋ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ์ข ๋ฅ์ ์ธํฐ๋ฝํธ๊ฐ ์๋ค. ํ๋์จ์ด ์ธํฐ๋ฝํธ ๋ฐ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ. ๊ฐ ์ข ๋ฅ๋ง๋ค ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ๊ธฐ์ดํ ์ ๋ค์ด ์์ง๋ง, ์ํํธ์จ์ด์ ๊ด์ ์์ ๋ณด๋ฉด ๋ณธ์ง์ ์ผ๋ก ๊ฐ์ ๊ฒ์ด๋ค. 8086 CPU๋ 256๊ฐ์ ์ธํฐ๋ฝํธ๋ฅผ ํ์ฉํ์ง๋ง, ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ์ํํ๋ ์ฅ๋น์ ์ฌ์ฉํ ์ ์๋ ๋ฒํธ๋ ์๋นํ ์ ํ๋์ด ์๋ค.
์ค๋ช
๋ IRQ
ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ IRQ 0๋ถํฐ IRQ 15๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง๋ค. IRQ๋ ์ธํฐ๋ฝํธ ๋ฆฌํ์คํธ๋ฅผ ์๋ฏธํ๋ค. ์ด 15๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋์จ์ด ์ธํฐ๋ฝํธ๊ฐ ์๋ค. ๋ด๊ฐ ์ ์ด๋ ์ํ์ ํ ์ค ๋ชจ๋ฅธ๋ค๊ณ ์๊ฐํ๊ธฐ ์ ์, ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ์ฝ๊ฐ์ ์ญ์ฌ ์์ ์ ํด์ผ ํ๋ค. ์ฐ๋ฆฌ๊ฐ 8259 ์นฉ์ผ๋ก ๋์ด๊ฐ๋ฉด ๋๋ง์น ๊ฒ์ด๋ค. ์๋์ IBM-PC๊ฐ ๊ตฌ์ถ๋์์ ๋, IRQ 0๋ถํฐ IRQ 7๊น์ง๋ผ๋ ๋ผ๋ฒจ์ด ๋ถ์ IRQ๋ 8๊ฐ๋ฟ์ด์๋๋ฐ, ๊ทธ ๋น์์๋ PC์ ์ฌ๋ ค์ง ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ์ถฉ๋ถํ๋ค๊ณ ์๊ฐ๋์์ง๋ง, ๊ณง ๊ทธ๊ฒ์ด ์ถ๊ฐ๋๊ณ ์๋ ๋ชจ๋ ๊ฒ์ ์ถฉ๋ถํ์ง ์๋ค๋ ๊ฒ์ด ๋ช ๋ฐฑํด์ก๋ค. IBM-PC/AT๊ฐ ๋ง๋ค์ด์ก์ ๋(80286 CPU๋ฅผ ํ์ฌํ ์ฒซ ๋ฒ์งธ ๊ฒ๊ณผ ์ค๋๋ PC์์ ํํ ๋ณผ ์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ํฅ์ ๊ธฐ๋ฅ) 8259 ์นฉ์ 1๊ฐ ์ฌ์ฉํ๋ ๋์ ์ด ๊ฐ์ ์นฉ์ 2๊ฐ ์ฌ์ฉํ๊ณ , ์ธํฐ๋ฝํธ ์๋ฅผ 8๊ฐ์์ 15๊ฐ๋ก ํ๋ํ๊ธฐ ์ํด ์๋ก "์ฒด์ธ"ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. ์ด ์๋ฌด๋ฅผ ์์ํ๊ธฐ ์ํด์๋ IRQ ํ ๊ฐ๋ฅผ ํฌ์์์ผ์ผ ํ๊ณ , ๊ทธ๊ฒ์ IRQ 2์๋ค.
์ฌ๊ธฐ์ ์์ ์ CPU์ ๋ํด ์ด๋ ์ ๋์ ๋ฐ์ดํฐ๊ฐ ์ค๋น๋์ด ์๋ค๋ ๊ฒ์ ๊ธฐ๊ธฐ๊ฐ CPU์ ์๋ฆฌ๋ ค๋ฉด ํ์ฌ ์ปดํจํฐ์์ ์คํ๋๊ณ ์๋ ๋ชจ๋ ์ํํธ์จ์ด๋ฅผ ์ค์งํ๊ณ ๋์ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ผ๊ณ ํ๋ ํน๋ณํ "์์" ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ์ถ๋ค๋ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค๋ ๊ฒ์ด๋ค. ์ผ๋จ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๊ฐ ๋๋๋ฉด ์ปดํจํฐ๋ ์ด์ ์ ํ๋ ๊ฒ์ผ๋ก ๋์๊ฐ ์ ์๋ค. ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๊ฐ ์ถฉ๋ถํ ๋น ๋ฅด๋ฉด ํธ๋ค๋ฌ๊ฐ ์ฌ์ฉ๋์๋ค๋ ๊ฒ์กฐ์ฐจ ๋์น์ฑ์ง ๋ชปํ ๊ฒ์ด๋ค.
์ฌ์ค, PC์์ ์ด ํ ์คํธ๋ฅผ ์ฝ๊ณ ์๋ค๋ฉด, ์ด ๋ฌธ์ฅ์ ์ฝ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ ๋์, ๋ช๋ช ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ ์ด๋ฏธ ๋น์ ์ ์ปดํจํฐ์ ์ํด ์ฌ์ฉ๋์๋ค. ํค๋ณด๋๋ ๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ธํฐ๋ท์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋๋ง๋ค ์ปดํจํฐ์ ์ด๋ ์ง์ ์์ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๊ฐ ํด๋น ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉ๋์ด ์๋ค.
์ธํฐ๋ฝํธ ํธ๋ค๋ฌ
์ ์ ํ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์ธ๋ถ์ฌํญ์ ๋ํด ์์๋ณด๊ฒ ์ง๋ง, ์ด์ ๋๋ ๊ทธ๊ฒ๋ค์ด ๋ฌด์์ธ์ง์ ๋ํด ์ค๋ช ํ๊ณ ์ ํ๋ค. ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ ์ธํฐ๋ฝํธ๊ฐ ํธ๋ฆฌ๊ฑฐ๋ ๋ ์ด๋ค ์ํํธ์จ์ด๊ฐ ์คํ๋์ด์ผ ํ๋์ง CPU๋ฅผ ์ ํํ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
8086 CPU๋ RAM์ ๋ค๋ฅธ ๊ณณ์ ์ธํฐ๋ฝํธ ์ํํธ์จ์ด๊ฐ ์์นํ ๊ณณ์ "์ "์ผ๋ก ์ค์ ํ RAM์ ์ผ๋ถ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ๊ฒฝ๋ก๋ฅผ ํตํด CPU๋ ์ํํธ์จ์ด๊ฐ ์๋ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฐ๋จํ ์กฐํ๋ง ํ๋ฉด ๋๊ณ , ๊ทธ ์์ ๊น์ง RAM์ผ๋ก ์ํํธ์จ์ด ์คํ์ ์ ์กํ๋ฉด ๋๋ค๋ ์ด์ ์ด ์๋ค. ์ด๊ฒ์ ๋ํ ํ๋ก๊ทธ๋๋จธ๋ก์ CPU๊ฐ RAM์์ " ๊ฐ๋ฆฌ์ผ์ง๋" ์์น๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, ์ด์์ฒด์ ์ ์ด๋ค ๊ฒ์ผ๋ก ๊ฐ๋ ๋์ , ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉ์ ์ง์ ํ๊ณ ๋ค๋ฅธ ๊ฒ์ ์ง์ ๊ฑฐ๊ธฐ์ ๋ฃ์ ์ ์๋ค.
์ด๊ฒ์ด ์ด๋ป๊ฒ ๊ฐ์ฅ ์ ์ํ๋๋๋์ ๋ฐ๋ผ ์ด์์ฒด์ ๊ฐ ํฌ๊ฒ ๋ฌ๋ผ์ง๋ค. MS-DOS์ ๊ฐ์ ๊ฐ๋จํ ์ด์์ฒด์ ์ ๊ฒฝ์ฐ, ์ด๋ฌํ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ฅผ ์ง์ ์์ฑํ๋๋ก ๊ถ์ฅํ๋๋ฐ, ํนํ ์ธ๋ถ ์ฃผ๋ณ์ฅ์น์ ํจ๊ป ์์ ํ ๋๋ ๋์ฑ ๊ทธ๋ฌํ๋ค. ๋ฆฌ๋ ์ค๋ MS-์๋์ฐ์ฆ์ ๊ฐ์ ๋ค๋ฅธ ์ด์์ฒด์ ๋ ์ด๋ฌํ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ ์๋น์ค ๋ฃจํด์ ์ฐ๊ฒฐ๋๋ "๋๋ผ์ด๋ฒ"๋ฅผ ๊ฐ๋ ์ ๊ทผ๋ฐฉ์์ ์ฌ์ฉํ๊ณ , ๊ทธ ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ํํธ์จ์ด๋ ์ฅ๋น๋ฅผ ์ง์ ๋ค๋ฃจ๊ธฐ๋ณด๋ค๋ ๋๋ผ์ด๋ฒ๋ฅผ ๋ค๋ฃฌ๋ค. ํ๋ก๊ทธ๋จ์ด ์ค์ ๋ก ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ฒ ๋ ํน์ ์ด์ ์ฒด์ ์ ๋ฐ๋ผ ๋งค์ฐ ๋ฌ๋ผ์ง๋ค. ๋ง์ฝ ๋น์ ์ด ๋์ ๋น์ ์์ ์ ์ด์์ฒด์ ๋ฅผ ์ฐ๋ ค๊ณ ํ๋ค๋ฉด, ๋น์ ์ ์ด๋ฌํ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ฅผ ์ง์ ์ฐ๊ณ , ๋น์ ์ด ์ด๋ป๊ฒ ์ด ํธ๋ค๋ฌ์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๊ฒ์ํ๋์ง์ ๋ํ ํ๋กํ ์ฝ์ ์ ์ ํด์ผ ํ ๊ฒ์ด๋ค.
์ํํธ์จ์ด ์ธํฐ๋ฝํธ
๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๊ธฐ ์ ์, ๋๋ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ์ ๋ํด ์์ฃผ ๊ฐ๋จํ ๋งํ๊ณ ์ถ๋ค. ์ํํธ์จ์ด ์ธํฐ๋ฝํธ๋ ๋ค์๊ณผ ๊ฐ์ด 8086 ์กฐ๋ฆฝ ์ง์นจ "int"๋ก ํธ์ถ๋๋ค.
int $21
์ํํธ์จ์ด ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ด์ ์์, ์ด๊ฒ์ ์ ๋ง๋ก ์๋ธ๋ฃจํด์ ๋ถ๋ฅด๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ ๋ฟ์ด์ง๋ง, ํธ์์คํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ์์ ์คํ๋๊ณ ์๋ "์ํํธ์จ์ด"๋ ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ ๋๋ ์ฌ์ง์ด ๊ฐ์ ์ปดํ์ผ๋ฌ์์ ๋ง๋ค์ด์ง ํ์๊ฐ ์๋ค. ์ค์ ๋ก, ์ข ์ข ์ด๋ฌํ ์๋ธ๋ฃจํด๋ค์ ์กฐ๋ฆฝ ์ธ์ด๋ก ์ง์ ์ฐ์ฌ์ง๋ค. ์์ ์์์ ์ด ์ธํฐ๋ฝํธ๋ ์ค์ ๋ก "DOS" ์๋ธ๋ฃจํด์ ํธ์ถํ์ฌ DOS์ ์ง์ ๊ด๋ จ๋ ์ด๋ค ์ข ๋ฅ์ I/O ์ก์ธ์ค๋ฅผ ์ํํ ์ ์๊ฒ ํ๋ค. ์ด ๊ฒฝ์ฐ ๋ ์ง์คํฐ์ ๊ฐ์ ๋ฐ๋ผ, ๋๊ฐ 8086๋ AX ๋ ์ง์คํฐ๋ ํ์ฌ ์๊ฐ, ๋ ์ง, ๋์คํฌ ํฌ๊ธฐ, ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก DOS์ ์ฐ๊ด๋๋ ๋ชจ๋ ์ ๋ณด์ ๊ฐ์ DOS์์ ์ป๊ณ ์ ํ๋ ์ ๋ณด๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค. ์ปดํ์ผ๋ฌ๋ค์ ์ด๋ฐ ์ธํฐ๋ฝํธ ๋ฃจํด์ ์ค์ ํ๋ ๊ฒ์ ์ฝ๊ฐ ๊น๋ค๋ก์ธ ์ ์๊ธฐ ๋๋ฌธ์ ์ข ์ข ์ด๋ฐ ์ธ๋ถ ์ฌํญ๋ค์ ์จ๊ธด๋ค.
์ด์ ์ ๋ง ์ผ์ ์๋ง์ผ๋ก ๋ง๋๋ ๊ฑฐ์ผ. "ํ๋์จ์ด ์ธํฐ๋ฝํธ"๋ "์ํํธ์จ์ด ์ธํฐ๋ฝํธ"์์๋ ํธ์ถํ ์ ์์ผ๋ฉฐ, ์ค์ ๋ก ์ด๊ฒ์ ์ํํธ์จ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑํ๋์ง ํ์ธํ๋ ํฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค. ์ฌ๊ธฐ์์ ์ฐจ์ด์ ์ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ๊ฐ ์ด ์ด์ ๋ธ๋ฆฌ opcode๋ฅผ ํตํด ๋ช ์์ ์ผ๋ก ํธ์ถ๋ ๊ฒฝ์ฐ์๋ง ํธ์ถ๋๊ฑฐ๋ CPU์์ ์ํํธ์จ์ด ์ฝ๋์ ์ผ๋ถ๊ฐ ์คํ๋๋ค๋ ๊ฒ์ด๋ค.
8259 PIC(ํ๋ก๊ทธ๋จ์ ์ธํฐ๋ฝํธ ์ปจํธ๋กค๋ฌ)
8259 ์นฉ์ ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ํ๋ ์ ๊ณผ์ ์ "์ฌ์ฅ"์ด๋ค. ์ธ๋ถ ์ฅ์น๋ ์ด ์นฉ์ ์ง์ ์ฐ๊ฒฐ๋๊ฑฐ๋ PC-AT ํธํ ์ฅ์น์ ๊ฒฝ์ฐ(ํ๋ PC์์ ๊ฐ์ฅ ์น์ํ ๊ฐ๋ฅ์ฑ์ด ๋์) ์ด๋ฌํ ๋ ์ฅ์น๊ฐ ํจ๊ป ์ฐ๊ฒฐ๋ ๊ฒ์ด๋ค. ๋ฌธ์ ๊ทธ๋๋ก 16๊ฐ์ ์์ด์ด๊ฐ ์ด ์นฉ ์์ ๋ค์ด์ค๋๋ฐ, ๊ฐ๊ฐ์ ์์ด์ด๋ IRQ-0์์ IRQ-15๋ก ํ์๋์ด ์๋ค.
์ด๋ฌํ ์นฉ์ ๋ชฉ์ ์ ์ธํฐ๋ฝํธ ์ ํธ๋ฅผ "์ฐ์ "ํ๊ณ ์ด๋ค ์ง์์ ์ฐํ๊ฒ ์ ๋ฆฌํ๋ ๋ฐ ์๋ค. ์ด๋ค ์ฅ์น๊ฐ ์ธ์ ์ธํฐ๋ฝํธ๋ฅผ "์์ฒญ"ํ ์ง ์์ธกํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์, ์ข ์ข ์ฌ๋ฌ ์ฅ์น๊ฐ CPU๋ก๋ถํฐ ์ฃผ์๋ฅผ ๋๊ธฐ ์ํด ๊ฒฝ์ํ ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋งํด์, ๋ฎ์ ๋ฒํธ์ IRQ๊ฐ ์ฐ์ ๊ถ์ ๊ฐ๋๋ค. ์ฆ, IRQ-1๊ณผ IRQ-4๊ฐ ๋์์ ์ฃผ์๋ฅผ ์์ฒญํ๋ ๊ฒฝ์ฐ IRQ-1์ด ์ฐ์ ๊ถ์ ์ป๊ณ CPU์ ๊ดํ ํ ๋จผ์ ํธ๋ฆฌ๊ฑฐ๋๋ค. IRQ-4๋ IRQ-1์ด "๋ฌด์ ์ ์๋น์ค ์ ์ฐจ" ๋๋ ISR์ ์๋ฃํ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
๊ทธ๋ฌ๋ IRQ-4๊ฐ ISR(์ด๊ฒ์ ์ํํธ์จ์ด๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ๋ผ, ์ด๊ฒ์ ๋น์ ์ด ๋ณดํต ์ปดํจํฐ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ธ ์ ์๋ ๋ค๋ฅธ ์ปดํจํฐ ํ๋ก๊ทธ๋จ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก)์ ํ๋ฉด์ IRQ-1์ IRQ-4์ฉ ISR์ "๋ฐฉํด"ํ๊ณ ๋์ ์คํํ ์์ฒด ISR์ ๋ฐ๊ณ , ๊ทธ๊ฒ์ด ๋๋๋ฉด IRQ-4 ISR๋ก ๋๋์๊ฐ๋ค. ์ด๊ฒ์๋ ์์ธ๋ ์์ง๋ง, ํ์ฌ๋ก์๋ ์ผ์ ๋จ์ํ๊ฒ ํฉ์๋ค.
์ ์ ์๋์ IBM-PC๋ก ๋์๊ฐ ๋ด ์๋ค. ๊ทธ๊ฒ์ด ์ง์ด์ก์ ๋, ๋ง๋๋ณด๋์๋ 8259๊ฐ์ ์นฉ์ด ํ๋๋ฐ์ ์์๋ค. IBM-AT๊ฐ ์ถ์๋์์ ๋ IBM์ ์์ง๋์ด๋ค์ IRQ ์ ํธ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด ๋ ๋ฒ์งธ 8259 ์นฉ์ ์ถ๊ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. CPU(ํ์์ 80286)์๋ ์ธํฐ๋ฝํธ ์๋ฆผ์ ๋ฐ์ ์ ์๋ ํ์ด ์์ง 1๊ฐ๋ฐ์ ์์๊ธฐ ๋๋ฌธ์, ์๋์ 8259 ์นฉ์์ IRQ-2๋ฅผ ์ก์ ๋ค์ ์นฉ์ ์ฒด์ธ์ผ๋ก ๋ฌถ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. IRQ-2๋ IRQ-2์ ์์กดํ๋ ๋ชจ๋ ์ฅ์น์ ๋ํด IRQ-9๋ก ๋ค์ ์ ์ก๋์๋ค. ์ด ๊ณํ์ ์คํํ ๋ ์ข์ ์ ์ IRQ-2๋ฅผ ์ฌ์ฉํ๋ ์ด๋ค ๊ฒ์ ๊ณํํ ์ํํธ์จ์ด๊ฐ ๊ทธ ์ฅ์น๋ฅผ ์ฌ์ฉํ ๋, ๋น๋ก 7๊ฐ์ ๋ค๋ฅธ ์ฅ์น๊ฐ ํ์ฌ ์ด ์ธํฐ๋ฝํธ๋ฅผ "๊ณต์ "ํ๊ณ ์์์๋ ๋ถ๊ตฌํ๊ณ , ์ฌ์ ํ "ํต์ง"ํ ๊ฒ์ด๋ผ๋ ์ ์ด์๋ค. IRQ-8์์ IRQ-15๊น์ง ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ฐ์ ์์ ์ธก๋ฉด์์ ์ด๊ฒ์ด ์๋ฏธํ๋ ๊ฒ์ IRQ-8์์ IRQ-15๊น์ง์ ์ฐ์ ์์๊ฐ IRQ-3๋ณด๋ค ๋๋ค๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ์ฌ๋ฌ๋ถ์ด ์ด๋ค ์ฅ์น๊ฐ ๋ค๋ฅธ ์ฅ์น๋ณด๋ค ์ฐ์ ํ ์ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์ฅ๋น๊ฐ ์ฌ๋ฌ๋ถ์ ๊ด์ฌ์ ๋๋ ค๊ณ ํ ๋ ์ผ๋ง๋ ์ค์ํ์ง๋ฅผ ๊ฐ๋ ค๋ด๋ ค๊ณ ํ ๋ ์ฃผ๋ก ๊ฑฑ์ ๋๋ค. ํน์ ์ปดํจํฐ ๊ตฌ์ฑ์ ์คํํ๋ ์ํํธ์จ์ด๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ ์ด ์ฐ์ ์์ ์์ค์ ๋งค์ฐ ์ค์ํ๋ค.
์ฌ๊ธฐ์ ์ฃผ๋ชฉํด์ผ ํ ๊ฒ์ COM1(์๋ฆฌ์ผ ํต์ ์ฑ๋ 1)์ ๋ณดํต IRQ-4๋ฅผ ์ฌ์ฉํ๋ฉฐ, COM2๋ COM1์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ๋ฐ ๋ ๋์ ์ฐ์ ์์๊ฐ ๋๋๋ก ํ๋ ์ํจ๊ณผ๋ฅผ ๊ฐ๋ IRQ-3์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ํํธ์จ์ด๋ ์ ๋ง๋ก ์๊ดํ์ง ์์ง๋ง, ๋๋ฌผ๊ฒ ์ด ์ฌ์ค์ ์์์ผ ํ๋ค.
8259 ๋ ์ง์คํฐ
8259์๋ I/O ํฌํธ ์ฃผ์์ ๊ด๋ จ๋ "๋ฑ๋ก๊ธฐ"๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ค. ์ฐ๋ฆฌ๋ 8250 ์นฉ์ ๋๋ฌํ๋ฉด ์กฐ๊ธ ๋ ์ด ์ปจ์ ์ ๋ฐฉ๋ฌธํ ๊ฒ์ด๋ค. ์ผ๋ฐ์ ์ธ PC ์ปดํจํฐ ์์คํ ์ ๊ฒฝ์ฐ, 8259์ ๊ด๋ จ๋ ์ผ๋ฐ์ ์ธ ๊ธฐ๋ณธ ํฌํธ ์ฃผ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ธํฐ๋ฝํธ ์ปจํธ๋กค๋ฌ ํฌํธ I/O ์ฃผ์
์ด๋ฆ I/O ํฌํธ ๋ฑ๋ก
๋ง์คํฐ ์ธํฐ๋ฝํธ ์ปจํธ๋กค๋ฌ $0020
์ฌ๋ ์ด๋ธ ์ธํฐ๋ฝํธ ์ปจํธ๋กค๋ฌ $00A0
์ด 1์ฐจ ํฌํธ ์ฃผ์๋ ์ํํธ์จ์ด์ 8259 ์นฉ๊ณผ ์ง์ ํต์ ํ๋ ๋ฐ ์ฌ์ฉํ ๊ฒ์ด๋ค. ์ด๋ฌํ I/O ํฌํธ ์ฃผ์๋ฅผ ํตํด ์ด ์นฉ์ ๋ณด๋ผ ์ ์๋ ๋ช ๋ น์ด๊ฐ ์ฌ๋ฌ ๊ฐ ์์ง๋ง, ์ฐ๋ฆฌ์ ๋ชฉ์ ์ ์ํด ์ฐ๋ฆฌ๋ ์ ๋ง๋ก ๊ทธ๊ฒ๋ค์ ์ฒ๋ฆฌํ ํ์๊ฐ ์๋ค. ์ด ์ค ๋๋ถ๋ถ์ ์ปดํจํฐ์ BIOS(Basic Input Output System)์ ์ํด ์ปดํจํฐ ์ฅ๋น์ ์ด๊ธฐ ์ค์ ๊ณผ ๊ตฌ์ฑ์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, BIOS๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์์ฑํ์ง ์๋ ํ, ์ ๋ง๋ก ์ด๊ฒ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์๋ค. ๋ํ, ๊ฐ ์ปดํจํฐ๋ ์ด ์์ค์์ ์ฅ๋น๋ฅผ ๋ค๋ฃฐ ๋ ๊ทธ ๋์์ด ์กฐ๊ธ์ฉ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ์ด๊ฒ์ ์ปดํจํฐ ์ ์กฐ์ ์ฒด๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ค๋ฃจ์ด์ผ ํ ์ผ๋ณด๋ค ๋ ๊ฑฑ์ ํด์ผ ํ ์ผ์ด๋ฉฐ, ์ด๊ฒ์ด ๋ฐ๋ก BIOS ์ํํธ์จ์ด๊ฐ ์์ฑ๋๋ ์ ํํ ์ด์ ๋ค.
์ด๊ฒ์ ๋๋ถ๋ถ์ PC ํธํํ ์ปดํจํฐ ์์คํ ์ "์ผ๋ฐ์ ์ธ" ํฌํธ I/O ์ฃผ์์ด๋ฉฐ, ์ ์กฐ์ ์ฒด๊ฐ ๋ฌ์ฑํ๊ณ ์ ํ๋ ๊ฒ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์๋ค๋ ์ ์ ์ ๋ ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ์์ค์์๋ ๋นํธํ์ฑ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ง๋ง, ์ง๋ ฌ ํฌํธ์ ํฌํธ I/O ์ฃผ์์ ๋๋ฌํ๋ฉด ์ด ๋ฌธ์ ๋ ํจ์ฌ ๋ ํฐ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ด๋ค.
์ฅ์น ๋ ์ง์คํฐ
์ฌ๊ธฐ์ ์ ์ ์๊ฐ์ ๋ด์ด ์๋ ๋ ์ง์คํฐ์ ์๋ฏธ๋ฅผ ์ค๋ช ํ๋ ค๊ณ ํ๋ค. ์ด ์์ค์์ ์ฅ๋น๋ฅผ ๋ค๋ฃฐ ๋ ์ฅ๋น๋ฅผ ์ค๊ณํ ์ ๊ธฐ ์์ง๋์ด๋ ์ฅ๋น์ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ ๋ ์ง์คํฐ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ด๋ฐ ์ผ์ ์ฌ๋ฌ ๋จ๊ณ์ ์ถ์ํ์์ ์ผ์ด๋ ์ ์๊ธฐ ๋๋ฌธ์, ๋๋ ๊ทธ ํผ๋์ ์ด๋ ์ ๋ ํด์ํ๊ณ ์ถ๋ค.
๋ ์ง์คํฐ๋ ๊ธฐ๊ธฐ๊ฐ ์ง์ ์กฐ์ํ ์ ์๋ RAM์ ์์ ์กฐ๊ฐ์ผ ๋ฟ์ด๋ค. 8086์ด๋ ํํฐ์๊ณผ ๊ฐ์ CPU์์, ์ด๊ฒ๋ค์ ๋ ์ซ์๋ฅผ ํจ๊ป ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ํ์ ์ธ ์ฐ์ฐ์ ์ง์ ์ ์ผ๋ก ์ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ์ต ์์ญ์ด๋ค. ์ด๊ฒ๋ค์ ๋ณดํต AX, SP ๋ฑ๊ณผ ๊ฐ์ ์ด๋ฆ์ผ๋ก ํตํ๋ค. ์ด๋ฌํ ๋ ์ง์คํฐ์ ๋ํ ์ก์ธ์ค๊ฐ ๊ธฐ๋ณธ ๊ธฐ๊ณ ์์ค์ ์ง์นจ์ผ๋ก ์ง์ ์ํธํ๋๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ CPU์๋ ๋ ์ง์คํฐ๊ฐ ๊ฑฐ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ ์ฅ์น ๋ ์ง์คํฐ์ ๋ํด ์ด์ผ๊ธฐํ ๋, ์ด๊ฒ๋ค์ CPU ๋ ์ง์คํฐ๊ฐ ์๋๋ผ ์ฅ์น ์์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ๋ผ. ์ด๊ฒ๋ค์ ์ข ์ข ํฌํธ I/O ๋ฉ๋ชจ๋ฆฌ์ ์ฐ๊ฒฐ๋๋๋ก ์ค๊ณ๋๋ฏ๋ก ํฌํธ I/O ์ฃผ์์ ์ฐ๊ฑฐ๋ ํฌํธ I/O ์ฃผ์๋ฅผ ์ฝ์ ๋ ์ฅ์น ๋ ์ง์คํฐ์ ์ง์ ์ก์ธ์คํ๋ค. ๋๋ก๋ ๋ ๋์ ์์ค์ ์ถ์ํ๊ฐ ์์ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ๋น์ ์ ๋น์ ์ด ์ด๋ค ๋ ์ง์คํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์๋์ง๋ฅผ ๋ํ๋ด๋ ํ๋์ ํฌํธ I/O ์ฃผ์์ ๋น์ ์ด ๊ทธ ๋ ์ง์คํฐ๋ก ๋ณด๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ๋ ๋ค๋ฅธ ํฌํธ I/O ์ฃผ์๋ฅผ ๊ฐ๊ฒ ๋ ๊ฒ์ด๋ค. ์ฅ์น๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์ฅ์น๊ฐ ์ผ๋ง๋ ๋ณต์กํ๊ณ ๋ฌด์์ ํ ๊ฒ์ธ๊ฐ์ ๊ธฐ์ดํ๋ค.
์ง์ ํ ์๋ฏธ์์ ๊ทธ๊ฒ๋ค์ ๋ฑ๋ก๋ถ์ง๋ง, ์ข ์ข ์ด๋ฌํ ์ฅ์น๋ค์ ๊ทธ ์์ฒด๋ก ์์ ํ ์ปดํจํฐ๋ผ๊ณ ์ฌ๊ฒจ์ง ์ ์๊ณ , ๋น์ ์ด ํ๊ณ ์๋ ๊ฒ์ ๊ทธ๊ฒ์ด ๋ฉ์ธ CPU์ ์ด๋ป๊ฒ ํต์ ํ ๊ฒ์ธ๊ฐ๋ฅผ ์ค์ ํ๋ ๊ฒ ๋ฟ์ด๋ผ๋ ๊ฒ์ ๋ช ์ฌํ๋ผ. ์ฌ๊ธฐ์ ์ฝ๋งค์ด์ง ๋ง๊ณ CPU ๋ ์ง์คํฐ์ ํท๊ฐ๋ ค.
ISR ์ ๋ฆฌ
์ธํฐ๋ฝํธ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ ๋ ์ ๊ธฐ์ ์ผ๋ก ์ํธ ์์ฉํด์ผ ํ๋ ์์ญ ์ค ํ๋๋ 8259 PIC ์ปจํธ๋กค๋ฌ์๊ฒ ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด์ด ์๋ฃ๋์์์ ์๋ฆฌ๋ ๊ฒ์ด๋ค. ์ํํธ์จ์ด๊ฐ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ฅผ ์ํํ ๋ CPU๊ฐ 8259 ์นฉ์ ์ ํธ๋ฅผ ๋ณด๋ผ ์ ์๋ ์๋ํ๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก, ๋ค์ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๊ฐ ์ปดํจํฐ ์์คํ ์ ์ก์ธ์คํ ์ ์๋๋ก PIC์ ํน์ "๋ฑ๋ก"์ ์ค์ ํด์ผ ํ๋ค. ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ์ํํธ์จ์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ด๊ฒ์ "End of Interrupt"๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ช ๋ น์ด๋ฅผ ์ ์กํ๊ฑฐ๋, ์ข ์ข ๊ฐ๋จํ "EOI"๋ผ๊ณ ์ฝ์ด๋ก ์ฐ๊ธฐ๋ ํ๋ค. ์ด ๋ ์ง์คํฐ์ ๋ณด๋ผ ์ ์๋ ๋ค๋ฅธ ๋ช ๋ น๋ ์์ง๋ง, ์ฐ๋ฆฌ์ ๋ชฉ์ ์ ์ํด์๋ ์ด๊ฒ๋ง์ด ์ฐ๋ฆฌ ์์ ๊ณผ ๊ด๊ณํ ํ์๊ฐ ์๋ค.
์ด์ ์ด๋ ๊ฒ ํ๋ฉด "๋ง์คํฐ" PIC๊ฐ ์ง์์ง์ง๋ง, "์ฌ๋ ์ด๋ธ" PIC์์ ํธ๋ฆฌ๊ฑฐ๋๋ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๊ทธ ์นฉ์๋ ์ธํฐ๋ฝํธ ์๋น์ค๊ฐ ์๋ฃ๋์์์ ์๋ฆด ํ์๊ฐ ์๋ค. ์ด๋ "EOI"๋ฅผ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์นฉ์ ๋ณด๋ด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
PIC ์ฅ์น ๋ง์คํน
8259 PIC์ ์ฃผ์ ๋ฅผ ๋ ๋๊ธฐ ์ ์, ๋๋ ๊ธฐ๊ธฐ ๋ง์คํน์ ๊ฐ๋ ์ ๋ค๋ฃจ๊ณ ์ถ๋ค. PIC์ ๋ถ์ฐฉ๋ ๊ฐ ์ฅ์น๋ PIC ์นฉ์ ํตํด CPU๋ฅผ ์ด๋ป๊ฒ ์ค๋จ์ํฌ ์ ์๋๋๋ ๊ด์ ์์ "์ผ์ง" ๋๋ "๊บผ์ง"์ด ๊ฐ๋ฅํ๋ค. ๋ณดํต ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ก์ ์ฐ๋ฆฌ๊ฐ ์ ๋ง ์ ๊ฒฝ์ฐ๋ ๊ฒ์ ์ฅ์น๊ฐ ์ผ์ ธ ์๋์ง ์ฌ๋ถ๋ฟ์ด์ง๋ง, ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ถ๋ฆฌํ๋ ค๊ณ ํ๋ค๋ฉด ๋ค๋ฅธ ์ฅ์น๋ฅผ ๋ ์๋ ์๋ค. ์ฅ์น๋ฅผ "๋๋ฉด" ์ ์์ ๋ค์ ์ผค ๋๊น์ง ์ธํฐ๋ฝํธ๊ฐ ์๋ํ์ง ์๋๋ค๋ ์ ์ ๋ช ์ฌํ์ญ์์ค. ์ฌ๊ธฐ์๋ ์ปดํจํฐ ์กฐ์์ ํ์ํ ์ ์๋ ํค๋ณด๋๋ ๊ธฐํ ์ค์ํ ์ฅ์น๊ฐ ํฌํจ๋ ์ ์๋ค.
์ด ๋ง์คํฌ๋ฅผ ์ค์ ํ๋ ๋ ์ง์คํฐ๋ฅผ "์๋ ์ ์ด ์๋ 1" ๋๋ "OCW1"์ด๋ผ๊ณ ํ๋ค. PIC ๊ธฐ๋ณธ ์ฃผ์ + 1 ๋๋ ํฌํธ I/O ์ฃผ์ 21์ "๋ง์คํฐ" PIC์ ์์นํ๋ค. ์ฌ๊ธฐ์ ๋นํธ ์กฐ์์ ์์ธํ ๋ค๋ฃจ์ง ์์ ๊ฒ๋๋ค. ๋ค์ ํ๋ ๊ฐ ํ๋์จ์ด ์ธํฐ๋ฝํธ ์ฅ์น๋ฅผ ํ์ฑํ ๋๋ ๋นํ์ฑํํ๊ธฐ ์ํด ๋ณ๊ฒฝํ ๊ด๋ จ ๋นํธ๋ฅผ ๋ณด์ฌ์ค๋ค.
Master OCW1 ($21)
Bit
IRQ Enabled
Device Function
7
IRQ7
Parallel Port (LPT1)
6
IRQ6
Floppy Disk Controller
5
IRQ5
Reserved/Sound Card
4
IRQ4
Serial Port (COM1)
3
IRQ3
Serial Port (COM2)
2
IRQ2
Slave PIC
1
IRQ1
Keyboard
0
IRQ0
System Timer
Slave OCW1 ($A1)
Bit
IRQ Enabled
Device Function
7
IRQ15
Reserved
6
IRQ14
Hard Disk Drive
5
IRQ13
Math Co-Processor
4
IRQ12
PS/2 Mouse
3
IRQ11
PCI Devices
2
IRQ10
PCI Devices
1
IRQ9
Redirected IRQ2 Devices
0
IRQ8
Real Time Clock
IRQ3(์๋ฆฌ์ผ ํฌํธ COM2์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก)์ ์ผ๋ ค๋ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ํ๋ฉด ๋ค์ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค.
์์ ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ํํธ์จ์ด์์ ๋ค์ ๋ช ๋ น์ ์ ์กํ์ญ์์ค.
์ ์ฝ๋๋ ๋ชจ๋ ์ธํฐ๋ฝํธ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ ๊ฒ๋๋ค. ์ด๊ฒ์ ์ข์ ์ผ์ ์๋์ง ๋ชจ๋ฅด์ง๋ง, ๋น์ ์ด ๋ฌด์์ ๊ฐ์ง๊ณ ์์ ํ๋๋์ ๋ฐ๋ผ ๋น์ ์ด ์คํํ ์ ์๋ ๋ฌด์ธ๊ฐ๊ฐ ๋์ด์ผ ํ ๊ฒ์ด๋ค. ๊ฒ์ผ๋ฅธ ํ๋ก๊ทธ๋๋จธ์ ์ง์กฐ์ผ ๋ฟ๋ง ์๋๋ผ ์ปดํจํฐ๊ฐ ์๋ํ ๊ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ ํ๋ํ ์๋ ์๋ ๋ถ์์ฉ์ ์ผ์ผํฌ ์ ์์ผ๋ฏ๋ก ์ด์ ๊ฐ์ ๋จ์นผ์ ๋ค์ด์ง ์๋๋ก ํ๋ผ. ๋ง์ฝ ๋น์ ์ด ์ด ์์ค์์ ์ปดํจํฐ๋ก ์์ ํ๊ณ ์๋ค๋ฉด, ๋ชฉํ๋ ๋น์ ์ด ์ฌ์ฉํ๊ณ ์๋ ๋ค๋ฅธ ์ด๋ค ์ํํธ์จ์ด์๋ ์์์ ์ ํ์ง ์๋๋ก ๊ฐ๋ฅํ ํ ์ ๊ฒ ๋ฐ๊พธ๋ ๊ฒ์ด๋ค.
์ง๋ ฌ COM ํฌํธ ๋ฉ๋ชจ๋ฆฌ ๋ฐ I/O ํ ๋น
์ด์ 8259 ์นฉ์ ๋ฐ๊ณ ๋๊ฐ์ผ๋ UART ์์ฒด๋ก ๋์ด๊ฐ์. PIC์ ํฌํธ I/O ์ฃผ์๋ ์๋นํ ํ์ค์ ์ด์ง๋ง, ์ปดํจํฐ ์ ์กฐ์ ์ฒด๋ค์ ์ง๋ ฌ ํฌํธ ์์ฒด์ ๋ฌผ๊ฑด๋ค์ ์ฎ๊ธฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. ๋ํ ์ปดํจํฐ์ ํ์ฅ ์ฌ๋กฏ์ ์๋ ISA ๋๋ PCI ์นด๋์ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ ์นด๋์ ์ผ๋ถ์ธ ์ง๋ ฌ ํฌํธ ๋๋ฐ์ด์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋๋ฐ์ด์ค๋ ์ผ๋ฐ์ ์ผ๋ก ์ปดํจํฐ์ ๋ฉ์ธ ๋ง๋๋ณด๋์ ๋ด์ฅ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ์ค์ ์ ๊ฐ์ง ์ ์๋ค. ์ด๋ฌํ ์ค์ ์ ๊ฒ์ํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋ฉฐ, ์ํํธ์จ์ด๋ฅผ ์์ฑํ๋ ค๊ณ ํ ๋ ์ด๋ฌํ ๊ฐ์ด ๋ฌด์์ธ์ง ์๋ ๊ฒ์ด ์ค์ํ๋ค. ์ข ์ข ์ด๋ฌํ ๊ฐ์ ์ปดํจํฐ์ BIOS ์ค์ ํ๋ฉด์์ ์ฐพ์ ์ ์๊ฑฐ๋, ์ปดํจํฐ๊ฐ ์ผ์ง ๋ ๋ฉ์์ง๋ฅผ ์ผ์ ์ค์งํ ์ ์๋ ๊ฒฝ์ฐ ์ปดํจํฐ์ ๋ถํ ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก ์ฐพ์ ์ ์๋ค.
"์ผ๋ฐ์ ์ธ" PC ์์คํ ์ ๊ฒฝ์ฐ, ๊ฐ ์ง๋ ฌ COM ํฌํธ์ ํฌํธ I/O ์ฃผ์์ IRQ๋ ๋ค์๊ณผ ๊ฐ๋ค.
Common UART IRQ and I/O Port Addresses
COM Port
IRQ
Base Port I/O address
COM1
IRQ4
$3F8
COM2
IRQ3
$2F8
COM3
IRQ4
$3E8
COM4
IRQ3
$2E8
์ฌ๊ธฐ์ ๋ญ๊ฐ ํฅ๋ฏธ๋ก์ด ๊ฒ์, COM3๊ณผ COM1์ด ๊ฐ์ ์ธํฐ๋ฝํธ๋ฅผ ๊ณต์ ํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๊ฒ์ ์ค์๊ฐ ์๋๋ผ ๋น์ ์ด ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด์ ์ธ ๋ ๋ช ์ฌํด์ผ ํ ์ฌํญ์ด๋ค. 8259 PIC ์นฉ์ ํตํด ์ฌ์ฉ ๊ฐ๋ฅํ 15๊ฐ์ ์ธํฐ๋ฝํธ๋ ์ฌ์ ํ ํ๋ ์ปดํจํฐ์์ ๋ฐ๊ฒฌ๋๋ ๋ชจ๋ ์ฅ์น๊ฐ ๊ทธ๋ค๋ง์ ๊ฐ๋ณ์ ์ธ ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ๊ฐ์ง ์ ์๋๋ก ํ๊ธฐ์๋ ์ถฉ๋ถํ์ง ์์์ผ๋ฏ๋ก, ์ด ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ์ฅ์น์ ์ธํฐ๋ฝํธ๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ํ์๊ฐ ์์ ๊ฒ์ด๋ค. ์๋ฆฌ์ผ ๋ฐ์ดํฐ ํฌํธ์ ์ก์ธ์คํ๊ธฐ ์ํด ์ค์ ์ํํธ์จ์ด์ ๋ค์ด๊ฐ๋ฉด ๋์ค์ ๋ ์์ธํ ๋ค๋ฃจ๊ฒ ์ง๋ง, ์ง๊ธ์ ํ ์ฅ์น์๋ง ์ํํธ์จ์ด๋ฅผ ์๊ฒฉํ๊ฒ ์ฐ์ง ์๋๋ก ํ๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค.
๊ธฐ๋ณธ ํฌํธ I/O ์ฃผ์๋ UART ๋ ์ง์คํฐ์ ์ง์ ์ก์ธ์คํ๋ ๋ค์ ์ฃผ์ ๋ฅผ ์ํด ์ค์ํ๋ค.
UART ๋ ์ง์คํฐ
UART ์นฉ์ ์ด 12๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ ์ง์คํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ 8๊ฐ์ ๋ค๋ฅธ ํฌํธ I/O ์์น์ ๋งคํ๋์ด ์๋ค. ๋ค, 8๊ฐ์์ 12๊ฐ์ ๋ ์ง์คํฐ๊ฐ ์๋๋ฐ ์ด๋ ๋ถ๋ช ํ ๋์ผํ ํฌํธ I/O ์์น๋ฅผ ์ฌ์ฉํ๋ ๋ ์ง์คํฐ๊ฐ ๋ ๊ฐ ์ด์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ UART ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ์ํฅ์ ๋ฏธ์น๋ค. ์ค์ ๋ก๋ ๋ ๊ฐ์ ๋ ์ง์คํฐ๊ฐ ์ค์ ๋ก ๋์ผํ์ง๋ง ๋ค๋ฅธ ๋งฅ๋ฝ์์, ์ง๋ ฌ ๋ฐ์ดํฐ ํฌํธ์์ ๋ณด๋ผ ๋ฌธ์๋ฅผ ์ ์กํ๋ ํฌํธ I/O ์ฃผ์๊ฐ ์ปดํจํฐ๋ก ์ ์ก๋๋ ๋ฌธ์์์ ์ฝ์ ์ ์๋ ์ฃผ์์ ๋์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ค๋ฅธ I/O ํฌํธ ์ฃผ์๋ ๋ฐ์ดํฐ๋ฅผ ์ธ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋์๋ ๋ค๋ฅธ ์ปจํ ์คํธ๋ฅผ ๊ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ซ์๋ค์ ๋น์ ์ด ๊ทธ๊ฒ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋์๋ ๊ทธ๊ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ด ํ์ ๋ค๋ฅผ ๊ฒ์ด๋ค. ๊ทธ๊ฒ์ ๋ํด ์กฐ๊ธ ๋ ์๊ธฐํด๋ณด์.
์ด ์นฉ์ด ์๋ ์ค๊ณ๋์์ ๋ ์ ๊ธฐ๋ ๋ฌธ์ ์ค ํ๋๋ ์ค๊ณ์๊ฐ 16๋นํธ๋ก ์ง๋ ฌ ๋ฐ์ดํฐ์ ๋ณด๋ ๋ ์ดํธ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด๋ผ ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ด์์ต๋๋ค. ์ด๊ฒ์ ์ค์ ๋ก ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ "๋ฑ๋ก์"๋ฅผ ์ฐจ์งํ๋ฉฐ, "๋๋น์ ๋์น ์ก์ธ์ค ๋นํธ" ๋๋ "DLAB"๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฒ์ผ๋ก ํ ๊ธ๋๋ค. DLAB๋ฅผ "1"๋ก ์ค์ ํ๋ฉด ๋ณด๋ ๋ ์ดํธ ๋ ์ง์คํฐ๋ฅผ ์ค์ ํ ์ ์์ผ๋ฉฐ, "0"์ผ ๋๋ ๋ ์ง์คํฐ์ ์ปจํ ์คํธ๊ฐ ๋ค๋ฅด๋ค.
์ด ๋ชจ๋ ๊ฒ์ด ํผ๋์ค๋ฝ๊ฒ ๋ค๋ฆฌ๋๊ฐ? ๊ทธ๋ด ์๋ ์์ง๋ง, ํ ๋ฒ์ ํ๋์ ๊ฐ๋จํ ์กฐ๊ฐ์ผ๋ก ํ์. ๋ค์์ ์ผ๋ฐ์ ์ธ UART ์นฉ์์ ์ฐพ์ ์ ์๋ ๊ฐ ๋ ์ง์คํฐ์ ํ๋ค.
UART Registers
Base Address
DLAB
I/O Access
Abbrv.
Register Name
+0
0
Write
THR
Transmitter Holding Buffer
+0
0
Read
RBR
Receiver Buffer
+0
1
Read/Write
DLL
Divisor Latch Low Byte
+1
0
Read/Write
IER
Interrupt Enable Register
+1
1
Read/Write
DLH
Divisor Latch High Byte
+2
x
Read
IIR
Interrupt Identification Register
+2
x
Write
FCR
FIFO Control Register
+3
x
Read/Write
LCR
Line Control Register
+4
x
Read/Write
MCR
Modem Control Register
+5
x
Read
LSR
Line Status Register
+6
x
Read
MSR
Modem Status Register
+7
x
Read/Write
SR
Scratch Register
DLAB ์ด์ "x"๋ DLAB์ ์ํ๊ฐ ํด๋น ์คํ์ ๋ฒ์์์ ์ก์ธ์คํ ๋ ์ง์คํฐ์ ์ํฅ์ ๋ฏธ์น์ง ์์์ ์๋ฏธํ๋ค. ๋ํ ์ผ๋ถ ๋ ์ง์คํฐ๋ ์ฝ๊ธฐ ์ ์ฉ์ด๋ผ๋ ์ ์ ์ ์ํ์ญ์์ค. ๋ง์ฝ ๋น์ ์ด ๊ทธ๋ค์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ค๊ณ ํ๋ค๋ฉด, ๋น์ ์ ๋ชจ๋์ ์ฝ๊ฐ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฑฐ๋(์ต์ ์ ๊ฒฝ์ฐ) ๊ทธ ๋ฐ์ดํฐ๋ ๊ฐ๋จํ ๋ฌด์๋ ๊ฒ์ด๋ค(์ผ๋ฐ์ ์ผ๋ก ๊ฒฐ๊ณผ). ์์์ ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด, ์ผ๋ถ ๋ ์ง์คํฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ ๋ ํ๋์ ๋ ์ง์คํฐ๊ฐ ์ฌ์ฉ๋ ํฌํธ I/O ์ฃผ์๋ฅผ ๊ณต์ ํ๊ณ ์์ผ๋ฉฐ, ๋์ผํ ์ฃผ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐ ๋ค๋ฅธ ๋ ์ง์คํฐ๊ฐ ์ฌ์ฉ๋ ๊ฒ์ด๋ค.
๊ฐ ์ง๋ ฌ ํต์ ํฌํธ์๋ ์์ฒด์ ์ธ ๋ฑ๋ก๊ธฐ ์งํฉ์ด ์๋ค. ์๋ฅผ ๋ค์ด COM1์ ๋ํ LSR(Line Status Register)์ ์ก์ธ์คํ๊ณ ๊ธฐ๋ณธ I/O Port ์ฃผ์๋ฅผ 3F8๋ก ๊ฐ์ ํ๋ฉด ์ด ๋ ์ง์คํฐ์ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํ I/O Port ์ฃผ์๋ 3F8 + 05 ๋๋ 3FD๋ก ํ์ธ๋ ์ ์๋ค. ์ผ๋ถ ์์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ด๋ค ๊ฐ ๋ ์ง์คํฐ์๋ ๊ฝค ๋ง์ ์ ๋ณด๊ฐ ๋ค์ด ์์ผ๋ฉฐ, ๋ค์์ ๊ฐ ๋ ์ง์คํฐ์ ์๋ฏธ์ ๊ทธ ์์ ๋ค์ด ์๋ ์ ๋ณด์ ๋ํ ์ค๋ช ์ด๋ค.
์ก์ ๊ธฐ ํ๋ฉ ๋ฒํผ/์์ ๊ธฐ ๋ฒํผ
์คํ์ : +0 . ์ก์ ๋ฒํผ์ ์์ ๋ฒํผ๋ ๊ด๋ จ์ด ์์ผ๋ฉฐ, ์ฌ์ง์ด ๋งค์ฐ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด๊ฒ์ ๋ํ ํ๊ธฐ ๋ชจ๋ธ๋ค์ด ์ง๋ ฌ ๋ฐ์ดํฐ๋ก ์ ์ก๋๊ธฐ ์ ์ ์นฉ ์์ ์๋ ๋ฐ์ดํฐ์ ๋ด๋ถ ๋ฒํผ๋ง์ ์ผ๋ถ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์ 8250 ์นฉ์ ํ๊ธฐ ๋ฒ์ ๋ค์ด ์๋นํ ์ํฅ์ ๋ฏธ์น๋ ์์ญ๋ค ์ค ํ๋์ด๋ค. ๊ธฐ๋ณธ 8250 ์นฉ์ ํ ๋ฒ์ ํ ๋ฐ์ดํธ๋ง ์์ ํ ์ ์๋ ๋ฐ๋ฉด, 16550 ์นฉ๊ณผ ๊ฐ์ ์นฉ์ ์ ์กํ๊ฑฐ๋ ์์ ํ๊ธฐ ์ํด ์ต๋ 16๋ฐ์ดํธ๊น์ง ๋ณด์ ํ๊ฒ ๋๋ค(๋๋ก๋ ๋ ๊ฐ์ง ๋ชจ๋...). ๋ฌธ์๋ฅผ ๋ณด๋ผ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ์ ์ ์ ์กฐ์ ์ฒด์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค. ์ด๊ฒ์ ์ปดํจํฐ๊ฐ ๋ง์ ์ผ์ ํ๋ ๋ค์ค ์์ ํ๊ฒฝ์์ ์ ์ฉํ ์ ์์ผ๋ฉฐ, ์ง๋ ฌ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฒ๋ฆฌํ๊ธฐ๊น์ง๋ ๋ช ๋ฐ๋ฆฌ์ด๊ฐ ๊ฑธ๋ฆด ์ ์๋ค.
์ด๋ฌํ ๋ ์ง์คํฐ๋ ์ค์ ๋ก ์ง๋ ฌ ๋ฐ์ดํฐ ํต์ ์ "์ฌ์ฅ"์ด๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์ํํธ์จ์ด์์ ๋ค๋ฅธ ์ปดํจํฐ๋ก ์ ์ก๋๋ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅธ ์ฅ์น์์ ๋ฐ์ดํฐ๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ฌํ ๋ ์ง์คํฐ์ ๋ํ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๋ ๋จ์ํ ๊ฐ๊ฐ์ UART์ ๋ํ ํฌํธ I/O ์ฃผ์์ ์ก์ธ์คํ๋ ๋ฌธ์ ์ผ ๋ฟ์ด๋ค.
์์ ๋ฒํผ๊ฐ ์ฌ์ฉ๋๊ฑฐ๋ FIFO๊ฐ ๊ฐ๋ ์ฐจ๋ฉด ์์ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๊ณ ์์ ๊ธฐ ๋ผ์ธ ์ํ ์ธํฐ๋ฝํธ๊ฐ IIR ๋ ์ง์คํฐ์ ๊ธฐ๋ก๋๋ค. ์ค๋ฒ๋ฐ ์ค๋ฅ ๋นํธ๋ ๋ผ์ธ ์ํ ๋ ์ง์คํฐ์์๋ ์ค์ ๋๋ค.
Divisor ๋์น
์คํ์ : +0๊ณผ +1 . Divisor Latch Bytes๋ ๋ชจ๋์ ๋ณด๋ ์๋๋ฅผ ์ ์ดํ๋ ๊ฒ์ด๋ค. ์ด ๋ ์ง์คํฐ์ ์ด๋ฆ์์ ์ถ์ธกํ ์ ์๋ฏ์ด, ์นฉ์ด ์ก์ ํ ๋ณด๋ ์ดํธ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ์ ์๋ก ์ฌ์ฉ๋๋ค.
์ค์ ๋ก๋ ๊ทธ๊ฒ๋ณด๋ค ๋ ๊ฐ๋จํ๋ค. ์ด๊ฒ์ ์ ๋ง๋ก UART์ ์ํด ๋นํธ๊ฐ ์ ์ก๋ ๋๋ง๋ค ์ฌ์ฉ๋๋ ์นด์ดํธ๋ค์ด ์๊ณ๋ค. ๋นํธ๊ฐ ์ ์ก๋ ๋๋ง๋ค ์นด์ดํธ๋ค์ด ๋ ์ง์คํฐ๊ฐ ์ด ๊ฐ์ผ๋ก ์ฌ์ค์ ๋๊ณ 0์ผ๋ก ์นด์ดํธ ๋ค์ด๋๋ค. ์ด ์๊ณ๋ ์ผ๋ฐ์ ์ผ๋ก 115.2KHz๋ก ์๋ํ๋ค. ์ฆ, ์ด๋น 11๋ง 5์ฒ ๋ฒ์ผ๋ก ์นด์ดํฐ๊ฐ ๋ด๋ ค๊ฐ ๋ค์ ๋นํธ๋ฅผ ์ธ์ ๋ณด๋ผ์ง ๊ฒฐ์ ํ๋ค๋ ๊ฒ์ด๋ค. ํ๋ ์ค๊ณ ํ๋ก์ธ์ค ์ค์ UART ์๋์ ์ํด ๋ค๋ฅธ ์ฃผํ์๋ฅผ ์ฌ์ฉํ ์ ์์ ๊ฒ์ผ๋ก ์์๋์์ง๋ง, ์ด ์นฉ์ ๋ํด ์ด๋ฏธ ์ฐ์ฌ์ง ๋ง์ ์์ ์ํํธ์จ์ด ๋๋ฌธ์ ์ด ์ฃผํ์๋ PC ํ๋ซํผ์์ ์ฌ์ฉ๋๋ ๊ฑฐ์ ๋ชจ๋ UART ์นฉ์ ๋ํด ์๋นํ ํ์ค์ ์ด๋ค. ๊ทธ๋ค์ (1.843 MHz ํด๋ญ๊ณผ ๊ฐ์) ์ผ๋ถ์์ ๋ ๋น ๋ฅธ ํด๋ญ์ ์ฌ์ฉํ ์ ์์ง๋ง, ๊ทธ ์ฃผํ์์ ์ผ๋ถ๋ถ์ 115.2 KHz ํด๋ญ์ผ๋ก ํ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ ๊ฒ์ด๋ค.
UART ํด๋ญ ์๋(๊ณ ๊ธ ์ ์ฉ ๋ฒ์): ๋ง์ UART ์นฉ์ ๊ฒฝ์ฐ, UART๋ฅผ ๊ตฌ๋ํ๋ ํด๋ญ ์ฃผํ์๋ 1.8432 MHz์ด๋ค. ์ด ์ฃผํ์๋ 16๋ฐฐ๋งํผ ์ฃผํ์๋ฅผ ๋จ์ด๋จ๋ฆฌ๋ ๋ถํ ํ๋ก๋ฅผ ํตํด ์ ๋ฌ๋๋ฉฐ, ์ด๋ ์์์ ์ธ๊ธํ 115.2KHz ์ฃผํ์๋ฅผ ์ฐ๋ฆฌ์๊ฒ ์ ๊ณตํ๋ค. ๋ง์ฝ ๋น์ ์ด ์ด ์นฉ์ ์ฌ์ฉํ์ฌ ๋ช๋ช ๋ง์ถค ์ฅ๋น๋ฅผ ํ๋ค๋ฉด, National Semiconductor ์ฌ์ ์ํธ๋ 3.072 MHz ์๊ณ์ 18.432 MHz ์๊ณ๋ฅผ ํ์ฉํ๋ค. ์ด๋ฌํ ๋์ ์ฃผํ์๋ ๋ ๋์ ๋ณด๋ ์๋๋ก ํต์ ํ ์ ์๊ฒ ํด์ฃผ์ง๋ง, ์ด๋ฌํ ์๋ก์ด ์ฃผํ์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ง๋๋ณด๋์ ์ฌ์ฉ์ ์ง์ ํ๋ก์ ์ข ์ข ์๋ก์ด ๋๋ผ์ด๋ฒ๊ฐ ํ์ํ๋ค. ํฅ๋ฏธ๋ก์ด ๊ฒ์ ์ด๋ฌํ ๋ ๋์ ํด๋ญ ์ฃผํ์๋ก 50๋ณด์์ ์ฌ์ ํ ์๋ํ ์ ์๋ค๋ ๊ฒ์ด์ง๋ง, ์๋์ IBM-PC/XT๊ฐ ์ ์กฐ๋์์ ๋ ์ด๊ฒ์ ๋ ๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋์ ์์ด ์ง๊ธ์ฒ๋ผ ํฐ ๋ฌธ์ ๋ ์๋์๋ค.
๋ค์ ์ํ ๊ณต์์ ์ฌ์ฉํ ๊ฒฝ์ฐ, Divisor Latch Bytes์ ๋ฃ์ด์ผ ํ ์ซ์๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค.
{\displaystyle {DivisorLatchValue}={115200 \over {BaudRate}}{\displaystyle {DivisorLatchValue}={115200 \over {BaudRate}}}}
์ด ํ๋ ์ง๋ ฌ ํต์ ์ ์ผ๋ฐ์ ์ธ ๋ณด๋ ์๋๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ค์ ํ๋ฅผ ์ ๊ณตํ๋ค.
Divisor Latch Byte Values (common baud rates)
Baud Rate
Divisor (in decimal)
Divisor Latch High Byte
Divisor Latch Low Byte
50
2304
$09
$00
110
1047
$04
$17
220
524
$02
$0C
300
384
$01
$80
600
192
$00
$C0
1200
96
$00
$60
2400
48
$00
$30
4800
24
$00
$18
9600
12
$00
$0C
19200
6
$00
$06
38400
3
$00
$03
57600
2
$00
$02
115200
1
$00
$01
ํ๋ฅผ ๋ณผ ๋ ํ ๊ฐ์ง ๋ช ์ฌํด์ผ ํ ๊ฒ์ ๋ณด๋ ์ดํธ 600 ์ด์, ๋ฌด์๋ณด๋ค๋ ๋๋น์ ๋์น ํ์ด ๋ฐ์ดํธ๋ฅผ 0์ผ๋ก ์ค์ ํ๋ค๋ ์ ์ด๋ค. ์ด์คํ ํ๋ก๊ทธ๋๋จธ๋ ์๋ฌด๋ ๊ทธ๋ ๊ฒ ๋ฎ์ ๋ณด๋ ์ดํธ๋ฅผ ๋ค๋ฃจ์ง ์์ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ ๋ ๋์ ๋ฐ์ดํธ ์ค์ ์ ๊ฑด๋๋ฐ๋ ค๊ณ ํ ์๋ ์์ง๋ง, ์ด๊ฒ์ ํญ์ ์ถ์ธกํ ์ ์๋ ๊ฒ์ ์๋๋ค. ์ข์ ํ๋ก๊ทธ๋๋ฐ ์ต๊ด์ ์ฌ๋ฌ๋ถ์ด ํ๊ณ ์๋ ๋ชจ๋ ๊ฒ์ด ๋ ๋์ ๋ณด๋ ์ดํธ๋ก ์คํ๋๋๋ผ๋ ์ด๊ฒ์ 0์ผ๋ก ์ค์ ํ๋๋ก ๋ ธ๋ ฅํด์ผ ํ๋ค๋ ๊ฒ์ ์์ํ๋ค.
๋ ํ๋ ์ฃผ๋ชฉํด์ผ ํ ๊ฒ์ ์์ ๋์ด๋ ํ์ค ๋ณด๋ ์ดํธ ์ด์ธ์ ๋ค๋ฅธ ์ ์ฌ์ ๋ณด๋ ์ดํธ๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ์ ํ์ ์ธ ์์ฉ์๋ ๊ถ์ฅ๋์ง ์์ง๋ง, ์คํ์๋ ์ฌ๋ฏธ์๋ ๊ฒ์ด ๋ ๊ฒ์ด๋ค. ๋ํ ํ์ค API ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํธํ๋์ด์ผ ํ๋ ํน์ ๋ณด๋ ์๋๋ฅผ ํ์ฉํ์ง ์๋ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๊ตฌํ ์ฅ๋น์ ํต์ ์ ์๋ํ ์ ์๋ค. ์ด๊ฒ์ ์ ์ด ์์ค์ ์นฉ์ ๋ํ ์ง์์ด ์ฌ์ ํ ๋งค์ฐ ์ ์ฉํ์ง๋ฅผ ์ฆ๋ช ํด์ผ ํ๋ค.
์ด๋ฌํ ๋ ์ง์คํฐ๋ก ์์ ํ ๋, Divisor Latch Access Bit๋ฅผ "1"๋ก ์ค์ ํด์ผ ํ๋ ์ ์ผํ ๋ ์ง์คํฐ๋ผ๋ ๊ฒ๋ ๊ธฐ์ตํ์ญ์์ค. ์๋ ๋ด์ฉ์ ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ์ํํธ์จ์ด๊ฐ ๋ณด๋ ์ดํธ๋ฅผ ์ฆ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด DLAB๋ฅผ "1"๋ก ์ค์ ํ ๋ค์, ๋ชจ๋์ ๋ํ I/O ์ก์ธ์ค๋ฅผ ๋ ํ๊ธฐ ๋ฐ๋ก ๋ค์ ๋จ๊ณ๋ก ๋๋๋ฆฌ๋ ๊ฒ์ด ์ ์ฉํ ๊ฒ์ด๋ค. ์ด๊ฒ์ ๋จ์ง ์ข์ ์์ ์ต๊ด์ผ ๋ฟ์ด๋ฉฐ, UART์ ์ ๊ทผํ๊ธฐ ์ํด ํ์ํ ๋๋จธ์ง ์ํํธ์จ์ด๋ฅผ ํจ์ฌ ๊นจ๋ํ๊ณ ์ฝ๊ฒ ์ ์งํ๋ค.
ํ ๋ง๋ ์ฃผ์: ๋ Divisor Latch ๋ฐ์ดํธ์ ๋ํด ๊ฐ์ "0"์ผ๋ก ์ค์ ํ์ง ๋ง์ญ์์ค. UART ์นฉ์ ์์์ํค์ง๋ ์๊ฒ ์ง๋ง, UART๊ฐ ์ง๋ ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ๋ฒ์ ์์ธกํ ์ ์์ผ๋ฉฐ, ํ ์ปดํจํฐ์์ ๋ค๋ฅธ ์ปดํจํฐ๋ก, ํน์ ์ปดํจํฐ๋ฅผ ๋ถํ ํ ๋ ํ ๋ฒ์์ ๋ค๋ฅธ ์ปดํจํฐ๋ก ๋ฐ๋ ๊ฒ์ด๋ค. ์ด๋ ์ค๋ฅ ์กฐ๊ฑด์ด๋ฉฐ, ์ด ์์ค์์ ๋ณด๋ ์๋ ์ค์ ๊ณผ ํจ๊ป ์๋ํ๋ ์ํํธ์จ์ด๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ, Divisor Latch์ ์ ์ฌ์ ์ธ "0" ๊ฐ์ ํฌ์ฐฉํด์ผ ํ๋ค.
์ฌ๊ธฐ COM1์ ๋ณด๋ ์๋๋ฅผ ์ค์ ํ๊ณ ๊ฒ์ํ๋ ๋ช ๊ฐ์ง ์ํ ์ํํธ์จ์ด๊ฐ ์๋ค.
์ธํฐ๋ฝํธ ํ์ฑํ ๋ ์ง์คํฐ
์คํ์ : +1 . ์ด ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๋ฉด UART๊ฐ ์๋ฆฌ์ผ COM ํฌํธ์ ์ฐ๊ฒฐ๋ ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ก ์ธํฐ๋ฝํธ ์ด๋ฒคํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ์๊ธฐ์ ๋ฐฉ๋ฒ์ ์ ์ดํ ์ ์๋ค. ์ด๋ฅผ ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ฉด ์์คํ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์๊ฐ ์กฐ๊ฑด์์ ์ง๋ ฌ ๋ฐ์ดํฐ ๋ผ์ธ์ ํตํด ์ ์ก๋๋ ์ ๋ณด์ ๋์ํ ์ ์๋ค. ๊ทธ ๋ถ๋ถ์ ๋ํด์๋ ๋์ค์ ๋ ๋ค๋ฃจ๊ฒ ์ง๋ง ์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ UART๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ผ ํ๋์ง ์ ํํ ์๋ ค์ค ์ ์๋ค๋ ๊ฒ๋๋ค. ์ด ๋ ์ง์คํฐ์๋ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ์๋ค.
๋ค์์ ์ด ๋ ์ง์คํฐ์ ๊ฐ ๋นํธ ๋ฐ ์ด ์นฉ์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ ์ด๋ฒคํธ๋ฅผ ๋ณด์ฌ ์ฃผ๋ ํ์ ๋๋ค.
Interrupt Enable Register (IER)
Bit
Notes
7
Reserved
6
Reserved
5
Enables Low Power Mode (16750)
4
Enables Sleep Mode (16750)
3
Enable Modem Status Interrupt
2
Enable Receiver Line Status Interrupt
1
Enable Transmitter Holding Register Empty Interrupt
0
Enable Received Data Available Interrupt
Received Data interrupt๋ UART์์ ์ฒ ์ํ๊ธฐ ์ํด ๋๊ธฐํ๊ณ ์๋ ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ์์์ ์๋ ค ์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๊ฒ์ ์๋ง๋ ๋๋จธ์ง ๋ถ๋ถ๋ณด๋ค ๋ ๋ง์ด ์ฌ์ฉํ ๊ฒ์ด๊ณ , ๋ ๋ง์ด ์ฌ์ฉํ ๊ฒ์ด๋ค.
์ก์ ๊ธฐ ํ๋ฉ ๋ ์ง์คํฐ ๋น ์ธํฐ๋ฝํธ๋ (16550๊ณผ ๊ฐ์ ๋ ์ง๋ณด๋ ์นฉ ๋ชจ๋ธ์ ๋ํ) ์ถ๋ ฅ ๋ฒํผ๊ฐ ๋ฒํผ์ ๋ฐ์ด๋ฃ์ ๋ชจ๋ ๊ฒ์ ์ ์กํ๋ ๊ฒ์ ์๋ฃํ์์ ์๋ ค ์ฃผ๋ ๊ฒ์ด๋ค. ์ด๋ ๋ฐ์ดํฐ ์ ์ก ๋ฃจํด์ ๊ฐ์ํํ์ฌ CPU ์๊ฐ์ ์ค์ด๋ ๋ฐฉ๋ฒ์ด๋ค.
์์ ๊ธฐ ๋ผ์ธ ์ํ ์ธํฐ๋ฝํธ๋ LSR ๋ ์ง์คํฐ์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋์์ ๊ฐ๋ฅ์ฑ์ด ์์์ ๋ํ๋ธ๋ค. ์ด๊ฒ์ ๋ณดํต ์ค๋ฅ ์กฐ๊ฑด์ด๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ข ์ฌ์ฉ์์๊ฒ ์ผ๋ฐ ํ ์คํธ ์ค๋ช ์ ์ ๊ณตํ๋ UART์ ํจ์จ์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์์ฑํ๋ ค๋ฉด ์ด ์ฌํญ์ ๊ณ ๋ คํด์ผ ํ๋ค. ์ด๊ฒ์ ํ์คํ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ข ๋ ์ง๋ณด๋ ์ง์์ ํ์๋ก ํ๋ ๊ฒ์ด๋ค.
๋ชจ๋ ์ํ ์ธํฐ๋ฝํธ๋ ์ปดํจํฐ์ ์ฐ๊ฒฐ๋ ์ธ๋ถ ๋ชจ๋์ด ๋ณ๊ฒฝ๋ ๋ ์ด๋ฅผ ์๋ ค ์ฃผ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์๋ ์ ํ "๋ฒจ" ์ธ๋ฆผ(์ํํธ์จ์ด์์ ์ด ๊ฒ์ ์๋ฎฌ๋ ์ด์ ํ ์ ์์), ๋ค๋ฅธ ๋ชจ๋์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐํ ๊ฒ(ํต์ ์ฌ ๊ฐ์ง๊ฐ ์ผ์ ธ ์์) ๋๋ ๋๊ตฐ๊ฐ๊ฐ ์ ํ๋ฅผ "์ถฉ์ "ํ ๊ฒ(ํต์ ์ฌ ๊ฐ์ง๊ฐ ๊บผ์ง)๊ณผ ๊ฐ์ ๊ฒ์ด ํฌํจ๋ ์ ์๋ค. ๋ํ ์ธ๋ถ ๋ชจ๋์ด๋ ๋ฐ์ดํฐ ์ฅ๋น๊ฐ ๊ณ์ํด์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ ์๋ค(๋ณด๋ผ ๋ ์ญ์ ). ๋ณธ์ง์ ์ผ๋ก, ์ด๊ฒ์ ์๊ฒฉํ๊ฒ ์ก์์ ์ ์ ์ ์ธํ RS-232 ํ์ค์ ๋ค๋ฅธ ์์ด์ด๋ฅผ ๋ค๋ฃฌ๋ค.
๋ค๋ฅธ ๋ ๊ฐ์ง ๋ชจ๋๋ ์๊ฒฉํ 16750 ์นฉ์ ์ํ ๊ฒ์ด๋ฉฐ, ์ด ์นฉ์ "์ ์ ๋ ฅ" ์ํ๋ก ์ ํํ์ฌ ๋ ธํธ๋ถ ์ปดํจํฐ๋ ๋ฐฐํฐ๋ฆฌ์ฒ๋ผ ๋งค์ฐ ์ ํ๋ ์ ๋ ฅ์ ๊ฐ์ง ์๋ฒ ๋๋ ์ปจํธ๋กค๋ฌ์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ ์ ์๋๋ก ๋๋๋ค. ์ด์ ์ ์นฉ์์๋ ์ด๋ฌํ ๋นํธ๋ฅผ "์์ฝ๋" ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ "0"๋ง ๋ฃ์ด์ผ ํ๋ค.
์ธํฐ๋ฝํธ ์๋ณ ๋ ์ง์คํฐ
์คํ์ : +2 . ์ด ๋ ์ง์คํฐ๋ ์ฌ์ฉ ์ค์ธ UART ์นฉ์ ๊ณ ์ ํ ํน์ฑ์ด ๋ฌด์์ธ์ง ์๋ณํ๋ ๋ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค. ์ด ์นฉ์๋ ๋ ๊ฐ์ง ์ฉ๋๊ฐ ์๋ค.
UART๊ฐ ์ค๋จ์ ์ ๋ฐํ ์ด์ ํ์ธ. UART ์นฉ ์์ฒด์ ์๋ณ. ์ด ์ค์์ ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด์ด ํธ์ถ๋ ์ด์ ๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์๋ง๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ด๋ค.
๋ค์ ํ์์๋ ์ด ๋ ์ง์คํฐ์ ์ผ๋ถ ์ธ๋ถ์ฌํญ๊ณผ ์ฌ๊ธฐ์ ์๋ ๊ฐ ๋นํธ๊ฐ ๋ฌด์์ ๋ํ๋ด๋์ง ์ค๋ช ํ๋ค.
Interrupt Identification Register (IIR)
Bit
Notes
7 and 6
Bit 7
Bit 6
0
0
No FIFO on chip
0
1
Reserved condition
1
0
FIFO enabled, but not functioning
1
1
FIFO enabled
5
64 Byte FIFO Enabled (16750 only)
4
Reserved
3, 2 and 1
Bit 3
Bit 2
Bit 1
Reset Method
0
0
0
Modem Status Interrupt
Reading Modem Status Register(MSR)
0
0
1
Transmitter Holding Register Empty Interrupt
Reading Interrupt Identification Register(IIR) or Writing to Transmit Holding Buffer(THR)
0
1
0
Received Data Available Interrupt
Reading Receive Buffer Register(RBR)
0
1
1
Receiver Line Status Interrupt
Reading Line Status Register(LSR)
1
0
0
Reserved
N/A
1
0
1
Reserved
N/A
1
1
0
Time-out Interrupt Pending (16550 & later)
Reading Receive Buffer Register(RBR)
1
1
1
Reserved
N/A
0
Interrupt Pending Flag
250 ์นฉ์ ๋ํ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ(๊ทธ๋ฆฌ๊ณ ๋์ค์), ์ธํฐ๋ฝํธ์ ํธ๋ฆฌ๊ฑฐ๊ฐ ์ ํํ ๋ฌด์์ธ์ง ํ๋จํ๊ธฐ ์ํด ์ดํด๋ด์ผ ํ ๋ ์ง์คํฐ ์ ๋๋ค.
์์์ ์ค๋ช ํ ๋ฐ์ ๊ฐ์ด ๋ณต์์ ์ง๋ ฌ ํต์ ๊ธฐ๊ธฐ๋ ๋์ผํ ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ๊ณต์ ํ ์ ์๋ค. ์ด ๋ ์ง์คํฐ์ "๋นํธ 0"์ ์ฌ์ฉํ๋ฉด ์ด๊ฒ์ด ์ค์ ๋ก ๋ฐฉํด๋ฅผ ์ผ์ผํจ ์ฅ์น๋ผ๋ ๊ฒ์ ์ ์ ์๋ค(๋๋ ํ์ธ). ๋ชจ๋ ์ง๋ ฌ ์ฅ์น(๋ณ๋์ ํฌํธ I/O ์ฃผ์ ๊ณต๊ฐ์ ์์)๋ฅผ ํ์ธํ๊ณ ์ด ๋ ์ง์คํฐ์ ๋ด์ฉ์ ๊ฐ์ ธ์ค์ญ์์ค. ๋ ๊ฐ ์ด์์ ์ฅ์น๊ฐ ๋์์ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์ํฌ ์ ์์ผ๋ฏ๋ก, ์๋ฆฌ์ผ ์ฅ์น์ ๋ํ ์ด ์ค์บ์ ์ํํ ๋๋ ๋ชจ๋ ์ฅ์น๋ฅผ ๊ฒ์ฌํ์ญ์์ค. ์ค์ ๋ก ์ฒซ ๋ฒ์งธ ์ฅ์น ์ค ํ๋๋ผ๋ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ ์ ์ ๋ช ์ฌํ์ญ์์ค. ์ด๋ค ์ปดํจํฐ ์์คํ ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋์ง ์๋๋ก ํ ์๋ ์์ง๋ง, ์ด์จ๋ ์ด๊ฒ์ ์ข์ ํ๋ก๊ทธ๋๋ฐ ์ฐ์ต์ด๋ค. ๋ํ UART๋ฅผ ๋ ์ผ์ฐ ์ฒ๋ฆฌํ ๋ฐฉ๋ฒ ๋๋ฌธ์ ์ฃผ์ด์ง ์ธํฐ๋ฝํธ์ ๋ํด ๋ชจ๋ UART๋ฅผ ์ด๋ฏธ ์ฒ๋ฆฌํ์ ์๋ ์๋ค. ์ด ๋นํธ๊ฐ "0"์ผ ๋, UART๊ฐ ์ธํฐ๋ฝํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ณ ์์์ ํ์ธํ๋ค. "1"์ธ ๊ฒฝ์ฐ, ์ด๋ ์ธํฐ๋ฝํธ๊ฐ ์ด๋ฏธ ์ฒ๋ฆฌ๋์๊ฑฐ๋ ์ด ํน์ UART๊ฐ ํธ๋ฆฌ๊ฑฐ ์ฅ์น๊ฐ ์๋๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋๋ ์ด๊ฒ์ด ์ปดํจํฐ์ ์ฌ์ฉ๋๋ ์ ํ์ ์ธ ๋นํธ ํ๋๊ทธ์๊ฒ๋ ์ฝ๊ฐ ๋ค์ฒ์ ธ ๋ณด์ธ๋ค๋ ๊ฒ์ ์์ง๋ง, ์ด๊ฒ์ ๋์งํธ ๋ก์ง์ด๋ผ๊ณ ํ๋ฉฐ, ์ ๊ธฐ ํ๋ก ์ค๊ณ์์ ์๋นํ ํํ๋ค. ์ด ๋ ผ๋ฆฌ ํจํด์ด ์ํํธ์จ์ด ์์ญ์ผ๋ก ๋ค์ด๊ฐ๋ ๊ฒ์ ์ข ๋ ์ด๋ก์ ์ด๋ค.
๋นํธ 1, 2 ๋ฐ 3์ UART ๋ด์์ ์ด๋ค ์ข ๋ฅ์ ์ธํฐ๋ฝํธ ์ด๋ฒคํธ๊ฐ ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ํธ์ถํ๋ ๋ฐ ์ฌ์ฉ๋์๋์ง ์ ํํ๊ฒ ์๋ณํ๋ ๋ฐ ๋์์ด ๋๋ค. ์ด๊ฒ๋ค์ IER ๋ ์ง์คํฐ๋ก ์ด์ ์ ํ์ฑํ๋์๋ ๊ฒ๊ณผ ๊ฐ์ ์ธํฐ๋ฝํธ๋ค์ด๋ค. ๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ, ๋น์ ์ด ๋ ์ง์คํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ ๋๋ง๋ค ๊ทธ๊ฒ์ ๋ ํนํ ๊ฒ์ด๋ค. UART์ ๋ํด ์ฌ๋ฌ ๊ฐ์ง ์ผ์ด ๋์์ ๋ฐ์ํ์ฌ ๋ณต์์ "ํธ๋ฆฌ๊ฑฐ"๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ๋ณต์์ ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ํตํด ํธ์ถ๋๋ค. ์ด์ ์ ์นฉ ์ธํธ๋ ๋นํธ 3์ ์ฌ์ฉํ์ง ์์ง๋ง, ์ด๊ฒ์ UART ์์คํ ์์ ์์ฝ๋ ๋นํธ๋ก์ ํญ์ ๋ ผ๋ฆฌ ์ํ "0"์ผ๋ก ์ค์ ๋๋ฏ๋ก, ์ด๋ค ์ธํฐ๋ฝํธ๊ฐ ์ฌ์ฉ๋์๋์ง ํด๋ ํ๋ ค๊ณ ํ ๋ ํ๋ก๊ทธ๋๋ฐ ๋ ผ๋ฆฌ๋ ๋ค๋ฅผ ํ์๊ฐ ์๋ค.
FIFO ์๊ฐ ์ด๊ณผ ์ธํฐ๋ฝํธ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด, ์ด๊ฒ์ ํจํท์ ๋์ด๋ ๋ค์ด์ค๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ด ์ค์ง๋์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ์ธํฐ๋ฝํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ค๋ฉด ๋ค์ ์กฐ๊ฑด์ด ์กด์ฌํด์ผ ํ๋ค. ์ผ๋ถ ๋ฐ์ดํฐ๋ ๋ค์ด์ค๋ FIFO์ ์์ด์ผ ํ๋ฉฐ ์ปดํจํฐ์ ์ํด ์ฝํ์ง์ง ์์๋ค. ์ง๋ ฌ ๋ฐ์ดํฐ ๋งํฌ๋ฅผ ํตํด UART๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ ์ ์ก์ ์๋ก์ด ๋ฌธ์๋ฅผ ์์ ํ์ง ์๊ณ ์ข ๋ฃ๋์ด์ผ ํ๋ค. CPU๊ฐ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ FIFO์์ ์ด๋ค ๋ฐ์ดํฐ๋ ๊ฒ์ํ์ง ์์์ผ ํ๋ค. ์๊ฐ ์ ํ์ ์ผ๋ฐ์ ์ผ๋ก ์ต์ 4์ ์ด์์ ๋ฌธ์๋ฅผ ์ ์กํ๊ฑฐ๋ ์์ ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ ์ดํ์ ๋ฐ์ํ๋ค. 1200baud, 8๊ฐ์ ๋ฐ์ดํฐ ๋นํธ, 2๊ฐ์ ์ ์ง ๋นํธ, ํ์ ํจ๋ฆฌํฐ๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ์ ๋ํด ์ด์ผ๊ธฐํ๋ค๋ฉด, ์ฝ 40๋ฐ๋ฆฌ์ด๊ฐ ์์๋ ๊ฒ์ด๋ฉฐ, ์ด๋ ์ปดํจํฐ๊ฐ 4GHz Pentium CPU๋ก ์ํํ ์ ์๋ ์์ ์ผ๋ก ๋ณผ ๋ ๊ฑฐ์ ์์ํ ๊ฒ๋๋ค.
์์ ์ด๊ฑฐ๋ "๋ฆฌ์ ๋ฐฉ๋ฒ"์ UART๊ฐ ์ฃผ์ด์ง ์ธํฐ๋ฝํธ๊ฐ ์ฒ๋ฆฌ๋์์์ ํต์งํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค. ์ฌ์ค์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ธ๊ธ๋ ๋ ์ง์คํฐ์ ์ก์ธ์คํ๋ฉด UART์ ์ธํฐ๋ฝํธ ์ํ๊ฐ ์ญ์ ๋๋ค. ๋์ผํ UART์ ๋ํด ์ฌ๋ฌ ์ธํฐ๋ฝํธ๊ฐ ํธ๋ฆฌ๊ฑฐ๋ ๊ฒฝ์ฐ CPU์ ์ธํฐ๋ฝํธ ์ ํธ(์๋ฃ ์ ์ ํ๋์จ์ด ์ธํฐ๋ฝํธ ํธ๋ฆฌ๊ฑฐ)๊ฐ ์ญ์ ๋์ง ์๊ฑฐ๋ ์ด ๋ ์ง์คํฐ(IIR)๋ก ๋์๊ฐ์ ์ธํฐ๋ฝํธ ๋ณด๋ฅ ํ๋๊ทธ์ ์ฟผ๋ฆฌํ์ฌ ์ฒ๋ฆฌํ ์ธํฐ๋ฝํธ๊ฐ ๋ ์๋์ง ํ์ธํ์ฌ ์๋ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ญ์์ค. ์ ์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํด์ผ ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ค๋จํ์ญ์์ค.
๋นํธ 5, 6 ๋ฐ 7์ ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ ์ฌ์ฉ๋๋ FIFO ๋ฒํผ์ ํ์ฌ ์ํ๋ฅผ ๋ณด๊ณ ํ๊ณ ์๋ค. ์ต์ด์ 16550 ์นฉ ์ค๊ณ๋ FIFO์ ์ฌ๊ฐํ ๊ฒฐํจ์ด ์๋ ๋ฒ๊ทธ๊ฐ ์ฒ์ ์ถ์๋์์ ๋ ์์๊ณ , ์ด๋ก ์ธํด FIFO๋ ๊ทธ๊ฒ์ด ์๋ํ๊ณ ์๋ค๊ณ ๋ณด๊ณ ํ์ง๋ง ์ฌ์ค์ ๊ทธ๋ ์ง ์์๋ค. ์ผ๋ถ ์ํํธ์จ์ด๋ ์ด๋ฏธ FIFO์ ํจ๊ป ์๋ํ๋๋ก ์์ฑ๋์๊ธฐ ๋๋ฌธ์, ์ด ๋นํธ(๋ณธ ๋ ์ง์คํฐ์ ๋นํธ 7)๋ ์ ์ง๋์์ง๋ง, 16550 ์นฉ์ ์ด์ ๋ฒ์ ์ ์๋ ํ๋์จ์ด FIFO๋ฅผ ์ผ๋ถ ์๋ก์ด ์ํํธ์จ์ด๊ฐ ๋ฌด์ํ๋ ค๋ ๊ฒฝ์ฐ์ ๋๋นํด, ์ค์ ๋ก FIFO๊ฐ ์ ๋๋ก ์๋ํ๊ณ ์์์ ํ์ธํ๊ธฐ ์ํด ๋นํธ 6์ ์ถ๊ฐํ์๋ค. ์ด ํจํด์ ์ด ์นฉ์ ๋ฏธ๋ ๋ฒ์ ์์๋ ์ ์ง๋์๋ค. 16750 ์นฉ์๋ 64๋ฐ์ดํธ FIFO๊ฐ ์ถ๊ฐ๋์์ผ๋ฉฐ, ๋นํธ 5๋ ์ด ํ์ฅ ๋ฒํผ์ ์กด์ฌ๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด๋ฌํ FIFO ๋ฒํผ๋ ์๋์ ๋์ด๋ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๊ณ ๋ ์ ์๋ค.
FIFO ์ ์ด ๋ ์ง์คํฐ
์คํ์ : +2 . ๋ณธ๋์ 8250 UART ๊ตฌํ์๋ ํฌํจ๋์ง ์์๋ ๋น๊ต์ "์ ๊ท" ๋ ์ง์คํฐ ์ ๋๋ค. ์ด ๋ ์ง์คํฐ์ ๋ชฉ์ ์ FIFO(First In/First Out) ๋ฒํผ๊ฐ ์นฉ์์ ์๋ํ๋ ๋ฐฉ์์ ์ ์ดํ๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฑ๋ฅ์ ๋ฏธ์ธ ์กฐ์ ํ๋ ๋ฐ ๋์์ ์ฃผ๊ธฐ ์ํ ๊ฒ์ด๋ค. ์ด๊ฒ์ ์ฌ์ง์ด ๋น์ ์๊ฒ FIFO๋ฅผ "์ผ"๊ฑฐ๋ "๋๋" ๋ฅ๋ ฅ์ ์ค๋ค.
์ด๊ฒ์ "์ฐ๊ธฐ ์ ์ฉ" ๋ ์ง์คํฐ๋ผ๋ ๊ฒ์ ๋ช ์ฌํ๋ผ. ๋ด์ฉ์ ์ฝ์ผ๋ ค๊ณ ํ๋ฉด ์ ํ ๋ค๋ฅธ ๋งฅ๋ฝ์ ์ธํฐ๋ฝํธ ์๋ณ ๋ ์ง์คํฐ(IIR)๋ง ์ค๋ค.
FIFO Control Register (FCR)
Bit
Notes
7 & 6
Bit 7
Bit 6
Interrupt Trigger Level (16 byte)
Trigger Level (64 byte)
0
0
1 Byte
1 Byte
0
1
4 Bytes
16 Bytes
1
0
8 Bytes
32 Bytes
1
1
14 Bytes
56 Bytes
5
Enable 64 Byte FIFO (16750)
4
Reserved
3
DMA Mode Select
2
Clear Transmit FIFO
1
Clear Receive FIFO
0
Enable FIFOs
๋นํธ 0์ "0"์ ์ฐ๋ฉด FIFO๊ฐ ๋นํ์ฑํ๋๋ฉฐ, ๋ณธ์ง์ ์ผ๋ก UART๋ฅผ 8250 ํธํ์ฑ ๋ชจ๋๋ก ์ ํํ๋ค. ์ฌ์ค์ ์ด๊ฒ์ ๋ํ ์ด ๋ ์ง์คํฐ์ ๋๋จธ์ง ์ค์ ์ ์ธ๋ชจ ์๊ฒ ๋ง๋ ๋ค. ์ฌ๊ธฐ์ "0"์ ์์ฑํ๋ฉด FIFO๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ๊ฑฐ๋ ์์ ํ์ง ๋ชปํ๊ฒ ๋๋ฏ๋ก, ์ด ์ค์ ์ ๋ณ๊ฒฝํ ํ ์ง๋ ฌ ๋ฐ์ดํฐ ํฌํธ๋ฅผ ํตํด ์ ์ก๋๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์คํฌ๋จ๋ธ๋ ์ ์๋ค. ์๋ฆฌ์ผ ํต์ ํ๋กํ ์ฝ์ ์ฌ์ค์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ํํธ์จ์ด์ ์์ ์ ์๋ ์๋ ๋ฒํผ๋ฅผ ์ง์ฐ๋ ค๋ ๊ฒฝ์ฐ์๋ง FIFO๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ด ์ข๋ค. ์ผ๋ถ ๋ฌธ์์์๋ ์ด ๋นํธ๋ฅผ "0"์ผ๋ก ์ค์ ํ๋ฉด FIFO ๋ฒํผ๋ ์ง์์ง์ง๋ง ๋นํธ 1๊ณผ 2๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ช ์์ ์ธ ๋ฒํผ ์ญ์ ๋ฅผ ๊ถ์ฅํ๋ค.
๋นํธ 1๊ณผ 2๋ ๋ด๋ถ FIFO ๋ฒํผ๋ฅผ ์ฒญ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ UART๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ํํธ์จ์ด์์ "๋ค์ณ์ง" ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ค๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฒ์ ์์ํ ๋ ๋๋ ํต์ ์ฐ๊ฒฐ์ ์ฌ์ค์ ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค. ์ด๋ฌํ ๋นํธ๋ "์๋์ผ๋ก" ์ฌ์ค์ ๋๋ฏ๋ก, ์ด ์ค ํ๋๋ฅผ ๋ ผ๋ฆฌ์ ์ธ "1" ์ํ๋ก ์ค์ ํ๋ฉด ๋์ค์ "0"์ผ๋ก ๋๋๋ฆด ํ์๊ฐ ์๋ค. ๋ ผ๋ฆฌ์ ์ธ "0"์ ๋ณด๋ด๋ ๊ฒ์ FIFO ์ ์ด์ ๋ค๋ฅธ ์ธก๋ฉด์ด ๋ณ๊ฒฝ๋๋๋ผ๋ UART์๊ฒ FIFO ๋ฒํผ๋ฅผ ์ฌ์ค์ ํ์ง ๋ง๋ผ๊ณ ๋งํ ๋ฟ์ด๋ค.
๋นํธ 3์ ์ฃผ๋ก FIFO์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ค๊ณ ํ ๋ DMA(Direct Memory Access)๊ฐ ๋ฐ์ํ๋ ๋ฐฉ์์ ๊ดํ ๊ฒ์ด๋ค. ์ด๋ ์ฃผ๋ก ์ง๋ ฌ ๋ฐ์ดํฐ์ ์ง์ ์ก์ธ์คํ์ฌ ๋ด๋ถ ๋ฒํผ์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ค๋ ์นฉ ์ค๊ณ์์๊ฒ ์ ์ฉํ ๊ฒ์ด๋ค. UART ์นฉ ์์ฒด์ RXRDY์ TXRDY๋ผ๋ ๋ ๊ฐ์ ๋์งํธ ๋ก์ง ํ์ด ์๋ค. UART ์นฉ์ผ๋ก ์ปดํจํฐ ํ๋ก๋ฅผ ์ค๊ณํ๋ ค๊ณ ํ๋ค๋ฉด ์ด๊ฒ์ ์ ์ฉํ ์๋ ์๊ณ ์ฌ์ง์ด ์ค์ํ ์๋ ์์ง๋ง, PC ์์คํ ์ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์์ ๋ชฉ์ ์ ๊ทธ๊ฒ์ ๊ฑฐ์ ์ธ๋ชจ๊ฐ ์๊ณ ๋น์ ์ ์์ ํ๊ฒ ๋ฌด์ํ ์ ์๋ค.
๋นํธ 5๋ 16750 UART ์นฉ์ด ๋ฒํผ๋ฅผ 16๋ฐ์ดํธ์์ 64๋ฐ์ดํธ๋ก ํ์ฅํ ์ ์๊ฒ ํด์ค๋ค. ์ด๋ ๋ฒํผ์ ํฌ๊ธฐ์ ์ํฅ์ ์ค ๋ฟ๋ง ์๋๋ผ ๋ค์์ ๊ธฐ์ ํ ํธ๋ฆฌ๊ฑฐ ์๊ณ๊ฐ์ ํฌ๊ธฐ๋ ์ ์ดํ๋ค. ์ด์ ์ ์นฉ ํ์ ์์๋ ์ด๊ฒ์ ์์ฝ๋ ๋นํธ๋ก์ ๋ ผ๋ฆฌ์ ์ธ "0" ์ํ๋ก ์ ์ง๋์ด์ผ ํ๋ค. 16750๋ ์๋ 16550๋ ์ ๋นํด UART๊ฐ 165 ๋ฐ์ดํธ FIFO์ ๋ ํก์ฌํ๊ฒ ๊ณต์ฐ๋๋ค.
๋นํธ 6๊ณผ 7์ ํธ๋ฆฌ๊ฑฐ ์๊ณ๊ฐ์ ๋ํด ์ค๋ช ํ๋ค. ์ด๊ฒ์ FIFO์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ ค์ฃผ๋ ์ธํฐ๋ฝํธ๊ฐ ํธ๋ฆฌ๊ฑฐ๋๊ธฐ ์ ์ FIFO์ ์ ์ฅ๋ ๋ฌธ์ ์์ ๋๋ค. ์๋ฆฌ์ผ ๋ฐ์ดํฐ ๋งํฌ๋ฅผ ํตํด ๋๋์ ๋ฐ์ดํฐ๊ฐ ์ ์ก๋ ๊ฒ์ผ๋ก ์์ํ ๊ฒฝ์ฐ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ๋๋ฆด ์ ์๋ค. ํธ๋ฆฌ๊ฑฐ์ ์ต๋๊ฐ์ด FIFO ๋ฒํผ ํฌ๊ธฐ๋ณด๋ค ์์ ์ด์ ๋ ์ผ๋ถ ์ํํธ์จ์ด๊ฐ UART์ ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐ ๋ค์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. FIFO๊ฐ ๊ฐ๋ ์ฐจ๋ฉด FIFO์ ๋ฐ์ดํฐ๊ฐ ์์ค๋๊ธฐ ์์ํ๋ฏ๋ก ์ด ์๊ณ๊ฐ์ ๋๋ฌํ ํ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ์ ์ ๊ธฐ์ตํ์ญ์์ค. UART ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋์ ์ํํธ์จ์ด ํ์ด๋ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์๊ณ๊ฐ์ ๋ฎ์ถ๊ณ ์ถ์ ์ ์๋ค. ์๊ณ๊ฐ์ด 1๋ฐ์ดํธ๋ก ์ค์ ๋ ๊ทนํ ๋๋ถ๋ถ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ๋ณธ 8250๊ณผ ๊ฐ์ ์ญํ ์ ํ์ง๋ง, ์ผ๋ถ ์บ๋ฆญํฐ๋ ์ฆ์ ๋ชจ๋ ๊ฒ์ ์ป์ ๊ธฐํ๊ฐ ์๋ ์ํฉ์์ ๋ฒํผ์ ๊ฑธ๋ฆด ์ ์๋ค๋ ์ถ๊ฐ ์ ๋ขฐ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
๋ผ์ธ ์ ์ด ๋ ์ง์คํฐ
์คํ์ : +3 . ์ด ๋ ์ง์คํฐ๋ ๋ ๊ฐ์ง ์ฃผ์ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์๋ค.
DLAB(Divisor Latch Access Bit) ์ค์ ์ผ๋ก, Divisor Latch Bytes ๊ฐ์ ์ค์ ํ ์ ์๋ค. ์ง๋ ฌ ๋ฐ์ดํฐ ์์ ๋ฐ ์ ์ก์ ์ฌ์ฉํ ๋นํธ ํจํด ์ค์ . ์ฆ, ์ฌ์ฉํ ์ง๋ ฌ ๋ฐ์ดํฐ ํ๋กํ ์ฝ(8-1-์์, 5-2- ์ง์ ๋ฑ).
Line Control Register (LCR)
Bit
Notes
7
Divisor Latch Access Bit
6
Set Break Enable
3, 4 & 5
Bit 5
Bit 4
Bit 3
Parity Select
0
0
0
No Parity
0
0
1
Odd Parity
0
1
1
Even Parity
1
0
1
Mark
1
1
1
Space
2
0
One Stop Bit
1
1.5 Stop Bits or 2 Stop Bits
0 & 1
Bit 1
Bit 0
Word Length
0
0
5 Bits
0
1
6 Bits
1
0
7 Bits
1
1
8 Bits
์ฒซ ๋ฒ์งธ ๋ ๋นํธ(๋นํธ 0๊ณผ ๋นํธ 1)๋ ์ง๋ ฌ ํ๋กํ ์ฝ์ ํตํด ์ ์ก๋๋ ๊ฐ ๋ฐ์ดํฐ "์๋"์ ๋ํด ์ ์ก๋๋ ๋ฐ์ดํฐ ๋นํธ์ ์๋ฅผ ์ ์ดํ๋ค. ๋๋ถ๋ถ์ ์ง๋ ฌ ๋ฐ์ดํฐ ์ ์ก์ ๊ฒฝ์ฐ 8๋นํธ๊ฐ ๋์ง๋ง, ๋ฐ์ดํฐ ๋นํธ๊ฐ ๋ ์ ๊ฒ ํ์ํ ์ผ๋ถ ์ด์ ํ๋กํ ์ฝ๊ณผ ๊ตฌํ ์ฅ๋น๋ฅผ ์ฐพ์ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์ผ๋ถ ๊ตฐ์ฌ์ฉ ์ํธํ ์ฅ๋น๋ ์ผ๋ถ TELEX ์ฅ๋น์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ง๋ ฌ "์๋"๋น 5๊ฐ์ ๋ฐ์ดํฐ ๋นํธ๋ง ์ฌ์ฉํ๋ค. ์ด๊ธฐ ASCII ํ ๋ ํ์ดํ ๋จ์๋ 7๊ฐ์ ๋ฐ์ดํฐ ๋นํธ๋ง ์ฌ์ฉํ์ผ๋ฉฐ, ์ค์ ๋ก ์ด ์ ์ฐ์ ์ด๋ฉ์ผ ๋ฉ์์ง์ 7๋นํธ ASCII๋ง ์ฌ์ฉํ๋ SMTP ํ์์ผ๋ก ๋ณด์กด๋์ด ์๋ค. ๋ถ๋ช ํ ์ด๊ฒ์ ๋น์ ์ด RS-232 ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ฑ๊ณต์ ์ผ๋ก ๋ฉ์์ง ์ ์ก์ ์๋ฃํ๊ธฐ ์ ์ ํ๋ฆฝ๋์ด์ผ ํ ๊ฒ์ด๋ค.
๋นํธ 2๋ UART์ ์ํด ์์ ์ฅ์น๋ก ์ ์ก๋๋ ์ ์ง ๋นํธ์ ์๋ฅผ ์ ์ดํ๋ค. ์ด๊ฒ์ 1๊ฐ์ ์ ์ง ๋นํธ๋ฅผ ๋ํ๋ด๋ ๋ ผ๋ฆฌ์ ์ธ "0"๊ณผ 2๊ฐ์ ์ ์ง ๋นํธ๋ฅผ ๋ํ๋ด๋ "1" ์ค ํ๋๋ก ์ ํ ๊ฐ๋ฅํ๋ค. 5๊ฐ์ ๋ฐ์ดํฐ ๋นํธ์ ๊ฒฝ์ฐ, UART๋ ๋์ "1.5 ์ ์ง ๋นํธ"๋ฅผ ์ ์กํ๋ค. ์ด๋ฌํ ๋งฅ๋ฝ์์ '๋นํธ'๋ ์ค์ ๋ก ์๊ฐ ๊ฐ๊ฒฉ์์ ๊ธฐ์ตํ์ญ์์ค. ๊ฐ ๋นํธ๋ 50๋ณด(์ด๋น ๋นํธ ์)์์ 20ms๊ฐ ๊ฑธ๋ฆฐ๋ค๋ ์ ์ ๊ธฐ์ตํ์ญ์์ค. ๋ฐ๋ผ์ "1.5 ์ ์ง ๋นํธ"๋ ๋ฌธ์ ์ฌ์ด์ ์ต์ 30ms๋ฅผ ๊ฐ์ง ๊ฒ์ด๋ค. ์ด๋ 7๋นํธ ๋๋ 8๋นํธ ASCII๊ฐ ์๋ 5๋นํธ Baudot๋ฅผ ์ฌ์ฉํ ์ฅ๋น๋ง "1.5 ์ ์ง ๋นํธ"๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ "5 ๋ฐ์ดํฐ ๋นํธ" ์ค์ ๊ณผ ์ฐ๊ด๋๋ค.
๋ ํ ๊ฐ์ง ์ ์ํด์ผ ํ ๊ฒ์ RS-232 ํ์ค์ ๊ฐ ์ง๋ ฌ ๋ฐ์ดํฐ ์๋์ ๋์ ์ ์ด๋ ํ๋์ ๋ฐ์ดํฐ ๋นํธ ์ฌ์ดํด์ด ๋ ผ๋ฆฌ์ ์ธ "1"๋ก ์ ์ง๋ ๊ฒ"(์ฆ, ์์ ๋นํธ, ๋ฐ์ดํฐ ๋นํธ, ํจ๋ฆฌํฐ ๋นํธ, ์ ์ง ๋นํธ๋ก๋ถํฐ์ ์์ ํ ๋ฌธ์)์ด๋ผ๊ณ ๋ง ๋ช ์ํ๊ณ ์๋ค๋ ์ ์ด๋ค. ๋ ์ปดํจํฐ ์ฌ์ด์ ํ์ด๋ฐ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ํ ๋ฒ์ ํ๋์ฉ ๋ฌธ์๋ฅผ ๋ณด๋ผ ์ ์๋ค๋ฉด ๋ณด๋ ์๋๋ฅผ ์ค์ด๋ ๋์ ๋ ๋ฒ์งธ ์ ์ง ๋นํธ๋ฅผ ์ถ๊ฐํด์ผ ํ ์๋ ์๋ค. ์ด๋ (์ผ๋ฐ์ ์ผ๋ก) ๋ณด ๋ ์ดํธ๋ฅผ ๋จ์ด๋จ๋ ค ์ ์ก ์๋๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ด๋ ๋์ ๋ฌธ์๋น ์ ์ก ์๋์ 1๋นํธ ํ๋ํฐ๋ฅผ ๋ํ๋ค.
๋นํธ 3, 4, 5๋ ๊ฐ ์ง๋ ฌ ์๋๊ฐ ํจ๋ฆฌํฐ ์ ๋ณด์ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ ์ ์ดํ๋ค. ๋นํธ 3์ด ๋ ผ๋ฆฌ "0"์ธ ๊ฒฝ์ฐ, ์ด๋ ํจ๋ฆฌํฐ ๋นํธ๊ฐ ์ง๋ ฌ ๋ฐ์ดํฐ ์๋์ ํจ๊ป ์ ์ก๋์ง ์๋๋ก ํ๋ค. ๋์ ์ ๊ทธ๊ฒ์ ์ฆ์ ์ ์ง ๋นํธ๋ก ์ฎ๊ฒจ๊ฐ๊ณ , ์ด ์์ค์์ ํจ๋ฆฌํฐ๋ฅผ ํ์ธํ๋ ๊ฒ์ ์ ๋ง ์ธ๋ชจ์๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์ธ์ ํ๋ ๊ฒ์ด๋ค. ๋น์ ์ ์ฌ์ ํ ํจ๋ฆฌํฐ ๋นํธ๋ฅผ ํฌํจ์ํด์ผ๋ก์จ ๋ฐ์ดํฐ ์ ์ก์ผ๋ก ์ฝ๊ฐ์ ์ ๋ขฐ์ฑ์ ์ป์ ์ ์์ง๋ง, ์ด ์ฑ ์ ๋ค๋ฅธ ์ฅ์์ ๋ ผ์๋ ๋ ์ ๋ขฐํ ์ ์๊ณ ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ๋ค์ด ์๋ค. ํจ๋ฆฌํฐ ๊ฒ์ฌ๋ฅผ ํฌํจํ๋ ค๋ฉด "์์" ํจ๋ฆฌํฐ ์ด์ธ์ ๊ฐ ํจ๋ฆฌํฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ์ญ์์ค.
์ค๋ ํจ๋ฆฌํฐ ์ง๋ ฌ ์๋์ ๋ฐ์ดํฐ ๋ถ๋ถ์ ๊ฐ ๋นํธ๋ ๋ ผ๋ฆฌ "1" ๋นํธ ์์ ๋จ์ํ ์นด์ดํธ๋ก ์ถ๊ฐ๋๋ค. ๋ง์ฝ ์ด๊ฒ์ด ํ์ ๋นํธ ์๋ผ๋ฉด, ํจ๋ฆฌํฐ ๋นํธ๋ ๋ ผ๋ฆฌ์ ์ธ "0"์ผ๋ก ์ ์ก๋ ๊ฒ์ด๋ค. ์นด์ดํธ๊ฐ ์ง์์ผ ๊ฒฝ์ฐ ํจ๋ฆฌํฐ ๋นํธ๋ ๋ ผ๋ฆฌ "1"๋ก ์ ์ก๋์ด "1" ๋นํธ์ ์๋ฅผ ํ์ํํ๋ค. ์ง์ ํจ๋ฆฌํฐ ์ค๋ ํจ๋ฆฌํฐ์ฒ๋ผ ๋นํธ๊ฐ ํจ๊ป ์ถ๊ฐ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ ๋นํธ ์๊ฐ ํ์ ์ซ์๋ก ๋๋๊ฒ ๋๋ฉด "1" ๋นํธ ์๊ฐ ๊ท ๋ฑํด์ง๋๋ก ๋ ผ๋ฆฌ์ ์ธ "1"๋ก ์ ์ก๋๋๋ฐ ์ด๋ ํ์ ํจ๋ฆฌํฐ์ ์ ๋ฐ๋๋ค. ๋งํฌ ํจ๋ฆฌํฐ ์ด ๊ฒฝ์ฐ ํจ๋ฆฌํฐ ๋นํธ๋ ํญ์ ๋ ผ๋ฆฌ "1"์ด ๋๋ค. ์ด๊ฒ์ ์ฝ๊ฐ ์ด์ํด ๋ณด์ผ ์ ์์ง๋ง, ์ด๊ฒ์ ์ํ๊ณผ ์ง๋จ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. ์ง๋ ฌ ์ฐ๊ฒฐ์ ์์ ๋์ ์๋ ์ํํธ์จ์ด๊ฐ ํจ๋ฆฌํฐ ์ค๋ฅ์ ์ ํํ๊ฒ ๋ฐ์ํ๊ณ ์๋์ง ํ์ธํ๋ ค๋ฉด, ๋งํฌ๋ ์คํ์ด์ค ํจ๋ฆฌํฐ๋ฅผ ๋ณด๋ด๊ณ , ์์ UART๋ ์ฅ์น๊ฐ ํจ๋ฆฌํฐ์ ๋ํด ๊ธฐ๋ํ๋ ๊ฒ์ ์ถฉ์กฑํ์ง ๋ชปํ๋ ๋ฌธ์๋ฅผ ๋ณด๋ผ ์ ์๋ค. Mark Parity์ ๊ฒฝ์ฐ์๋ง ์ด ๋นํธ๋ฅผ ์ถ๊ฐ "Stop ๋นํธ"๋ก ์ฌ์ฉํ ์ ์๋ค. RS-232 ํ์ค์ ์ง๋ ฌ ๋ฐ์ดํฐ ์๋๋ฅผ ๋๋ด๊ธฐ ์ํ ๋ ผ๋ฆฌ "1"์ ์์ํ๊ณ ์์ผ๋ฏ๋ก ์์ ์ปดํจํฐ๋ "๋งํฌ" ํจ๋ฆฌํฐ ๋นํธ์ ์ ์ง ๋นํธ ์ฌ์ด์ ์ฐจ์ด๋ฅผ ๊ตฌ๋ณํ ์ ์๋ค๋ ๊ฒ์ ๊ธฐ์ตํ๋ค. ๋ณธ์ง์ ์ผ๋ก, ๋น์ ์ ์ด ์ค์ ์ ์ฌ์ฉํ๊ณ ๋ํ ์ด ๋ ์ง์คํฐ์ ์ ์ง ๋นํธ ๋ถ๋ถ์ ์ ์ ํ๊ฒ ์ฌ์ฉํจ์ผ๋ก์จ 3 ๋๋ 2.5์ ์ ์ง ๋นํธ๋ฅผ ๊ฐ์ง ์ ์๋ค. ์ด๋ ์ผ๋ฐ์ ์ธ ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ์ฉํ์ง ์๋ ๋ฐฉ์์ผ๋ก ์ปดํจํฐ์ ์ค์ ์ "์ทจ์ฝ"ํ๊ฑฐ๋ ์ต์ํ ์ง๋ ฌ ๋ฐ์ดํฐ ์ค์ ์ ๋ํ ๋ณด๋ค ๊น์ ํต์ฐฐ๋ ฅ์ ์ป์ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค. ์คํ์ด์ค ํจ๋ฆฌํฐ ๋งํฌ ํจ๋ฆฌํฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ด๊ฒ์ ํจ๋ฆฌํฐ ๋นํธ๋ฅผ "sticky"๋ก ๋ง๋ค์ด, ๋ณํ์ง ์๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฌธ์๋ฅผ ์ ์กํ ๋๋ง๋ค ํจ๋ฆฌํฐ ๋นํธ์ ๋ํด ๋ ผ๋ฆฌ "0"์ ์ ๋ ฅํ๋ค. ๊ฐ ์ผ๋ จ ๋จ์ด์ ๋ํด 9๊ฐ์ ๋ฐ์ดํฐ ๋นํธ๋ฅผ ์ฝ์ ํ๋ ์กฐ์กํ ๋ฐฉ๋ฒ ๋๋ ์์์ ์ค๋ช ํ ์ง๋จ ๋ชฉ์ ์ด์ธ์ ์ค์ง์ ์ธ ์ฉ๋๋ ๋ง์ง ์๋ค. ๋นํธ 6์ 1๋ก ์ค์ ํ๋ฉด TX ์์ด์ด๊ฐ ๋ ผ๋ฆฌ์ ์ผ๋ก "0"์ด ๋์ด ๊ทธ๋๋ก ์ ์ง๋๋ฉฐ, ์์ UART - "๋ธ๋ ์ดํฌ ์ํ"์ ์ํด "0" ๋นํธ์ ๊ธด ์คํธ๋ฆผ์ผ๋ก ํด์๋๋ค. "break"๋ฅผ ๋๋ด๋ ค๋ฉด ๋นํธ 6์ ๋ค์ 0์ผ๋ก ์ค์ ํ์ญ์์ค.
๋ชจ๋ ์ ์ด ๋ ์ง์คํฐ
์คํ์ : +4 . ์ด ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ํํธ์จ์ด ์ ์ด ํ์ "ํ๋์จ์ด" ํ๋ก์ฐ ์ ์ด๋ฅผ ํ ์ ์๋ค. ๋๋ ๋ณด๋ค ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก UART์ 4๊ฐ์ ๋ค๋ฅธ ์์ด์ด๋ฅผ ์ง์ ์กฐ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ค ์ผ๋ จ์ ๋ ๋ฆฝ์ ์ธ ๋ ผ๋ฆฌ์ ์ํ๋ก ์ค์ ํ ์ ์์ผ๋ฉฐ, ๋ชจ๋์ ์ ์ด๋ฅผ ์ ๊ณตํ ์ ์๋ค. ๋ํ ๋๋ถ๋ถ์ UART์๋ ์ธํฐ๋ฝํธ๋ฅผ ํ์ฑํํ๋ ค๋ฉด ๋ ผ๋ฆฌ์ "1"๋ก ์ค์ ๋ ๋ณด์กฐ ์ถ๋ ฅ 2๊ฐ ํ์ํ๋ค๋ ์ ์ ์ ์ํด์ผ ํ๋ค.
Modem Control Register (MCR)
Bit
Notes
7
Reserved
6
Reserved
5
Autoflow Control Enabled (16750)
4
Loopback Mode
3
Auxiliary Output 2
2
Auxiliary Output 1
1
Request To Send
0
Data Terminal Ready
์ผ๋ฐ์ ์ธ PC ํ๋ซํผ์ ์๋ ์ด๋ฌํ ์ถ๋ ฅ ์ค ์ค์ ๋ก DB-9 ์ปค๋ฅํฐ์ PC ์ถ๋ ฅ์ ์ฐ๊ฒฐ๋ ๊ฒ์ ์ก์ ์์ฒญ(RTS)๊ณผ ๋ฐ์ดํฐ ํฐ๋ฏธ๋ ์ค๋น(DTR)๋ฟ์ด๋ค. DB-25 ์๋ฆฌ์ผ ์ปค๋ฅํฐ(PC ํ๋ซํผ์์ ๋ณ๋ ฌ ํต์ ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋จ)๊ฐ ์๊ฑฐ๋ ํ์ฅ ์นด๋์ ์ฌ์ฉ์ ์ ์ UART๊ฐ ์๋ ๊ฒฝ์ฐ ๋ณด์กฐ ์ถ๋ ฅ์ด RS-232 ์ฐ๊ฒฐ์ ์ฐ๊ฒฐ๋ ์ ์๋ค. ์ฌ์ฉ์ ์ง์ ํ๋ก์์ ์ด ์นฉ์ ๊ตฌ์ฑ ์์๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ด๊ฒ์ ์นฉ ์ค๊ณ์์ TTL ์ถ๋ ฅ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋๊ณ ์ถ์ ๋ชจ๋ ๊ฒ์ ํ์ํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง "๋ฌด๋ฃ" ์ถ๊ฐ ์ถ๋ ฅ ์ ํธ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ํํธ์จ์ด ์ ์ด ํ์ ์์ ์ ์๋ค. ์ด๊ฒ์ ํ๋ ๋ ์ฌ์ด ๋ฐฉ๋ฒ๋ค์ด ์์ง๋ง, ์ด ๊ฒฝ์ฐ ๊ทธ๊ฒ์ ๋น์ ์ ๋ ์ด์์์ ์ถ๊ฐ ์นฉ์ ์ ์ฝํ ์ ์์ ๊ฒ์ด๋ค.
"๋ฃจํ๋ฐฑ" ๋ชจ๋๋ ์ฃผ๋ก UART๋ฅผ ํ ์คํธํ์ฌ ์ฃผ CPU์ UART ์ฌ์ด์์ ํ๋ก๊ฐ ์๋ํ๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๊ฒ์, ๋น๋ก, ์ต์ข ์ฌ์ฉ์๊ฐ ์ํํ ํ์๋ ๊ฑฐ์ ์์ง๋ง, UART๋ฅผ ์ฌ์ฉํ๋ ์ผ๋ถ ์ํํธ์จ์ด์ ์ด๊ธฐ ์ํ์๋ ์ ์ฉํ ์ ์๋ค. ์ด๊ฒ์ด "1"์ ๋ ผ๋ฆฌ์ ์ํ๋ก ์ค์ ๋๋ฉด ์ก์ ๋ ์ง์คํฐ์ ์ ๋ ฅ๋๋ ๋ชจ๋ ๋ฌธ์๋ UART์ ์์ ๋ ์ง์คํฐ์์ ์ฆ์ ๋ฐ๊ฒฌ๋๋ค. ์์ ๋์ด๋ RTS์ DTS์ ๊ฐ์ ๋ค๋ฅธ ๋ ผ๋ฆฌ์ ์ ํธ๋ ์ง๋ ฌ ํต์ ํฌํธ ๋์ ๋ฃจํ๋ฐฑ RS-232 ์ฅ์น๋ฅผ ๋์ ๊ฒ์ฒ๋ผ ๋ชจ๋ ์ํ ๋ ์ง์คํฐ์ ๋ํ๋๋ค. ์์ปจ๋, ์ด๊ฒ์ ๋น์ ์ด ์ํํธ์จ์ด๋ง์ ์ฌ์ฉํ์ฌ ๋ฃจํ๋ฐฑ ํ ์คํธ๋ฅผ ํ ์ ์๊ฒ ํด์ค๋ค. ์ด๋ฌํ ์ง๋จ ๋ชฉ์ ๊ณผ UART๋ฅผ ์ฌ์ฉํ๋ ์ํํธ์จ์ด์ ์ผ๋ถ ์ด๊ธฐ ๊ฐ๋ฐ ํ ์คํธ๋ฅผ ์ ์ธํ๊ณ , ์ด ํ ์คํธ๋ ๊ฒฐ์ฝ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ค.
16750์๋ ๋ชจ๋ ์ ์ด ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํธ์ถํ ์ ์๋ ํน์ ๋ชจ๋๊ฐ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๊ฒ์ UART๊ฐ FIFO์ ํ์ฌ ์ํ์ ๋ฐ๋ผ ํ๋์จ์ด ๋ฌธ์ ํ๋ฆ ์ ์ด๋ฅผ ์ํด RTS์ DTS์ ์ํ๋ฅผ ์ง์ ์ ์ดํ ์ ์๊ฒ ํ๋ค. ์ด ๋์์ FIFO Control Register(FCR)์ ๋นํธ 5 ์ํ์๋ ์ํฅ์ ๋ฐ๋๋ค. ์ด๊ฒ์ด ์ ์ฉํ๊ณ UART ์ ์ด ์ํํธ์จ์ด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ ผ๋ฆฌ์ ์ผ๋ถ๋ฅผ ๋ฐ๊ฟ ์ ์์ง๋ง, 16750์ ์นฉ์ผ๋ก์ ๋น๊ต์ ์๋กญ๊ณ ๋ง์ ์ปดํจํฐ ์์คํ ์์ ํํ ์ฐพ์๋ณผ ์ ์๋ค. ์ปดํจํฐ์ 16750 UART๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ์๋ค๋ฉด, ์ด ํฅ์๋ ๊ธฐ๋ฅ์ ํ์ฉํด ๋ณด์ญ์์ค.
๋ผ์ธ ์ํ ๋ ์ง์คํฐ
์คํ์ : +5 . ์ด ๋ ์ง์คํฐ๋ ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก UART ๋ด์ ์กด์ฌํ ์ ์๋ ์ค๋ฅ ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ์ด ๋ ์ง์คํฐ๋ "์ฝ๊ธฐ ์ ์ฉ" ๋ ์ง์คํฐ์ด๋ฉฐ, ์ด ๋ ์ง์คํฐ์ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ๋ ๋ฌด์๋๊ฑฐ๋ ๋ ๋๋น ์ง ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉฐ, UART์์ ๋ค๋ฅธ ํ๋์ ์ ๋ฐํ๋ค๋ ์ ์ ์ ๋ ํ์ญ์์ค. ์ด ์ ๋ณด์๋ ์ฌ๋ฌ ๊ฐ์ง ์ฉ๋๊ฐ ์์ผ๋ฉฐ, ์ง๋ ฌ ๋ฐ์ดํฐ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฅผ ์ง๋จํ๋ ๋ฐ ์ ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ ๋ณด๊ฐ ์๋์ ์ ๊ณต๋ ๊ฒ์ด๋ค.
Line Status Register (LSR)
Bit
Notes
7
Error in Received FIFO
6
Empty Data Holding Registers
5
Empty Transmitter Holding Register
4
Break Interrupt
3
Framing Error
2
Parity Error
1
Overrun Error
0
Data Ready
๋นํธ 7์ FIFO์ ๋ฌธ์๊ฐ ์๋ ์ค๋ฅ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ง์ฝ ํ์ฌ FIFO์ ์๋ ์ด๋ค ์บ๋ฆญํฐ๊ฐ ์ฌ๊ธฐ์ ๋์ด๋ ๋ค๋ฅธ ์ค๋ฅ ๋ฉ์์ง(ํ๋ ์ ์ค๋ฅ, ํจ๋ฆฌํฐ ์ค๋ฅ ๋ฑ)๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด, ์ด๊ฒ์ FIFO์ ๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ขฐํ ์ ์๊ณ ํ๋ ์ด์์ ์ค๋ฅ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ FIFO๋ฅผ ์ง์ธ ํ์๊ฐ ์์์ ์๊ธฐ์ํค๋ ๊ฒ์ด๋ค. FIFO๊ฐ ์๋ UART ์นฉ์์๋ ์์ฝ ๋นํธ ํ๋ ์ ๋๋ค.
๋นํธ 5์ 6์ ๋ฌธ์ ์ก์ ๊ธฐ ํ๋ก์ ์ํ๋ฅผ ๋งํ๋ฉฐ UART๊ฐ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ์์ ํ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ค. ๋นํธ 6์ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ ์ก(FIFO ํฌํจ, ํ์ฑํ๋ ๊ฒฝ์ฐ)ํ๊ณ "์ํํธ ๋ ์ง์คํฐ"๋ ์ ์กํ๋ ๊ฒฝ์ฐ ๋ ผ๋ฆฌ "1"๋ก ์ค์ ๋๋ค. ์ด ์ํํธ ๋ ์ง์คํฐ๋ ์ก์ ๊ธฐ ํ๋ฉ ๋ฒํผ(THB)๋ FIFO๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ UART ๋ด์ ๋ด๋ถ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ผ๋ก, ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌ ํ์์ผ๋ก ์ค์ ๋ณํํ์ฌ ํ ๋ฒ์ 1๋นํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ์ํํธ ๋ ์ง์คํฐ์ ๋ด์ฉ์ 1๋นํธ ์๋๋ก "์ ํ"ํ์ฌ t์ ๊ฐ์ ์ป๋ ํ๋ก๋ค.๊ทธ ๋ค์์. ๋นํธ 5๋ ๋จ์ง ์ ์ก์ ์ํ FIFO๋ฅผ ํฌํจํ์ฌ UART๊ฐ ๋ ๋ง์ ๋ฌธ์๋ฅผ ์์ ํ ์ ์๋ค๋ ๊ฒ์ ๋งํด์ค๋ค.
Break Interrupt (๋นํธ 4)๋ ์ฐ์ ๋ฐ์ดํฐ ์ ๋ ฅ ๋ผ์ธ์ด "0" ๋นํธ๋ฅผ ์ต์ํ ์ ์ฒด ์ง๋ ฌ ๋ฐ์ดํฐ "word"๋งํผ ๊ธด ์๊ฐ ๋์ Divisor Latch Bytes์ ์ง์ ๋ ๋ณด๋ ์ดํธ์ ๋ํด "0" ๋นํธ๋ฅผ ์์ ํ์ ๋ ๋ ผ๋ฆฌ์ ์ผ๋ก "1"์ ๋๋ฌํ๋ค. (์ง๋ ฌ ๋ผ์ธ์ ์ ์ ์ํ๋ se์ ํด๋นํจ)nd "1" ๋นํธ ๋๋ ํญ์ "0" ๋นํธ์ธ ์์ ๋นํธ๋ฅผ ๋ณด๋ธ ๋ค์ ๊ฐ๋ณ ๋ฐ์ดํฐ ๋ฐ ํจ๋ฆฌํฐ ๋นํธ๋ฅผ ๋ณด๋ธ ๋ค์ "1"์ธ ์ ์ง ๋นํธ๋ ๋ผ์ธ์ด ์ ํด ์ํ์ผ ๊ฒฝ์ฐ ๋ "1"s๋ก ๊ณ์ ์งํ๋จ.) ๋ณดํต ์ ์ ์ํ ๋์ "0" ๋นํธ์ ๊ธด ์ํ์ค๋ ์ปดํจํฐ์ ์ง๋ ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ฅ์น๊ฐ ์ด๋ค ์ด์ ๋ก ์ค์ง๋์์์ ์๋ฏธํ๋ค. ์ข ์ข ์ง๋ ฌ ํต์ ์ ๊ฒฝ์ฐ ์ด๊ฒ์ ์ ์์ ์ธ ์ํ์ง๋ง, ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋ค๋ฅธ ์ฅ์น๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ชจ๋ํฐ๋งํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค. ์ผ๋ถ ์ง๋ ฌ ๋จ์๋ Out-of-Band ์ ํธ ๋ฐฉ์์ผ๋ก์ ์ด "Break ์กฐ๊ฑด"์ ์์ฑํ๊ฒ ํ๋ ํค๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
ํ๋ ์ ์ค๋ฅ(๋นํธ 3)๋ ๋ง์ง๋ง ๋นํธ๊ฐ ์ ์ง ๋นํธ๊ฐ ์๋ ๋ ๋ฐ์ํ๋ค. ๋๋ ์ข ๋ ์ ํํ ๋งํ๋ฉด ์ ์ง ๋นํธ๋ ๋ ผ๋ฆฌ์ ์ธ "0"์ด๋ค. ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ์์ธ์ด ์๋๋ฐ, ์ฌ๊ธฐ์๋ ๋ ์ปดํจํฐ๊ฐ ์ผ์นํ์ง ์๋ ํ์ด๋ฐ์ด ์๋ค. ์ด๋ ๊ธฐ๊ธฐ ๊ฐ ๋ฌผ๋ฆฌ์ ์ผ์ด๋ธ์ ๋ฌธ์ ๋๋ ์ผ์ด๋ธ์ด ๋๋ฌด ๊ธธ๋ค๋ ๋ฑ์ ๋ค๋ฅธ ์์ธ๋ค๋ ์๋ฐ๋ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ๋ณด๋ ์ดํธ ๋ถ์ผ์น๋ก ์ธํด ๋ฐ์ํ๋ค. ๋ฐ์ดํฐ ๋นํธ์ ๊ฐ์๋ ๊บผ์ง ์ ์์ผ๋ฏ๋ก ์ด์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ UART(๋ฐ์ดํฐ ๋นํธ ๊ธธ์ด, ํจ๋ฆฌํฐ ๋ฐ ์ค์ง ๋นํธ ์)์ ๋ํ ๋ชจ๋ ์ค์ ์ด ์์๋์ด์ผ ํ๋ ๊ฒ์ธ์ง ํ์ธํ๊ธฐ ์ํด ์ง๋ ฌ ๋ฐ์ดํฐ ํ๋กํ ์ฝ์ ๋งค์ฐ ๋ฉด๋ฐํ๊ฒ ํ์ธํ์ญ์์ค.
ํจ๋ฆฌํฐ ์ค๋ฅ(๋นํธ 2)๋ ํ๋ ์ ์ค๋ฅ์ ๊ฐ์ด ์ผ์นํ์ง ์๋ ๋ณด๋ ์ดํธ๋ฅผ ๋ํ๋ผ ์๋ ์๋ค(ํนํ ๋ ์ค๋ฅ๊ฐ ๋์์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ). ์ด ๋นํธ๋ ์์๋๋ ํจ๋ฆฌํฐ ์๊ณ ๋ฆฌ์ฆ(์ค๋, ์ง์, ๋งํฌ ๋๋ ๊ณต๋ฐฑ)์ด ๋ฐ๊ฒฌ๋์ง ์์์ ๋ ๋ฐ์ํ๋ค. UART ์ค์ ์์ "No parity"๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ด ๋นํธ๋ ํญ์ ๋ ผ๋ฆฌ์ ์ธ "0"์ด์ด์ผ ํ๋ค. ํ๋ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ ๋, ์ด๊ฒ์ ์ผ์ด๋ธ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ค๋ฅธ ๋ฌธ์ ๋ค๋ ์ฒ๋ฆฌํ ์ ์๋ค.
์ค๋ฒ๋ฐ ์ค๋ฅ(๋นํธ 1)๋ UART์ ์ ๋๋ก ์ ๊ทผํ์ง ๋ชปํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ถ๋ ๋๋ ์ด์ ์ฒด์ ์ ํ์๋ค. ์ด ์ค๋ฅ ์ํ๋ ํ๋ ๋๊ธฐ ์ค์ธ ๋ฌธ์๊ฐ ์๊ณ ๋ค์ด์ค๋ ๋ณ์ ๋ ์ง์คํฐ๊ฐ ๋ค์ ๋ฌธ์์ ๋ด์ฉ์ ์์ ๊ธฐ ๋ฒํผ(RBR)๋ก ์ด๋ํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ค. FIFO๊ฐ ์ฅ์ฐฉ๋ UART์ ๊ฒฝ์ฐ FIFO๋ ๊ฐ๋ ์ฐผ์์ ๋ํ๋ธ๋ค.
UART์ ์ก์ธ์คํ๋ ์ํํธ์จ์ด๊ฐ ์ผ๋ง๋ ํจ์จ์ ์ธ์ง, ํนํ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ฝ๋ ๋ถ๋ถ์ ํฌํจํ์ฌ ์ด๋ฌํ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ๋์์ด ๋๋ ๋ช ๊ฐ์ง ์์ ์ ํ์ญ์์ค. ๋ฉํฐํ์คํน ์ด์ ์ฒด์ ์์๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์ํํธ์จ์ด ๋ถ๋ถ์ด ๋ณ๋์ ์ค๋ ๋์ ์๋์ง, ์ค๋ ๋ ์ฐ์ ์์๊ฐ ๋๊ฑฐ๋ ์๊ฐ์ด ์ค์ํ์ง ํ์ธํ๊ณ ์ถ์ ์ ์๋๋ฐ, ์ด๋ ์ง๋ ฌ ํต์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ์ํํธ์จ์ด์์ ๋งค์ฐ ์ค์ํ ์์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ข์ ์ํํธ์จ์ด ๊ดํ์๋ ์ํํธ์จ์ด๋ฅผ ํตํด ์ํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ณ "๋ฒํผ"๋ฅผ ์ถ๊ฐํ์ฌ, ํ์์ ๋ฐ๋ผ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ ๋ง์ ๊ธฐํ๋ฅผ ์ ๊ณตํ๊ณ , UART์์ ๋ฐ์ดํฐ๋ฅผ ๋นผ๋ด๋ ๋ฐ ํ์ํ ์ค์ํ ์๋ธ๋ฃจํด์์ ๋ฒ์ด๋๊ฒ ํด์ค๋ค. ์ด ๋ฒํผ๋ 1KB์์ ์ต๋ 1MB๊น์ง ์์ ์ ์์ผ๋ฉฐ ์์ ์ค์ธ ๋ฐ์ดํฐ์ ์ข ๋ฅ์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง๋ค. ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ์์ญ์๋ ์ ์ฉ๋๋ฉฐ, ์ดํ ๋ชจ๋์์๋ ์ ์ฉ๋ ์ ์๋ ์ข ๋ ์ด๊ตญ์ ์ธ ๋ฒํผ๋ง ๊ธฐ๋ฒ์ด ์๋ค.
๋ชจ๋ ์ํ ๋ ์ง์คํฐ
์คํ์ : +6 . ์ด ๋ ์ง์คํฐ๋ ๋ชจ๋์ ํ์ฌ ์ํ๋ฅผ ์ํํธ์จ์ด์ ์๋ฆฌ๊ธฐ ์ํด ์ฌ๊ธฐ์ ์๋ ๋ ๋ค๋ฅธ ์ฝ๊ธฐ ์ ์ฉ ๋ ์ง์คํฐ ์ ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ก์ธ์คํ๋ ๋ชจ๋์ ์ธ๋ถ ๋ชจ๋์ด๊ฑฐ๋ UART๋ฅผ ์ปดํจํฐ์ ๋ํ ์ธํฐํ์ด์ค๋ก ์ฌ์ฉํ๋ ๋ด๋ถ ๋ชจ๋์ผ ์ ์๋ค.
Modem Status Register (MSR)
Bit
Notes
7
Carrier Detect
6
Ring Indicator
5
Data Set Ready
4
Clear To Send
3
Delta Data Carrier Detect
2
Trailing Edge Ring Indicator
1
Delta Data Set Ready
0
Delta Clear To Send
๋นํธ 7๊ณผ 6์ ๋ชจ๋ ํ๋๊ณผ ์ง์ ๊ด๋ จ์ด ์๋ค. ๋ฐ์กํ ํ์ง๊ธฐ๋ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ "์ฐ๊ฒฐ"๋์ด ์๋ ๋์ "1"์ ๋ ผ๋ฆฌ์ ์ํ๋ฅผ ์ ์งํ ๊ฒ์ด๋ค. ์ด๊ฒ์ด "0"์ด๋ผ๋ ๋ ผ๋ฆฌ์ ์ธ ์ํ๋ก ๊ฐ ๋, ๋น์ ์ ์ ํ ์ฐ๊ฒฐ์ด ๋๊ฒผ๋ค๊ณ ๊ฐ์ ํ ์ ์๋ค. ๋ง ํ์๊ธฐ ๋นํธ๋ "RI" ๋๋ ๋ง ํ์๊ธฐ๋ผ๊ณ ๋ ํ๋ RS-232 ์์ด์ด์ ์ง์ ์ฐ๊ฒฐ๋๋ค. ๋ณดํต ์ด ๋นํธ๋ ์ ํ์ ์ "๋ง ์ ์"์ด ๊ฐ์ง๋ ๊ฒฐ๊ณผ "1"์ ๋ ผ๋ฆฌ์ ์ํ๋ก ์ ํ๋๋๋ฐ, ๋ง์น ๋๊ตฐ๊ฐ๊ฐ ๋น์ ์๊ฒ ์ ํ๋ฅผ ๊ฑธ๋ ค๊ณ ํ๋ค๋ ๊ฒ์ ์๋ ค์ฃผ๊ธฐ ์ํด ์ฌ๋์ ์ ํ๊ฐ ์ธ๋ฆด ๋์ ๊ฐ๋ค.
AT ๋ชจ๋ ๋ช ๋ น์ ์น์ ์ ๋๋ฌํ๋ฉด ๋ชจ๋์ ์ํ์ ๊ดํ ์ด ์ ๋ณด ๋ฐ ๊ธฐํ ์ ๋ณด๋ฅผ ์๋ ค์ฃผ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ ๊ฒ์ด๋ฉฐ, ๋์ ์ด ์ ๋ณด๋ ํน์ ์์ด์ด ๋์ ์ผ๋ฐ์ ์ธ ์ง๋ ฌ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋ฌธ์๋ก ๋ณด๋ด์ง ๊ฒ์ด๋ค. ์ฌ์ค, ์ด๋ฌํ ์ฌ๋ถ์ ๋นํธ๋ ์๋นํ ๊ฐ์น๊ฐ ์์ง๋ง, ์ฒ์๋ถํฐ ๊ท๊ฒฉ์ ์ผ๋ถ์์ผ๋ฉฐ UART ์ค๊ณ์๋ค์ ๋น๊ต์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค. ๊ทธ๋ฌ๋, ๊ทธ๊ฒ์ ์ผ๋ถ ์ถ๊ฐ ์ ๋ณด๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์กํ๊ฑฐ๋ UART๋ฅผ ์ฌ์ฉํ๋ ์ํํธ์จ์ด ์ค๊ณ์๊ฐ ๋ค๋ฅธ ๋ชฉ์ ์ ์ํด ๋ค๋ฅธ ์ฅ์น๋ก๋ถํฐ ๋ ผ๋ฆฌ ๋นํธ ์ ํธ๋ฅผ ์์ ํ๋๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋ ์ ์๋ค.
"Data Set Ready"์ "Clear To Send" ๋นํธ(๋นํธ 4, 5)๋ RS-232 ์ผ์ด๋ธ์์ ์ง์ ๋ฐ๊ฒฌ๋๋ฉฐ, "Modem Control Register (MCR)๋ก ์ ์ก๋๋ "Receest To Derminal Ready"์ ์์ด์ด๋ฅผ ์ผ์น์ํค๊ณ ์๋ค. 2๊ฐ์ ๋ ์ง์คํฐ์ ์ด 4๊ฐ์ ๋นํธ๋ฅผ ์ฌ์ฉํ๋ฉด "ํ๋์จ์ด ํ๋ก์ฐ ์ ์ด"๋ฅผ ์ํํ ์ ์์ผ๋ฉฐ, ์ด ๊ฒฝ์ฐ ๋ค๋ฅธ ์ฅ์น์ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋๋ผ๊ณ ์ ํธ๋ฅผ ๋ณด๋ด๊ฑฐ๋ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ ๋ฐ์ดํฐ ์ ์ก์ ๋ณด๋ฅํ๊ณ ์ค์งํ ์ ์๋ค. ๋ฐ์ดํฐ ํ๋ฆ ์ ์ด์ ๋๋ฌํ๋ฉด ๋ค๋ฅธ ๋ชจ๋์์ ์ด ์ฃผ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ด ๊ธฐ๋ก๋ ๊ฒ์ด๋ค.
"๋ธํ" ๋นํธ(๋นํธ 0, 1, 2, 3)์ ๋ํ ์ฐธ๊ณ ์ฌํญ. ์ด ๊ฒฝ์ฐ "๋ธํ"๋ผ๋ ๋จ์ด๋ ๋นํธ ์ค ํ๋์ ์ํ ๋ณํ์์์ ๊ฐ์ด ๋ณํ๋ฅผ ์๋ฏธํ๋ค. ์ด๊ฒ์ ๋ธํ๋ฒ ๊ฐ ์๋์ ๋ณํ๋ฅผ ์๋ฏธํ๋ ๋ก์ผ ๊ณผํ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ณผํ ๋ถ์ผ๋ก๋ถํฐ ์จ๋ค. ์ด ๋ ์ง์คํฐ์ ๋ชฉ์ ์, ๋ค์์ ์ด ๋ชจ๋ ์ํ ๋ ์ง์คํฐ์ ์ ๊ทผํ ๋(์: ์บ๋ฆฌ์ด ๋ํ ํธ๋ฅผ ์ฌ์ฉํ ๋ธํ ๋ฐ์ดํฐ ์บ๋ฆฌ์ด ๋ํ ํธ)์ ๊ด๋ จ๋ ๋นํธ๊ฐ ์ด์ ๋ ์ง์คํฐ์ ์ก์ธ์คํ์ ๋์ ๋ ผ๋ฆฌ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋นํธ๋ ๊ฐ๊ฐ ๋ ผ๋ฆฌ "1"์ด ๋๋ค. "๋ง ํ์๊ธฐ" ๋นํธ๊ฐ ๋ ผ๋ฆฌ "1"์์ ๋ ผ๋ฆฌ "0" ์ํ๋ก ๋ฐ๋ ๊ฒฝ์ฐ์๋ง ๋ ผ๋ฆฌ "1" ์ํ์ ์๋ค๋ ์ ์ ์ ์ธํ๋ฉด, ์ถ์ ์์ง ๋ง ํ์๊ธฐ๋ ๋๋จธ์ง ๊ฒ๊ณผ ๊ฑฐ์ ๋น์ทํ๋ค. ์ด ์ง์์๋ ์ค์ ๋ก ์ค์ ์ ์ธ ์ฉ๋๋ ๋ณ๋ก ์์ง๋ง, ์ด๋ฌํ ๋นํธ๋ฅผ ์ด์ฉํ์ฌ UART๋ก๋ถํฐ ์์ ํ ๋ฐ์ดํฐ๋ฅผ ์ด ๋นํธ์ ๊ทผ๊ฑฐํ์ฌ ์ด๋ ์ ๋ ์กฐ์ํ๋ ค๊ณ ํ๋ ์ํํธ์จ์ด๊ฐ ์๋ค. ๋ง์ฝ ๋น์ ์ด ์ด 4๋นํธ๋ฅผ ๋ฌด์ํ๋ค๋ฉด ๋น์ ์ ์ฌ์ ํ ๋งค์ฐ ๊ฐ๋ ฅํ ์ง๋ ฌ ํต์ ์ํํธ์จ์ด๋ฅผ ๋ง๋ค ์ ์๋ค.
์คํฌ๋์น ๋ ์ง์คํฐ
์คํ์ : +7 . Scratch ๋ ์ง์คํฐ๋ ํฅ๋ฏธ๋ก์ด ์์๊ป๋ผ๋ค. ์ค๊ณ์๋ค์ด ๋ฌด์์ ํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ์ถ๊ฐ "๋ฑ๋ก"์ ๊ฐ์ง ๋ค๋ฅธ ๋ชจ๋ I/O ํฌํธ ์ฃผ์๋ก ๋ ์ง์คํฐ ์ ์ฒด๋ฅผ ์์ถํ๊ธฐ ์ํด ๋ง์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์๋ค. ์ปดํจํฐ ์ํคํ ์ฒ๋ฅผ ๋ค๋ฃฐ ๋๋ 2์ ํ์ ๋ค๋ฃฐ ๋ ๋ ์ฌ์ ๊ธฐ ๋๋ฌธ์ 8๊ฐ์ I/O ํฌํธ๋ฅผ "์ ๊ทผ"ํด์ผ ํ๋ค๋ ๊ฒ์ ๋ช ์ฌํ๋ผ. ๋ค๋ฅธ ๊ธฐ๊ธฐ๊ฐ ์ด ์ถ๊ฐ I/O ํฌํธ๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ฉํ๋ฉด ๋ง๋๋ณด๋ ์ค๊ณ๊ฐ ๋๋ฌด ๋ณต์กํด์ง ์ ์๋ค.
8250 UART์ ์ผ๋ถ ๋ณํ์์๋ ์ด ์คํฌ๋์น ๋ ์ง์คํฐ์ ๊ธฐ๋ก๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ด ๋ ์ง์คํฐ์ I/O ํฌํธ๋ฅผ ์ฝ์ ๋ ์ํํธ์จ์ด์์ ์ฌ์ฉํ ์ ์๋ค. ์ฌ์ค์, ์ด๊ฒ์ ์ฌ๋ฌ๋ถ์ด ์ ์ฉํ๋ค๊ณ ์๊ฐํ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ฌ๋ฌ๋ถ์ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ ์ ์๋ "๋ฉ๋ชจ๋ฆฌ"๋ฅผ ํ ๋ฐ์ดํธ ๋ ์ค๋ค. ๋ฐ์ด๋ฌ์ค ์์ฑ์ ์ธ์ (์๋ฌด๋ฐ ์์ด๋์ด๋ผ๋ ๋ด์๋ ์ ๋ ๊ฒ ๊ฐ๋ค) ์ด ๋ ์ง์คํฐ์๋ ์ค์ ๋ก ์ข์ ์ฉ๋๊ฐ ์๋ค. ์๋ 8250์ ์ด ๋ ์ง์คํฐ๋ฅผ ํตํด ์ ์ก๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ด ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ฌ UART์ ํน์ ๋ณํ์ ์๋ณํ ์ ์๋ค๋ ์ ์ด ์ ํ์ ์ด๋ค. ๊ทธ ์นฉ์ PC ๋์์ธ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ (๊ทธ ํ์ฌ๋ค์ 16550๊ณผ ๊ฐ์ด ๋ ์ง๋ณด๋ ์นฉ์ ์ฌ์ฉํ๊ณ ์๋ค), ๋น์ ์ ๋๋ถ๋ถ์ ์ต์ PC ํ์ ํ๋ซํผ์์ ๊ทธ "๋ฒ๊ทธ"๋ฅผ ์ฐพ์ ์ ์์ ๊ฒ์ด๋ค. ์๋์ ์ฌ์ฉ์ ์ปดํจํฐ์์ ์ฌ์ฉ ์ค์ธ UART ์นฉ์ ์ํํธ์จ์ด๋ก ์๋ณํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ ์ง๋ ฌ ํฌํธ์ ๋ํ ์์ธํ ์ ๋ณด๊ฐ ์ ๊ณต๋ ๊ฒ์ด๋ค.
UART์ ์ํํธ์จ์ด ์๋ณ
์ํํธ์จ์ด ๋ฃจํด๋ง์ผ๋ก ์ปดํจํฐ ์์คํ ์ ๋ง์ ๊ตฌ์ฑ์์๋ฅผ ์๋ณํ ์ ์๋ ๊ฒ์ฒ๋ผ, ์ปดํจํฐ์์๋ ๋ฐ๊ฒฌ๋ UART์ ์ด๋ค ๋ฒ์ ์ด๋ ๋ณํ์ ๊ฐ์งํ ์ ์๋ค. ์ด๊ฒ์ด ๊ฐ๋ฅํ ์ด์ ๋ UART ์นฉ์ ๊ฐ ๋ฒ์ ๋ง๋ค ๋ช ๊ฐ์ง ๊ณ ์ ํ ํน์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์ ๊ฑฐ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ์ด๋ค ๋ฒ์ ์ ๋ค๋ฃจ๊ณ ์๋์ง ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ์ง๋ ฌ I/O ๋ฃจํด์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ , ์ ๋ณด๋ฅผ ์ ์กํ๊ณ ์ ์กํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฒํผ๊ฐ ์๋์ง ์๊ณ , PC์ ์ฅ๋น๋ฅผ ๋ ์ ์๊ณ ์ ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํ ์ ๋ณด๊ฐ ๋ ์ ์๋ค.
UART ๋ฒ์ ์ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ ํ ์๋ Scratch Register๊ฐ ์๋ํ๋์ง ์ฌ๋ถ๋ค. ์ฒ์ 8250๊ณผ 8250A ์นฉ์๋ ์คํฌ๋์น ๋ ์ง์คํฐ๊ฐ ์๋ํ์ง ์๋ ์นฉ ๋ชจ๋ธ์ ์ค๊ณ์ ๊ฒฐํจ์ด ์์๋ค. ๋ง์ฝ ๋น์ ์ด ์ด ๋ ์ง์คํฐ์ ์ฝ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ค๊ฐ ๊ทธ๊ฒ์ด ๋ค์ ๋ฐ๋๋ค๋ฉด, ๋น์ ์ ๋น์ ์ ์ปดํจํฐ์ ์๋ UART๊ฐ ์ด ๋ ๊ฐ์ ์นฉ ๋ชจ๋ธ ์ค ํ๋๋ผ๋ ๊ฒ์ ์ ๊ฒ์ด๋ค.
FIFO ์ ์ด ๋ ์ง์คํฐ๊ฐ ์๋ ๊ณณ์ด ๋ ์๋ค. ์ด ๋ ์ง์คํฐ์ ๋นํธ "0"์ ๋ ผ๋ฆฌ 1๋ก ์ค์ ํ๋ฉด, ์ด ์นฉ์ ์ต์ ๋ฒ์ ์์๋ง ๋ณผ ์ ์๋ UART์ FIFO๋ฅผ ํ์ฑํํ๋ ค๊ณ ํ๋ ๊ฒ์ด๋ค. ๋นํธ "6"๊ณผ "7"์ ์ฝ์ผ๋ฉด 16550 ๋๋ 16550A ์นฉ ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋์ง ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ด๋ค. ๋นํธ "5"๋ ์นฉ์ด 16750์ธ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ด๋ค.
๋ค์์ ์ฌ์ฉ ์ค์ธ ์นฉ์ ์ข ๋ฅ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ด ๋๋ ์ ์ฒด ์์ฌ ์ฝ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
Last updated