zoukankan      html  css  js  c++  java
  • 第一个driver~~~

    网上已经看到过n遍的linux2.6驱动hello world程序,终于忍不住要自己实现一遍了。

    在做之前就看了半天,据说是2.6的内核比用用make来编译,暂不知道为什么,先跟着做,然后动手改。

    看到别人发的hello.c和Makefile

    /* hello.c */
    #include 
    <linux/init.h>
    #include 
    <linux/module.h>
    #include 
    <linux/kernel.h>

    static int hello_init(void)
    {
                        printk(KERN_ALERT 
    "Hello, world\n");
                                        
    return 0;
    }
    static void hello_exit(void)
    {
                        printk(KERN_ALERT 
    "Goodbye, hello\n");
    }
    module_init(hello_init);
    module_exit(hello_exit);

    MODULE_LICENSE(
    "GPL");

    # Makefile2.6
    ifneq ($(KERNELRELEASE),)
    #kbuild syntax. dependency relationshsip of files and target modules are listed here.
            mymodule-objs := hello.o
            obj
    -m := hello.o
    else
            PWD :
    = $(shell pwd)
            KVER 
    ?= $(shell uname -r)
            KDIR :
    = /lib/modules/$(KVER)/build
    all:
            
    $(MAKE) -$(KDIR) M=$(PWD)
    clean:
            rm 
    -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
    endif

    执行make。。。出现了错误提示:

    /lib/modules/2.6.18-1.2798.fc6xen/build 文件或文件夹不存在

    然后执行:

    ls -l /lib/modules/2.6.18-1.2798.fc6xen/build

    看到:

    lrwxrwxrwx 1 root root 40 06-22 10:34 build -> /usr/src/kernels/2.6.18-1.2798.fc6-i686/

    不知道为什么,build到行尾一直都在闪,但是看到它只是一个软链接,看样子是什么原因链接失效了,所以,把原来的链接删了重新建了一个链接:

    cd /lib/modules/2.6.18-1.2798.fc6xen/

    rm build

    ln -s /usr/src/kernels/2.6.18-1.2798.fc6xen ./build

    然后再切换回去make。。。make ok!

    但是执行insmod hello.ko时又出现了问题:

    [root@global Character]# insmod hello.ko
    insmod: error inserting 'hello.ko': -1 Invalid module format

    通过uname -a,cat /proc/version, gcc -v...之后发现gcc,内核版本都没有问题,可奇怪死了。。。google中,呵呵~~~

    找了半天,貌似是与内核版本不一致造成的。也下不到2.6.18-1.2798.fc6xen的dev-tools,所以,我又把它拿到了fdaro8下面进行编译,一切ok~~~

    换内核是个挺麻烦的事,会牵扯到很多东西。现在是学驱动,所以,其它的先放置,选困扰最好的方式来学习,目标才最明确。

    ——————
    无论在哪里做什么,只要坚持服务、创新、创造价值,其他的东西自然都会来的。
  • 相关阅读:
    C#中抽象类和接口
    ArcGIS for Flex中引入google map作底图
    USB、UART、SPI等总线速率
    步步详解之第1节----ALTERA FPGA关于PLL的使用,帮你用光所有PLL
    FPGA笔试必会知识点2—FPGA器件
    FPGA笔试必会知识点1--数字电路基本知识
    (转)modelsim-win64-10.1c的安装
    基于FPGA的温度采集显示与报警
    基于FPGA的步进电机说明文档
    基于FPGA的直流电机
  • 原文地址:https://www.cnblogs.com/pied/p/1762748.html
Copyright © 2011-2022 走看看