gpio驱动问题 - AM57x - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2871|回复: 2
打印 上一主题 下一主题

[已解决] gpio驱动问题

[复制链接]

20

主题

47

帖子

1240

积分

金牌会员

Rank: 6Rank: 6

积分
1240
跳转到指定楼层
楼主
发表于 2019-7-25 10:18:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看着创龙的驱动教程,写了一个led的驱动,板子的led是gpio3_19,我这个哪里出了问题,想要询问一下
  1. static struct class *my_dev_class;
  2. static struct device *my_dev_class_dev;
  3. static char val;
  4. static int gpio_led_pin = 126;

  5. static int my_dev_open(struct inode *inode, struct file *file)
  6. {
  7.         return 0;
  8. }

  9. static ssize_t my_dev_write(struct file *file, const char __user *buf,
  10.                 size_t count, loff_t *offset)
  11. {
  12. #if 0
  13.         int ret;
  14.         ret = copy_from_user(&val, buf, count);
  15.         if(ret<0)
  16.         {
  17.                 printk("ret = %d \n",ret);
  18.                 return ret;
  19.         }
  20.         printk("my_dev_write\n");

  21.         return 0;
  22. #endif

  23.         int ret;
  24.         char temp[16];
  25.         char status = 0;

  26.         memset(temp,0,16);
  27.         ret = copy_from_user(temp, buf, count);
  28.         if(ret<0)
  29.         {
  30.                 printk("ret = %d \n",ret);
  31.                 status = -EFAULT;
  32.                 goto err;
  33.         }

  34.         val = simple_strtoul(temp,NULL,0);

  35.         if(val >= 1)
  36.                 gpio_set_value(gpio_led_pin,1);
  37.         else
  38.                 gpio_set_value(gpio_led_pin,0);

  39.         if(!status)
  40.                 status = count;

  41. err:
  42.         return status;
  43. }

  44. static ssize_t my_dev_read(struct file *file, char __user *buf, size_t count,
  45.                 loff_t *offset)
  46. {
  47. #if 0
  48.         int ret;
  49.         ret = copy_to_user(buf, &val, count);
  50.         if(ret<0)
  51.         {
  52.                 printk("ret  %d \n",ret);
  53.                 return ret;
  54.         }
  55.         printk("my_dev_read\n");

  56.         return 0;
  57. #endif

  58.         int ret;
  59.         char temp[16];
  60.         char status;

  61.         if(*offset>0)
  62.                 return 0;
  63.         count = sprintf(temp, "%u\n", val);
  64.         ret = copy_to_user(buf, temp, count+1);
  65.         if(ret<0)
  66.         {
  67.                 printk("ret = %d \n",ret);
  68.                 status = -EFAULT;
  69.         }
  70.         else{
  71.                 *offset += count;
  72.                 status = count;
  73.         }
  74.         return status;
  75. }

  76. static const struct file_operations my_dev_fops = {
  77.         .owner                = THIS_MODULE,
  78.         .open                = my_dev_open,
  79.         .read                = my_dev_read,
  80.         .write                = my_dev_write,
  81. };

  82. int major;
  83. static int  my_dev_init(void)
  84. {
  85.         if(gpio_request(gpio_led_pin,"gpio_led_pin") != 0)
  86.                 printk(KERN_ALERT "GPIO request err!\n");
  87.         gpio_direction_output(gpio_led_pin,1);

  88.         printk(KERN_ALERT "LED install!\n");
  89.         major = register_chrdev(0,"my_led_dev",&my_dev_fops);
  90.         my_dev_class = class_create(THIS_MODULE, "my_led_dev"); // /sys/class/my_dev
  91.         my_dev_class_dev = device_create(my_dev_class, NULL, MKDEV(major,0), NULL, "my_led_dev"); // /dev/my_led_dec
  92.         return 0;
  93. };

  94. static void  my_dev_exit(void)
  95. {
  96.         gpio_free(gpio_led_pin);

  97.         device_unregister(my_dev_class_dev);
  98.         class_destroy(my_dev_class);
  99.         unregister_chrdev(major, "my_led_dev");
  100.         printk(KERN_ALERT "LED unstall!\n");
  101. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

20

主题

47

帖子

1240

积分

金牌会员

Rank: 6Rank: 6

积分
1240
推荐
 楼主| 发表于 2019-7-25 12:00:26 | 只看该作者
已经解决了,这块板子没有gpio0
回复 支持 1 反对 0

使用道具 举报

44

主题

368

帖子

2894

积分

创龙

Rank: 8Rank: 8

积分
2894
板凳
发表于 2019-7-25 20:10:46 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-4-26 03:22 , Processed in 0.036559 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表