• 20135314朱恒志-实验四


    北京电子科技学院(BESTI)

                 

    课程:密码系统设计基础                  班级:1353              

    姓名:朱恒志

    学号:20135314

    成绩:             指导教师:   娄嘉鹏    实验日期:2015.11.17

    实验密级:         预习程度:             实验时间:15:30~17:30

    仪器组次:4          必修/选修:必修    实验序号:14

    实验名称:     内核驱动设计入门-模块方式驱动实验                                                        

    实验目的与要求:  掌握使用模块方式进行驱动开发调试的过程                                                        

    实验仪器:

    名称

    型号

    数量

    Arm开发板

    UP-TECH

    1

    联想电脑

     

    1

    实验内容、步骤:

    1 、阅读和理解源代码

    进入/arm2410cl/exp/drivers/demo,使用 vi 编辑器或其他编辑器阅读理解源代码。

    2 、编译驱动模块及测试程序

    在 Makefile 中有两种编译方法, 可以在本机上使用 gcc 也可以使用交叉编译器

    进行编译,这里我们只介绍用 gcc 的结果。

    [root@zxt /]# cd /arm2410cl/exp/drivers/demo/

    [root@zxt demo]# make

    gcc -c -I.. -Wall -O -D__KERNEL__ -DMODULE -I/usr/src/linux/include demo.c -o demo.o

    demo.c:108: warning: initialization from incompatible pointer type

    gcc -c -I.. -Wall -O -D__KERNEL__ -DMODULE -I/usr/src/linux/include hello.c -o hello.o

    gcc -I.. -Wall -O -D__KERNEL__ -DMODULE -I/usr/src/linux/include -c -o test_demo.o test_demo.c

    gcc test_demo.o -o test_demo

    注意:如果编译的时候出现问题,可能是在/usr/src  下没有建立一个 linux  连接,可以使用

    下面的命令:

    [root@zxt demo]# cd /usr/src/

    [root@zxt src]# ln -sf linux-2.4.20-8 linux

    [root@zxt src]# ls

    debug linux linux-2.4 linux-2.4.20-8 redhat

    3 、测试驱动程序

    如果使用 gcc 编译的话, 需要通过下面的命令来建立设备节点, 如果使用交叉编译器的话,不需要建立设备节点。

    #mknod /dev/demo c 254 0

    首先要插入驱动模块 demo.o,然后可以用 lsmod 命令来查看模块是否已经被插入,在不使

    用该模块的时候还可以用 rmmod 命令来将模块卸载。

    [root@zxt demo]# insmod demo.o

    Warning: loading demo.o will taint the kernel: no license

    See http://www.tux.org/lkml/#export-tainted for information about tainted modules

    Module demo loaded, with warnings

    下面使用测试程序来进行测试,按照上面步骤成功后会出现下面的结果:

    [root@zxt demo]# ./test_demo

    write 32 bytes data to /dev/demo

    0: 0 1 2 3

    1: 4 5 6 7

    2: 8 9 10 11

    3: 12 13 14 15

    4: 16 17 18 19

    5: 20 21 22 23

    6: 24 25 26 27

    Beijing Universal Pioneering Technology Co.,LTD.

    236

    TEL: 010-82110740 82110741 82110742 82110743

    FAX:总机转 828

    http://www.up-tech.com

    博创科技(UP-TECH )

    7: 28 29 30 31

    *****************************************************

    Read 32 bytes data from /dev/demo

    0: 31 30 29 28

    1: 27 26 25 24

    2: 23 22 21 11

    3: 12 13 14 15

    4: 16 17 18 19

    5: 20 10 9 8

    6: 7 6 5 4

    7: 3 2 1 0

    *****************************************************

    如果模块没有成功插入的话,会出现下面的情况:

    [root@zxt demo]# ./test_demo

    ####DEMO device open fail####

    在驱动模块成功插入后,会在/dev 下面建立一个叫做 demo 的设备文件,我们也可以

    使用 cat 命令来直接调用 read 函数,来测试读过程。

    [root@zxt demo]# cat /dev/demo

    device open success!

    实验体会:

    Makefile出现错误,进入参考下面进行修改:

    KERNELDIR = /usr/src/linux

    #KERNELDIR = /arm2410cl/ kernel/linux-2.4.18-2410cl/

    INCLUDEDIR = $(KERNELDIR)/include

    #CROSS_COMPILE=armv41-unknown-linux-

  • 相关阅读:
    oracle job
    mysql与oracle之间的数据类型转换
    Oracle ORA-02069: 此操作的 global_names 参数必须设置为 TRUE
    oracle sequence 详解
    ORA-08004: 序列 SEQ_XXX.NEXTVAL exceeds MAXVALUE 无法实例化
    How to change Hostname / IP for a Grid Infrastructure Oracle Restart Standalone Configuration (SIHA) (文档 ID 1552810.1)
    oracle-1条updata的故事
    ADAPTIVE LOG FILE SYNC 引起的高Log File Sync警示
    oracle 静默创建数据库
    oracle 中文Linux安装乱码问题
  • 原文地址:https://www.cnblogs.com/20135314ZHU/p/4999218.html
Copyright © 2020-2023  润新知