티스토리 뷰
말은 gpio를 사용해서 외부 모듈을 제어할 수 있다고는 하지만 실제로 코드를 짜보라면 뭘보고 참고를 해야 될지 모르겠다.
찾아보니까 몇몇 대표적인 하드웨어(led, keyboard, mouse 등...)를 gpio를 이용해서 제어하는 코드들이 이미 kernel source안에 다 포함되어 있다. 감이 안잡히는 사람은 이 코드들을 참고하면 좋을거 같다.
- leds-gpio : drivers/leds/leds-gpio.c
(LED sysfs interface를 제공해서 특정 GPIO Line에 연결된 LED를 제어할 수 있음)
- ledtrig-gpio : drivers/leds/trigger/ledtrig-gpio.c
(GPIO를 통해서 LED를 trigger하고 싶은 경우(?? 아마 level trigger냐 edge trigger냐를 결정하는 요소인거 같다.)
- gpio-keys : drivers/input/keyboard/gpio_keys.c
(GPIO를 이용해서 keyboard 입력과 관련한 interrupt를 제어할 수 있는 코드. Debounce handling도 가능)
- gpio-keys-polled : drivers/input/keyboard/gpio_keys_polled.c
(keyboard와 연결된 GPIO를 통해서 interrupt를 제어할 수 없는 경우 polling 방식을 통해서 감지함)
- gpio-mouse : drivers/input/mouse/gpio_mouse.c
(삼버튼 방식의 마우스를 GPIO를 통해서 제어하는데 사용)
- gpio-beeper : drivers/input/misc/gpio-beeper.c
(GPIO와 연결된 외부 스피커를 통해서 소리를 냄)
- gpio-tilt-polled : drivers/input/misc/gpio_tilt_polled.c
(GPIO를 통해서 기울기를 polling 방식을 통해서 감지)
- extcon-gpio : drivers/extcon/extcon-gpio.c
(말그대로 external connector를 감지)
- restart-gpio : drivers/power/gpio-restart.c
(GPIO를 통해서 restart/reboot을 하는 경우 해당 syscall 호출)
- poweroff-gpio : drivers/power/gpio-poweroff.c
(GPIO를 통해서 power off/shutdown 을 하는 경우 해당 syscall 호출)
- gpio-gate-clock : drivers/clk/clk-gpio-gate.c
(Clock generator의 동작 제어)
- i2c-gpio : drivers/i2c/busses/i2c-gpio.c
(i2c interface를 가진 외부 하드웨어를 두개의 GPIO를 통해서 제어함)
- spi-gpio : drivers/spi/spi-gpio.c
(Serial Peripheral Interface bus를 제어함 - SPI 규격에 따라서 이를 제어할 수 있는 GPIO Line이 여러개 필요하다.)
- w1-gpio : drivers/w1/masters/w1-gpio.c
(One-wire interface bus를 제어함)
- gpio-fan : drivers/hwmon/gpio-fan.c
(GPIO를 통해서 fan을 제어할 수 있음. 이때 sysfs interface를 거침)
- gpio-regulator : drivers/regulator/gpio-regulator.c
(GPIO를 통해서 voltage regulator의 동작을 제어해 공급 전압을 조절할 수 있음.)
- gpio-wdt : drivers/watchdog/gpio_wdt.c
(Watchdog timer를 GPIO에 붙임 - 이를 통해서 주기적으로 GPIO에 신호를 줄 수 있음(documentation에서는 이걸 "ping"이라고 하는 거 같다.))
- gpio-nand : drivers/mtd/nand/gpio.c
(몇가지 GPIO Line을 통해서 NAND Flash chip을 제어)
잘 보면 대부분의 기능이 뭔가를 제어하는데 쓰이고 있는 것을 알 수 있다. 여기 소개된 것 이외에도 참고할 만한 GPIO Subsystem Driver들은 많다.
'Study > Linux' 카테고리의 다른 글
[Linux] SysVinit runlevel (0) | 2016.04.22 |
---|---|
[Linux] init process (0) | 2016.04.21 |
[Bootloader] u-boot 로 qspi booting시 확인 사항 (zc706기준) (0) | 2015.12.16 |
[Linux] GPIO Descriptor Driver Interface (0) | 2015.10.12 |
[Linux] GPIO Descriptor Consumer Interface (0) | 2015.10.12 |
[Linux] GPIO interface (0) | 2015.10.12 |
[Linux] Booting Sequence (0) | 2014.08.03 |
- Total
- Today
- Yesterday
- DepthStream
- ai
- 강화학습
- Expression Blend 4
- Variance
- 파이썬
- SketchFlow
- RL
- Kinect SDK
- Pipeline
- 딥러닝
- PowerPoint
- windows 8
- Distribution
- Windows Phone 7
- dynamic programming
- Policy Gradient
- reward
- Kinect
- End-To-End
- Off-policy
- processing
- 한빛미디어
- arduino
- ColorStream
- Kinect for windows
- Gan
- bias
- TensorFlow Lite
- Offline RL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |