zoukankan      html  css  js  c++  java
  • 简单添加自己的驱动程序到Linux内核树中

    --- title: 简单添加自己的驱动程序到Linux内核树中 date: 2020-06-22 07:50:00 categories: tags: - Linux - kernel - driver ---

    背景

    移植4g模块的时候,看到文档中有添加驱动到内核的步骤,于是趁着这个机会,展开有关的学习。

    了解更多可以访问:《Kconfig语法简介

    Target    :hi3531d

    Linux    :Linux-3.18

    有关概念:

    内核源码编译过程:

    • 从顶层目录开始,遍历每个源码目录(或配置指定的源码目录)中的Makefile;

    • 每个目录的Makefile 会根据Kconfig来定制要编译对象 回到顶层目录的Makeifle执行编译。那么,也就有:

    .config ---> (源码顶层目录下)保存选择结果
    Kconfig ---> (每个源码目录下)提供选项
    Makefile---> (每个源码目录下)根据.config中的内容来告知编译系统如何编译
    

    步骤:

    在自己喜欢的位置创建一个目录(前提是这个目录下面存在Kconfig以及Makefile)

    为了方便演示,我们这里在 drivers 目录下面创建 demo 文件夹

    进入到新建的目录下。img

    在新建的目录下创建Kconfig文件

    config DEMO
        bool "Test driver"
        help
            This is a demo for test
    

    在新建的目录下创建Makefile文件

    当CONFIG_选项名=y时,表示对应目录下的xxx.c将被编译进内核;当CONFIG_选项名=m 时对应目录下的xxx.c将被编译成模块

    Obj-$(CONFIG_DEMO) += demo.o
    

    目前的情况:

    img

    修改与新建目录同级Kconfig

    添加一行,为的是:将新建目录下的Kconfig文件添加到配置搜寻目录中

    source "drivers/demo/Kconfig"
    

    修改与新建目录同级Makefile

    添加一行,为的是使用配置项来管理是否需要编译demo目录下的代码

    obj-$(CONFIG_DEMO) += demo/
    

    目前的情况:

    img

    img

    最终的效果:

    img

  • 相关阅读:
    全卷积网络(FCN)与图像分割
    Mac下编译tesseract报错 DotProductAVX can't be used on Android
    OSTU二值化算法
    ssh的用户配置文件config管理ssh会话
    SSD: Single Shot MultiBox Detector 编译方法总结
    论文笔记——A Deep Neural Network Compression Pipeline: Pruning, Quantization, Huffman Encoding
    LeetCode——Word Break
    C#多线程编程
    impinj 编程接口
    C# 委托实例(跨窗体操作控件)
  • 原文地址:https://www.cnblogs.com/schips/p/13178792.html
Copyright © 2011-2022 走看看