当前位置:  技术问答>linux和unix

设备驱动编译无措,加载insmod不上(无错误提示)

    来源: 互联网  发布时间:2017-03-16

    本文导语:  #include  #include  #include  #include  #include  #include  #include  #include  #define TEST_MAJOR 250 #define TEST_NAME "test" struct cdev test_dev; static ssize_t test_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos) {   return 0...

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define TEST_MAJOR 250
#define TEST_NAME "test"

struct cdev test_dev;


static ssize_t test_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
{
  return 0;
}


static ssize_t test_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos)
{
  return 0;
}


static long test_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
  printk("it's my first char!!!!!n");
  return 0;
}

struct file_operations test_fops=
{
  .owner = THIS_MODULE,
  .read = test_read,
  .write = test_write,
  .unlocked_ioctl = test_ioctl,
};


static int test_init(void)
{
  int ret;
  cdev_init(&test_dev, &test_fops);
  register_chrdev_region(TEST_MAJOR, 1, TEST_NAME);
  ret = cdev_add(&test_dev, TEST_MAJOR, 1);
  printk(KERN_INFO"hello word entern");
  return 0;
}


static void test_exit(void)
{
  unregister_chrdev_region(TEST_MAJOR, 1);
  cdev_del(&test_dev);
  printk(KERN_INFO"hello word exitn");
}

module_init(test_init);
module_exit(test_exit);

MODULE_LICENSE("GPL");


附应用层代码:
#include 
#include 
#include    
#include    
#include   
#include 

int main()
{
  int test_fd;
   
  test_fd = open("/dev/test", O_RDONLY);
  if(test_fd != 0)
  {
  printf("open the dev is err!n");
  return 0;
  }
  ioctl(test_fd, 5, 5);

  return 0;
}

|
register_chrdev_region(TEST_MAJOR, 1, TEST_NAME);
这句有问题,注册的设备号错误

register_chrdev_region的第一个参数dev_t应当是使用MKDEV宏生成的,而不是直接传主设备号 

所以应该是
dev_t dev = MKDEV(TEST_MAJOR, 0)
register_chrdev_region(dev, 1, TEST_NAME);

MKDEV宏定义参见内核
#define MKDEV(ma,mi) (((ma) 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • 字符设备驱动,混杂设备驱动,总线、设备、驱动模型、平台驱动
  • Linux设备驱动(第三版)- 字符设备驱动 - 例子
  • 各位设备驱动开发的朋友,请问,linux设备驱动开发和网络编程开发哪一样工资比较高呀?
  • -------------- 请问大家,做好一个PCI设备驱动了,如何做个应用程序来使用这个驱动呢??
  • 字符型设备驱动生成的块设备
  • 有谁能告诉我USB设备驱动和USB gadget驱动究竟有什么不同么?
  • Linux下写了一个字符设备驱动,找不到设备文件在哪个目录
  • 设备驱动,到底驱动了哪个硬件设备?
  • 关于platform平台设备驱动操作的问题
  • 请教用户空间编写设备驱动
  • 关于设备操作的一点迷惑:计算机如何知道驱动程序要操作的设备正好是指定的设备?
  • 请教Linux设备驱动的具体应用(基于PC)
  • 请教!linux设备驱动
  • 关于:设备驱动的提问
  • linux USB从口设备驱动问题
  • Linux设备驱动程序开发
  • linux上的USB从设备驱动!
  • 内核模块和设备驱动的区别?
  • 想试着编写简单驱动玩,但是手头上没有什么好驱动的设备,大家支招
  • 跪求linux下usb音视频设备驱动


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3