Skip to content
@Embedded-ES-101

Embedded-ES-101

๐ŸŒŸ TermProject: LED Mode Controller with Device Driver

image

์ฝ”๋“œ ๋ณด๊ธฐ https://github.com/Embedded-ES-101/TermProject

๐Ÿงญ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

4๊ฐœ์˜ ์Šค์œ„์น˜์™€ LED๋ฅผ ์ด์šฉํ•ด ๋‹ค์–‘ํ•œ ๋ชจ๋“œ๋กœ ๋™์ž‘ํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ปค๋„ ๋ชจ๋“ˆ๊ณผ ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ†ตํ•ด LED๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.


โš™๏ธ ๋™์ž‘ ํ๋ฆ„ ์š”์•ฝ

  1. 4๊ฐœ์˜ ๋ชจ๋“œ

    • Mode 1: ์ „์ฒด LED ๋ฐ˜๋ณต ์ ๋ฉธ
    • Mode 2: ๊ฐœ๋ณ„ LED ์ˆœ์ฐจ ์ ๋ฉธ
    • Mode 3: ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ LED On/Off
    • Mode 4: ๋ฆฌ์…‹ (๋ชจ๋“œ ์ดˆ๊ธฐํ™”)
  2. ๋ชจ๋“œ ์ „ํ™˜ ์ œํ•œ

    • ํ˜„์žฌ ๋ชจ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ Mode 4 (Reset) ๋ฅผ ๋ˆŒ๋Ÿฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. LED ์ œ์–ด ๋ฐฉ์‹

    • ์Šค์œ„์น˜ ์ž…๋ ฅ (Interrupt ๊ธฐ๋ฐ˜)
    • ์‚ฌ์šฉ์ž ์ž…๋ ฅ (Device File I/O ๊ธฐ๋ฐ˜)

โŒจ๏ธ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ

  • ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ 1~4 ๋˜๋Š” 0์„ ์ž…๋ ฅ ๋ฐ›์•„ LED๋ฅผ ์ œ์–ดํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  • Mode 3 ์„ ํƒ ์‹œ์—๋Š” ๋ฐ˜๋ณต ์ž…๋ ฅ์„ ํ†ตํ•ด ๊ฐœ๋ณ„ LED๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž…๋ ฅ๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์•ˆ์ •์ ์ธ ๋™์ž‘์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”Œ ์ปค๋„ โ†” ์œ ์ € ๋ฐ์ดํ„ฐ ํ๋ฆ„

memory_buffer

  • ์œ ์ €-์ปค๋„ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์— ์‚ฌ์šฉ๋˜๋Š” ์ „์—ญ ๋ฒ„ํผ

์ฃผ์š” ํ•จ์ˆ˜

  • my_driver_write: ์‚ฌ์šฉ์ž โ†’ ์ปค๋„ (LED ์ œ์–ด ๋ช…๋ น)
  • my_driver_read: ์ปค๋„ โ†’ ์‚ฌ์šฉ์ž (ํ•„์š” ์‹œ ์‘๋‹ต)
  • copy_from_user, copy_to_user ํ•จ์ˆ˜ ์‚ฌ์šฉ

โ›“๏ธ ๋ชจ๋“ˆ ๋‚ด๋ถ€ ๋กœ์ง

๐Ÿ“Œ ์ธํ„ฐ๋ŸฝํŠธ ๊ธฐ๋ฐ˜ ํ๋ฆ„

  • request_irq() ๋กœ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋“ฑ๋ก
  • irq_handler()์—์„œ ๋ชจ๋“œ ํ”Œ๋ž˜๊ทธ์— ๋”ฐ๋ผ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ
  • Mode 3์ด ์ผœ์ ธ์žˆ์„ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ๋ชจ๋“œ ์‹คํ–‰์€ ์ œํ•œ๋˜๊ณ  LED ์ง์ ‘ ์ œ์–ด๋งŒ ํ—ˆ์šฉ

๐Ÿ”€ ๋ชจ๋“œ๋ณ„ ๋™์ž‘ ์š”์•ฝ

๐ŸŸข Mode 1 - ์ „์ฒด LED ์ ๋ฉธ

  • IRQ ๋ฐœ์ƒ ์‹œ module_led_mode_1() ํ˜ธ์ถœ
  • ํƒ€์ด๋จธ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  LED๋ฅผ 2์ดˆ๋งˆ๋‹ค On/Off ๋ฐ˜๋ณต

๐ŸŸก Mode 2 - ๊ฐœ๋ณ„ LED ์ˆœ์ฐจ ์ ๋ฉธ

  • module_led_mode_2() ํ˜ธ์ถœ ํ›„ ํƒ€์ด๋จธ๋กœ ์ˆœ์ฐจ ์ ๋“ฑ
  • ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋ฅผ ์ˆœํ™˜ํ•˜๋ฉฐ LED๋ฅผ ํ•˜๋‚˜์”ฉ ์ ๋ฉธ

๐Ÿ”ต Mode 3 - ์ˆ˜๋™ ์ œ์–ด

  • module_led_mode_3() ์‹คํ–‰ ํ›„, ๊ฐ ์Šค์œ„์น˜๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„ LED On/Off
  • ๋น„ํŠธ ์—ฐ์‚ฐ์„ ํ†ตํ•ด LED ์ƒํƒœ๋ฅผ ํ† ๊ธ€ (XOR ์—ฐ์‚ฐ ์‚ฌ์šฉ)

๐Ÿ”ด Mode 4 - ๋ฆฌ์…‹

  • ๋ชจ๋“  ๋ชจ๋“œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  LED ์ƒํƒœ๋ฅผ OFF
  • ๋‹ค๋ฅธ ๋ชจ๋“œ๋กœ ์ „ํ™˜ ๊ฐ€๋Šฅํ•˜๋„๋ก ์‹œ์Šคํ…œ ๋ฆฌ์…‹

๐Ÿงน ๊ฐœ์„  ํฌ์ธํŠธ

  • ํ”Œ๋ž˜๊ทธ ๋ณ€์ˆ˜ ๊ฐ„ ์ค‘๋ณต ๋ฐ ๋ณต์žก๋„ ์ฆ๊ฐ€
  • ๋ฆฌ์…‹ ํ•จ์ˆ˜ ์ตœ์ ํ™” ๋ฐ ํ”Œ๋ž˜๊ทธ ํ†ตํ•ฉ ํ•„์š”

๐Ÿ‘จโ€๐Ÿ”ง ์ œ์ž‘์ž

์ด๋ฆ„ ์—ญํ• 
๋ฐ•์ค€ํ˜• ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„ / ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„
์ด์ •๊ทผ ๋ชจ๋“ˆ ๋กœ์ง ์„ค๊ณ„ / ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ / LED ์ œ์–ด

Popular repositories Loading

  1. TermProject TermProject Public

    C

  2. .github .github Public

Repositories

Showing 2 of 2 repositories

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ