imx6嵌入式驱动入门

第一个驱动

基于迅为imx6ull

驱动包含

头文件

驱动模块的入口和出口

声明信息

功能实现

代码实现

  • 包含头文件

  • 驱动模块的入口和出口

  • 声明模块拥有开源许可

  • 功能模块

    #include <linux/init.h> //包含头文件
    #include <linux/module.h> //包含初始化加载的头文件
    static int hello_init(void)
    {
            printk("hello world \n");
            return 0; 
    }
    
    static void hello_exit(void)
    {
            printk("goodbye \n");
            return 0;
    }
    
    module_init(hello_init);
    module_exit(hello_exit);
    
    MODULE_LICENSE("GPL");
    

编译驱动

  • 把驱动编译成模块,然后使用命令把驱动加载到内核里面
  • 直接把驱动编译到内核

步骤

  • 先写makefile

    • obj-m +=demo1_helloworld.o 
       
      KDIR=/home/taqiyya/linux_/linux-imx-rel_imx_4.1.15_2.1.0_ga 
       
      PWD?=$(shell pwd) 
       
      all: 
              make -C $(KDIR) M=$(PWD) modules 
      
      ~       
      
    • 然后编译就可以了

    • 看来后面需要每天补一下makefile的语法了

  • 编译驱动

    • 内核源码先编译通过此段
    • 编译驱动用的内核源码一定要和我们开发板上运行的内核镜像是一套

用vim打开目录的时候,会发现这里有个文件打开不是空白而是一个目录的形式。

  • 加载驱动

    • insmod //加载驱动
      rmmod  //卸载驱动
      
      

实践

  • 找驱动,源码有的话使用,没有的话就自己写
    • 注意事项
      • export ARCH=arm

图形化配置

  • make menuconfig

    • 进入界面

      进入源码界面下

      执行
      $ make menuconfig
      本质是在读取ARCH/$ARCH下的Kconfig 文件

    • 界面里操作

      搜索:用斜杠 “\”进行走索
      用方向键去选择

    • 配置驱动

      • 在嵌入式开发中是要根据自己的需求去配置属于自己的驱动的,用menuconfig配置时,可以根据需要作出选择

      驱动编译成模块
      【M】
      驱动编译到内核里面
      【*】
      不编译
      【】

    • 退出

      • 下面一栏有提示

      保存退出
      不保存退出

    • 相关文件

      • linux开发中一直贯彻着一切接文件的概念,下面是配置时候用到的文件

      Makefile

      • 编译规则,make时候如何编译

      Kconfig

      • 内核配置选项,就是可以选择的目录菜单

      .config

      • 生成的配置选项,就是自己选择之后的内核
      • 内核默认读取.config文件作为配置选项
      • 不符合要求时候make menuconfiger 进行配置

      arch/arm/config下面有很多配置文件,可以直接复制成.config

    • 当保存menuconfig时候,linux会把左右的配置选项以宏定义的形式进行保存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值