도와주세요!!
글 수 15,339
2009.04.08 11:14:27 (*.15.121.80)
27128
QT-2.3.7 어플리케이션에서 동작되는 PC키보드 처럼 일반적인 키보드 입력장치를 만들려고 하는데요... 하드웨어는 GPGF(0~3:out,4~7:in)에 4x4행렬로 16개의 키를 꾸몄습니다..커널-2.6.21안에 있는
1.GPIO드라이버(drivers/input/keyboard/gpio_key.c)를 사용해도 될까요? GPIO 레지스터 셋팅해주는 부분이 어딨는지요?
2.QT커널에서 키를 인식하려면 처리과정이 어떤식으로 해야 되는지?.
3.소스안에 보면 키를 인터럽트로 처리했던데요,4x4(16개)면 QT어플리케이션에서 키스캔으로 해야 할거 같은데요?
4.램디스크 이미지에 "mknod input/gpio-keys c 194 0" 이런식으로 드라이버를 추가 하려는데요...아래 "gpio-keys/input0"는 뭐죠?
<gpio_key.c>
static irqreturn_t gpio_keys_isr(int irq, void *dev_id)<==16개면 키가 많아서 주기적으로 키스캔해야할거 같은데요?
{
.........
if (irq == gpio_to_irq(gpio)) {
input_report_key(input, pdata->buttons[i].keycode, state);<==이함수안에 키코드를 입력해야 커널을 통해 어플로 연결되나보죠 ?
...........
}
struct platform_driver gpio_keys_device_driver = {
.probe = gpio_keys_probe,
.remove = __devexit_p(gpio_keys_remove),
.driver = {
.name = "gpio-keys", <==이게 드라이버명 ?
}
};
static int __devinit gpio_keys_probe(struct platform_device *pdev)
{
................
input->evbit[0] = BIT(EV_KEY);
input->name = pdev->name;
input->phys = "gpio-keys/input0"; <== 이게 경로및 드라이버명? 햇갈리네요
input->cdev.dev = &pdev->dev;
input->private = pdata;
....................
}
1.GPIO드라이버(drivers/input/keyboard/gpio_key.c)를 사용해도 될까요? GPIO 레지스터 셋팅해주는 부분이 어딨는지요?
2.QT커널에서 키를 인식하려면 처리과정이 어떤식으로 해야 되는지?.
3.소스안에 보면 키를 인터럽트로 처리했던데요,4x4(16개)면 QT어플리케이션에서 키스캔으로 해야 할거 같은데요?
4.램디스크 이미지에 "mknod input/gpio-keys c 194 0" 이런식으로 드라이버를 추가 하려는데요...아래 "gpio-keys/input0"는 뭐죠?
<gpio_key.c>
static irqreturn_t gpio_keys_isr(int irq, void *dev_id)<==16개면 키가 많아서 주기적으로 키스캔해야할거 같은데요?
{
.........
if (irq == gpio_to_irq(gpio)) {
input_report_key(input, pdata->buttons[i].keycode, state);<==이함수안에 키코드를 입력해야 커널을 통해 어플로 연결되나보죠 ?
...........
}
struct platform_driver gpio_keys_device_driver = {
.probe = gpio_keys_probe,
.remove = __devexit_p(gpio_keys_remove),
.driver = {
.name = "gpio-keys", <==이게 드라이버명 ?
}
};
static int __devinit gpio_keys_probe(struct platform_device *pdev)
{
................
input->evbit[0] = BIT(EV_KEY);
input->name = pdev->name;
input->phys = "gpio-keys/input0"; <== 이게 경로및 드라이버명? 햇갈리네요
input->cdev.dev = &pdev->dev;
input->private = pdata;
....................
}