• 第四次实验报告


    北京电子科技学院(BESTI)

                 

    课程:信息安全系统设计基础                班级:1352

    成员:20135224陈实 20135226黄坤

    成绩:             指导教师:娄嘉鹏         

    必修/选修:必修        实验序号:4

    实验名称:  实验四外设驱动程序设计                       

    实验目的与要求:                                                        

        1 掌握实时系统应用和驱动程序的编写;                    

        2选择某个接口电路(串口、LED、LCD、USB...);                                                                                                                                           

        3、平台可选择WindowsLinux                                                       

    实验仪器:

    名称

    型号

    数量

    台式机

    lenovo

    1

    Arm开发板

     

    1

     

     

    实验内容与步骤:

    在ARM开发平台下,选择某个进行接口电路驱动程序设计。

    (一)

    1、阅读理解源码

       进入expasic3_tty目录,使用vi编辑器或者其他编辑器阅读理解源代码。

    2、编译应用程序

       运行make产生term可执行文件

                           

    3、下载调试

       到超级终端窗口,使用NFS mount开发主机的/arm2410cl到/host目录。进入expasic3_tty目录,运行term,观察运行结果的正确性。

     

    (二)

    1、阅读和理解源代码

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

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

       上面介绍了在Makefile中有两种编译方法,可以在本机上使用gcc也可以使用交叉编译器进行编译,这里用交叉编译器进行编译的结果。

    3、测试驱动程序

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

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

     

    在驱动模块成功插入后,会在/dev下面建立一个叫做demo的设备文件,我们也可以使用cat命令来直接调用read函数,来测试读过程。

     

     实验中遇到的问题与解决方法:

    (1)遇到问题:使用Makefile文件编译未能成功,提示头文件中的函数出错。

          解决方案:根据错误解释,应该是在Makefile路径未找到头文件中的库函数,于是在Redhat系统中找到存放内核头文件的路径,将其替换掉原先在Makefile文件中的路径,在执行make命令编译,成功。

    (2)遇到问题:在编译测试文件test_demo.c时,使用gcc编译不成功, 使用armv4l-unknown-linux-gcc编译也不成功。

          解决方案:在使用gcc编译时未建立设备节点,建立结点后编译成功,但是不知道为何使用armv4l-unknown-linux-gcc编译不成功。

    实验体会

        这次的Linux实验前期基本步骤同实验一、二相似,都是在配置实验箱的基础上进行的,因为有做实验一、二积累的经验,而且这次运气很好选了一台好用的电脑,这次配置很顺利,按实验指导书步骤一步一步来做,期间出现了指导书中提示的问题,按指导书来操作很快就解决了。在以后遇到问题的时候,不要急于寻求帮助,先自己多想一想,尝试着解决问题,往往就能解决。这次实验让我们小组配置实验箱,在超级终端中运行调试程序等操作中更加灵活、熟悉,受益匪浅。

  • 相关阅读:
    python正则表达式
    正则表达式
    python装饰器
    冒泡排序算法与递归
    C语言typedef定义结构体数组,下面这段代码是什么意思?
    链表实现的简单循环队列
    数组实现的简单循环队列
    悬空指针
    NULL代表什么
    Unity学习——Network Transform和 Network Transform Child组件
  • 原文地址:https://www.cnblogs.com/chuishi/p/5023909.html
Copyright © 2020-2023  润新知