Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4809
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 35
  • 用 户 组: 普通用户
  • 注册时间: 2021-12-08 15:11
文章分类
文章存档

2021年(3)

我的朋友
最近访客

分类: LINUX

2021-12-09 16:04:41

操作环境:
开发板:mini2440
CPU:(samsung)s3c2440
Linux版本:Linux-2.6.32.2

需要在linux内核配置里选上相关的配置。在内核源码目录下:

点击(此处)折叠或打开

  1. make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-

  2.     Device Drivers --->
  3.         Input device support --->
  4.             [*] Keyboards --->
  5.                 <*> GPIO Buttons

gpio_keys.h

点击(此处)折叠或打开

  1. #ifndef _GPIO_KEYS_H
  2. #define _GPIO_KEYS_H

  3. struct gpio_keys_button {
  4.     /* Configuration parameters */
  5.     int code;        /* input event code (KEY_*, SW_*) */
  6.     int gpio;
  7.     int active_low;
  8.     char *desc;
  9.     int type;        /* input event type (EV_KEY, EV_SW) */
  10.     int wakeup;        /* configure the button as a wake-up source */
  11.     int debounce_interval;    /* debounce ticks interval in msecs */
  12. };


  13. struct gpio_keys_platform_data {
  14.     struct gpio_keys_button *buttons;
  15.     int nbuttons;
  16.     unsigned int rep:1;        /* enable input subsystem auto repeat */
  17.     
  18.     const char *name; /* input device name */

  19. };

  20. #endif

mach-mini2440.c  中添加

点击(此处)折叠或打开

  1. #include
  2. #include
  3. #include
  4. #include
  5. #include
  6. /* gpio-keys */

  7. static struct gpio_keys_button s3c2440_gpio_keys_button[]=
  8. {
  9.     {KEY_1, S3C2410_GPG(0), 1, "mygpio-key1", EV_KEY, 0, 100},
  10.     {KEY_2, S3C2410_GPG(3), 1, "mygpio-key2", EV_KEY, 0, 100},
  11.     {KEY_3, S3C2410_GPG(5), 1, "mygpio-key3", EV_KEY, 0, 100},
  12.     {KEY_4, S3C2410_GPG(6), 1, "mygpio-key4", EV_KEY, 0, 100},
  13.     {KEY_5, S3C2410_GPG(7), 1, "mygpio-key5", EV_KEY, 0, 100},
  14.     {KEY_6, S3C2410_GPG(11), 1, "mygpio-key6", EV_KEY, 0, 100},
  15. };

  16. static struct gpio_keys_platform_data s3c2440_gpio_keys_data=
  17. {
  18.     .buttons=s3c2440_gpio_keys_button,
  19.     .nbuttons=ARRAY_SIZE(s3c2440_gpio_keys_button),
  20.     .rep = 1,
  21.     .name = "mygpio-keys",
  22. };

  23. static struct platform_device s3c2440_gpio_keys = {
  24.         .name = "gpio-keys",
  25.         .dev = {
  26.             .platform_data = &s3c2440_gpio_keys_data,
  27.            },

  28. };

  29. /* devices we initialise */

  30. static struct platform_device *mini2440_devices[] __initdata = {
  31.  &s3c_device_usb,
  32.  &s3c_device_rtc,
  33.  &s3c_device_lcd,
  34.  &s3c_device_wdt,
  35.  &s3c_device_i2c0,
  36.  &s3c_device_iis,
  37.  &mini2440_device_eth,
  38.  &s3c24xx_uda134x,
  39.  &s3c_device_nand,
  40.  &s3c_device_sdi,
  41.  &s3c_device_usbgadget,
  42.  &s3c2440_gpio_keys,//only add this
  43. };

重新编译内核并移植

使用hexdump命令,可以查看二进制数据。

点击(此处)折叠或打开

  1. struct input_event {
  2.     struct timeval time;    //事件发生的时间(占据8字节)
  3.     __u16 type;            //事件类型(占据2字节,比如按键类型事件,EV_KEY是1)
  4.     __u16 code;            //事件的具体类型(占据2字节,比如按键L和S他们代表的十六进制数值)
  5.     __s32 value;        //(例如松开还是按下(占据4字节,1表示按下,0表示松开))
  6. };



阅读(806) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:rtl8188安装与测试 wifi笔记

给主人留下些什么吧!~~