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就可以拉,如果谁有知道更好地方法,请告知一下。

  • 相关阅读:
    sqlserver 库服务器导数据
    C# 关于X86/X64/AnyCpu 的关系
    VisualStudio相关序列号
    超级搜索术
    ffmypeg 视频处理类库使用方法
    远程桌面连接
    关于VS2013调试IIS应用源代码时无法进入断点的问题总结
    C#访问修饰符(public,private,protected,internal,sealed,abstract)
    MySQL结构相关
    性能瓶颈定位分析
  • 原文地址:https://www.cnblogs.com/cainiaoaixuexi/p/3679487.html
Copyright © 2011-2022 走看看