机器人车技术开发分享网
编写第一个linux驱动程序
  • 首页 > Linux
  • 作者:小v
  • 2016年11月7日 15:51 星期一
  • 浏览:1785
  • 字号:
  • 评论:1
  • 和大多数初学者一样,都是从helloword入手,关键是熟悉这个流程


    首先介绍我的环境,Ubuntu14   64win10主机。linux内核 为3.16.0-73-generic。可使用uname -r 指令查看。编译的内核版本为linux2.6.32

    思路

    这里是动态加载,也就时生成module.ko文件,然后手动加载进内核。

    首先将你的驱动配好MakefileKconfig

    然后将这两个关联到drivers下的makefileKconfig。这样才会出现到menuconfig的界面上。

    然后在linux核源码下,将友善之臂的源码.config拷贝到当前.config.然后make menuconfig

    。然后make zImage. make modules.或者直接make

    如果使用make mrproper了,要重新配置.config。直接从官方下载的linux源码会出错,建议用厂商的,比如我用的是友善之臂的。

    如果用make clean,则不用make mrproper。比如 在你的驱动路径下新键一个驱动程序,同时只要在同目录下配好makefileKconfig就可以。然后回到linux内核源码linux2.6.32的路径下使用make clean 清除以前生成的 (不清除.config.o等各类连接文件。然后使用make menuconfig  会将最新的配置写到.config里边去,然后退出时保存,直接make即可生成新的驱动文件。

     

    我在/home/user/下 新建了一个文件夹用来存放内核, 使用指令 mkdir kernel

    将下载的内核文件夹放到此处,并使用 tar  xvzf 解压此文件夹。解压完后生成文件夹

    linux-2.6.32.2/   cd  进入路径。在drivers下 新建自己的驱动文件夹,mydriver,在其文件夹下需要一个hello.c这是个驱动文件。

    Hello.c

    /*************************************************************************

    > File Name: test.c

    > Author: yuhs

    > Mail: @qq.com

    > Created Time: 20161021日 星期五 190809

     ************************************************************************/

     

    /* hello.c */

    #include <linux/kernel.h>

    #include <linux/init.h>

    #include <linux/module.h>

    MODULE_LICENSE("leo BSD/GPL");

    static int hello_init(void)

    {

        printk(KERN_ALERT "Hello, world\n");

        return 0;

    }

    static void hello_exit(void)

    {

        printk(KERN_ALERT "Goodbye, Hello world\n");

    }

    module_init(hello_init);

    module_exit(hello_exit);

     

    另外要准备一个Makefile  Kconfig,这两个是编译的连接文件,在menuconfig时会观察到,。

    Makefile  如下

    #

    # Makefile

    #

    FONTMAPFILE = cp437.uni

    obj-$(CONFIG_HELLO) += hello.o

    obi-$(CONFIG_HELLO_MODUE) +=hello_modue.o

     

     

    Kconfig  如下

     

    #

    # my driver test configuration

    #

     

     

    config HELLO

    tristate "my_driver_test"

    default m

    help

    this is my driver test

     

    menu "hello_modue"

    comment "hello_modue"

    config HELLO_MODUE

    tristate "hello_modue_test"

    default m  

    endmenu

     

    然后在drivers的目录下 分别打开Makefile Kconfig并加入刚才的驱动。

    QQ图片20161107155541.png


    makefile 如下


    QQ图片20161107155602.png


      您阅读这篇文章共花了:  
     本文无需标签!
    二维码加载中...
    本文作者:小v      文章标题: 编写第一个linux驱动程序
    本文地址:http://blog.cvosrobot.com/?post=268
    版权声明:若无注明,本文皆为“机器人车技术开发分享网”原创,转载请保留文章出处。

    今天又重新走了一遍驱动的流程,我们在宿主机也就是Ubuntu的pc机下使用交叉编译环境,即使宿主机的环境为linux3.6,而我们的目标机开发板的内核为2.6也没问题,我们可以在宿主机上开辟一个文件夹,然后下载和目标开发板的内核一模一样的内核,编译一次即可。然后编译驱动时在makefile里指明内核路径就行了
    返回顶部| 首页| 手气不错| 捐赠支持| 自定义链接| 自定义链接| 自定义链接| 手机版本|后花园

    Copyright © 2014-2017 机器人车技术开发分享网   京ICP备14059411 Copyright 2014-2019 小v工作室 版权所有 All Rights Reserved

    sitemap