驱动程序配置及编译步骤

  1、编写驱动程序:

    例如:   

      #include <linux/module.h>
      #include <linux/printk.h>

      MODULE_DESCRIPTION("Kernel module architecture"); //驱动描述
      MODULE_LICENSE("GPL");//驱动遵守的协议
      MODULE_VERSION("1.0");//驱动的版本
      MODULE_AUTHOR("GZ@1961"); //驱动的开发者


      static int __init gz1961_init(void)
      {
        //在驱动中打印信息,使用printk,int printk(const char *fmt, ...) 它跟printf类似
        //printk(KERN_INFO "gz1961_init\n"); //在执行insmod 时,该输出未显示出来,原因在于printk在使用时,有优先级设置
        //优先级要大于控制台设置的消息等级
        printk("gz1961_init\n");
        return 0;
      }

      //释放驱动中申请和注册的资源
      static void __exit gz1961_exit(void)
      {
        printk("<6>" "gz1961_exit\n");
      }

      module_init(gz1961_init);
      module_exit(gz1961_exit);

 

    2、编写makefile(注意修改路径):  

      # Makefile for the kernel gec6818_led device drivers.
      # led_module.ko
      obj-m += led_module.o

      #设置内核源码的路径和编译工具链接路径
      KERNELDIR:=/home/cheng/software/6818GEC_v3/kernel
      CROSS_COMPILE:=/home/cheng/software/6818GEC_v3//prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-

      PWD:=$(shell pwd)

      default:
        $(MAKE) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR) M=$(PWD) modules

      clean:
        rm -rf *.o *.order .*.cmd *.ko *.mod.c *.symvers *.tmp_versions

 

    3、执行编译命令:make

posted @ 2020-01-07 13:49  dcli  阅读(852)  评论(0)    收藏  举报