
์ฝ๋ ๋ณด๊ธฐ https://github.com/Embedded-ES-101/TermProject
4๊ฐ์ ์ค์์น์ LED๋ฅผ ์ด์ฉํด ๋ค์ํ ๋ชจ๋๋ก ๋์ํ๋ ์์คํ
์ ๊ตฌํํ์ต๋๋ค.
์ปค๋ ๋ชจ๋๊ณผ ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ๋ฅผ ์ง์ ์์ฑํ์ฌ ์ฌ์ฉ์ ์
๋ ฅ ๋ฐ ์ธํฐ๋ฝํธ๋ฅผ ํตํด LED๋ฅผ ์ ์ดํฉ๋๋ค.
-
4๊ฐ์ ๋ชจ๋
- Mode 1: ์ ์ฒด LED ๋ฐ๋ณต ์ ๋ฉธ
- Mode 2: ๊ฐ๋ณ LED ์์ฐจ ์ ๋ฉธ
- Mode 3: ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก LED On/Off
- Mode 4: ๋ฆฌ์ (๋ชจ๋ ์ด๊ธฐํ)
-
๋ชจ๋ ์ ํ ์ ํ
- ํ์ฌ ๋ชจ๋๋ฅผ ์ข ๋ฃํ๋ ค๋ฉด ๋ฐ๋์ Mode 4 (Reset) ๋ฅผ ๋๋ฌ์ผ ํฉ๋๋ค.
-
LED ์ ์ด ๋ฐฉ์
- ์ค์์น ์ ๋ ฅ (Interrupt ๊ธฐ๋ฐ)
- ์ฌ์ฉ์ ์ ๋ ฅ (Device File I/O ๊ธฐ๋ฐ)
- ์ฌ์ฉ์๋ก๋ถํฐ 1~4 ๋๋ 0์ ์ ๋ ฅ ๋ฐ์ LED๋ฅผ ์ ์ดํ๊ฑฐ๋ ์ข ๋ฃํฉ๋๋ค.
- Mode 3 ์ ํ ์์๋ ๋ฐ๋ณต ์ ๋ ฅ์ ํตํด ๊ฐ๋ณ LED๋ฅผ ์ง์ ์ ์ดํ ์ ์์ต๋๋ค.
- ์ ๋ ฅ๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ์ ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ํตํด ์์ ์ ์ธ ๋์์ ๋ณด์ฅํฉ๋๋ค.
- ์ ์ -์ปค๋ ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ฌ์ฉ๋๋ ์ ์ญ ๋ฒํผ
my_driver_write
: ์ฌ์ฉ์ โ ์ปค๋ (LED ์ ์ด ๋ช ๋ น)my_driver_read
: ์ปค๋ โ ์ฌ์ฉ์ (ํ์ ์ ์๋ต)copy_from_user
,copy_to_user
ํจ์ ์ฌ์ฉ
request_irq()
๋ก ์ธํฐ๋ฝํธ๋ฅผ ๋ฑ๋กirq_handler()
์์ ๋ชจ๋ ํ๋๊ทธ์ ๋ฐ๋ผ ๋ถ๊ธฐ ์ฒ๋ฆฌ- Mode 3์ด ์ผ์ ธ์์ ๊ฒฝ์ฐ, ๋ค๋ฅธ ๋ชจ๋ ์คํ์ ์ ํ๋๊ณ LED ์ง์ ์ ์ด๋ง ํ์ฉ
- IRQ ๋ฐ์ ์
module_led_mode_1()
ํธ์ถ - ํ์ด๋จธ๋ฅผ ํตํด ๋ชจ๋ LED๋ฅผ 2์ด๋ง๋ค On/Off ๋ฐ๋ณต
module_led_mode_2()
ํธ์ถ ํ ํ์ด๋จธ๋ก ์์ฐจ ์ ๋ฑ- ๋ฐฐ์ด ์ธ๋ฑ์ค๋ฅผ ์ํํ๋ฉฐ LED๋ฅผ ํ๋์ฉ ์ ๋ฉธ
module_led_mode_3()
์คํ ํ, ๊ฐ ์ค์์น๋ฅผ ํตํด ๊ฐ๋ณ LED On/Off- ๋นํธ ์ฐ์ฐ์ ํตํด LED ์ํ๋ฅผ ํ ๊ธ (
XOR
์ฐ์ฐ ์ฌ์ฉ)
- ๋ชจ๋ ๋ชจ๋ ํ๋๊ทธ๋ฅผ ์ด๊ธฐํํ๊ณ LED ์ํ๋ฅผ OFF
- ๋ค๋ฅธ ๋ชจ๋๋ก ์ ํ ๊ฐ๋ฅํ๋๋ก ์์คํ ๋ฆฌ์
- ํ๋๊ทธ ๋ณ์ ๊ฐ ์ค๋ณต ๋ฐ ๋ณต์ก๋ ์ฆ๊ฐ
- ๋ฆฌ์ ํจ์ ์ต์ ํ ๋ฐ ํ๋๊ทธ ํตํฉ ํ์
์ด๋ฆ | ์ญํ |
---|---|
๋ฐ์คํ | ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ / ์ ์ ์ธํฐํ์ด์ค ๊ตฌํ |
์ด์ ๊ทผ | ๋ชจ๋ ๋ก์ง ์ค๊ณ / ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ / LED ์ ์ด |