• 将驱动编译进Linux内核


    核心配置文件

    • .config:该文件位于Linux内核源代码顶层目录,为隐藏文件。用于配置Linux内核中的模块。在.config文件中可以对Linux驱动进行三方面的配置:编译成驱动模块文件、编译进内核和从内核去除。可以手工修改,也可以使用make menuconifg命令用菜单方式进行配置。
    • Kconifg:该文件主要用于定义make menuconifg命令的显示的菜单,除此之外,Kconifg文件还可以导入位于其他目录的Kconifg文件。make命令通过Kconfig文件的递归引用,可以找到Linux内核中的所有Kconfig文件,从而建立一个完整的配置菜单。
    • Makefile:一般与Kconfig同时出现。每有一个Kconfig文件,就必须有一个Makefile文件。该文件用于指定如何编译Makefile文件所在目录的源代码。

    例:由于word_count属于字符驱动,所以可以使用如下步骤加入Linux内核源代码树

    第1步:将word_count.c文件放入Linux内核源代码

    将word_count.c文件放入< Linux内核目录 >/driver/char目录中。

    第2步,修改Kconfig文件

    打开/root/kernel/goldfish/driver/char/Kconifg 文件,找到endmenu,在endmenu前面添加如下代码。

    conifg WORD_COUNT
        bool "word_count driver"
        help
            this is a word count driver. It can get a word count from /dev/wordcount
    

    每一个具体的模块都会对应一个Shell变量来保存该模块的3个编译行为(生成.ko文件、编译进内核或从内核中去除)。conifg后面的字符串将作为Shell变量名的后半部分,前半部分是CONFIG_(所以是CONIFG_WORD_COUNT),该值会保存在.config中。

    第3步,修改Makefile文件

    打开/root/goldfish/drivers/char/Makefile文件。在任意位置插入如下内容

    obj-$(CONFIG_WORD_COUNT)    += word_count.o
    

    obj-后面使用了第2步产生的CONFIG_WORD_COUNT变量,而不是使用固定的值。make命令在编译Linux内核时会将该变量替换成相应的值.

    第4步,设置.config文件

    .config可以通过手工配置,也可以通过make menuconfig在菜单中进行配置。这里采用菜单配置的方法。进入内核顶层目录,执行make menuconfig显示配置菜单,并进入“Device” > “Character devices”子菜单,找到“wordcountdriver”菜单项,按空格将该菜单项前设置成星号(*)。然后退出并保存。

    第5步,编译Linux内核

    使用make命令进行编译。

    编译之后的/dev/word_count可能没有读写权限。如果要改动/dev/一些设备的权限,可以把chmod 777写在init.rc文件中。但是要注意写的位置,不能太早执行,不能写在early-init段内,因为那时/dev/的设备节点还没有被创建。

  • 相关阅读:
    yolo2 anchor选择校招总结
    rfcn校招总结
    cascade rcnn
    sort论文和代码解读
    重要的观点
    代办项
    stixel上边缘
    resnet densenet
    最小二乘法和线性回归
    逻辑回归原理
  • 原文地址:https://www.cnblogs.com/dddlion/p/3310787.html
Copyright © 2020-2023  润新知