zoukankan      html  css  js  c++  java
  • 小松之LINUX 驱动学习笔记(一)

    本篇主要是讲解驱动开发的基础知识以及一些环境配置方面的问题。

    下面是一个hello world的简单的模块代码,很简单。
    /**********************
    * 模块的简单例子
    * author: 小松
    * date : 2014-4-20
    ***********************/

    #include<linux/module.h>
    /*模块的入口函数,在insmod时调用*/

    static int __init my_init(void)
    {
    printk("hello world,i am xiao song ");
    return 0;
    }
    /*模块的出口函数,在rmmod时调用*/
    static void __exit my_exit(void)
    {
    printk("bye bye xiao song ");
    }
    //这是驱动程序初始化的入口点,对于内置模块,内核在引导时调用该入口点
    module_init(my_init);
    //这是驱动程序卸载的入口
    module_exit(my_exit);


    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("SYS");
    上面这个例子很简单,我相信大部分人都能看懂,如果看不懂可以谷歌一下,这里就不再赘述啦。
    下面是Makefile
    obj-m :=01.o
    KERNEL := /lib/modules/`uname -r`/build
    all:
    make -C $(KERNEL) M=`pwd` modules
    install:
    make -C $(KERNEL) M=`pwd` modules_install
    depmod -A
    clean:
    make -C $(KERNEL) M=`pwd` clean
    rm -f *.*~
    这个很简单,网上有很多的资料,不明白的自己问谷歌吧。下面有源码,自己可以编译下
    我的系统是ubuntu14.04,我编译的时候一直都是3.13那个内核树,我想编译3.08那个,可是一直没有成功,后来,我把
    KERNEL := /lib/modules/`uname -r`/build改成KERNEL := /lib/modules/3.0.8-FriendlyARM/build就可以拉,如果谁有知道更好地方法,请告知一下。

  • 相关阅读:
    题解 P3071 【[USACO13JAN]座位Seating】
    [luogu]P3398 仓鼠找sugar
    快速输入输出
    Luogu P3939 数颜色
    HEOI2016/TJOI2016 排序
    POI2011 DYN-Dynamite
    USACO17JAN Promotion Counting
    AHOI2008 聚会
    Luogu P4907 A换B problem
    网络流24题 骑士共存问题
  • 原文地址:https://www.cnblogs.com/cainiaoaixuexi/p/3679487.html
Copyright © 2011-2022 走看看