• 2018-2019-1 20165309 20165312 20165330 实验四 外设驱动程序设计


    实验目的

    • 编写最简单的字符驱动程序
    • 实现简单的读写功能,并列出常用格式的Makefile以及驱动的加载和卸载脚本
    • 熟悉字符设备驱动的整个编写流程

    实验内容及步骤

    任务一

    • 任务详情
      • 学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章
      • 提交康奈尔笔记的照片(可以多张)
    • 笔记

    任务二

    • 任务详情
      • 在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验
      • 提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息)
    • 实验步骤
      • 在VMware虚拟机中创建文件夹
      • 将第十一章中关于字符设备的test实验中代码:test_drv.ctest.cMakefiletest_drv_loadtest_drv_unload敲入并保存在文件夹内
      • 代码链接如下

        要注意在Makefile中命令换行要用Tab键进行缩进

    • 实验结果及截图
      • 编译并加载驱动模块
        • 编译:make clean;make
        • 给脚本文件增加可执行权限:chmod +x ./test_drv_load
        • 以管理员身份运行加载脚本:sudo ./test_drv_load
      • 编译并运行测试程序
        • 编译:gcc -o test test.c
        • 给文件增加可执行权限:chmod +x ./test
        • 以管理员身份运行:sudo ./test
        • 根据提示输入信息
      • image
      • 卸载驱动程序
        • 给脚本文件增加可执行权限:chmod +x ./test_drv_unload
        • 以管理员身份运行加载脚本:sudo ./test_drv_unload
        • image
      • 通过dmesg命令查看内核打印的信息
          $ dmesg|tail –n 10
           ……
          The major of the test device is 250 
          This is open operation 
          This is release operation 
          Test device uninstalled 
        

    实验过程中遇到的问题及解决办法

    • 在进行对驱动模块的编译时出现
      image

    解决办法:经过查阅才知道忽略了Makefile的语法规定:Makefile中的任何命令之前都必须要有一个tab缩进,否则make就会报错。

    • 运行load脚本出现错误insmod: error inserting './test_drv.ko': -1 File exists

    解决办法:该错误翻译为InSimd:插入“./TestEdRv.Ko”的错误:存在1个文件,将虚拟机重新启动

    • 在运行结束后再一次编译运行load输入sudo ./test_drv_unload后出错
      image

    解决办法:重启虚拟机再次运行脚本

    • 运行test时出现open:No such device or address

    解决办法:这是虚拟机未连接网络的情况,先将打开VM虚拟机-设置-网络适配器连接方式改为NAT模式,在按照Ubuntu 网络连接显示“设备未托管”解决办法设置即可联网运行test

    • 运行load脚本提示无效的组
      image

    解决办法:这说明在load脚本中的group="david"david不是当前虚拟机的组用户,可通过cat /etc/passwd查看所有的用户信息,cat /etc/group查看所有组信息`,然后将脚本中的组名改成系统中有的组名即可

    • 进行卸载驱动程序时提示错误

    暂时未找到解决办法。。

    参考资料

  • 相关阅读:
    双击快速打开.ipynb文件的方法
    关于selenium元素点击时出现“element click intercepted :“报错解决办法(亲测可用)
    centos 安装Selenium+Chrome
    最全苹果cms问题解决100
    -scrapy startproject时,报错 from cryptography.hazmat.bindings._openssl import ffi, lib的解决方法
    解决打开fiddle后不能上网
    python学习笔记 pip安装加速&&python淘宝镜像安装包
    lxml.etree类型。不能序列化ElementUnicodeResult
    最值问题
    数列的求和公式
  • 原文地址:https://www.cnblogs.com/besty-zyx/p/10033361.html
Copyright © 2020-2023  润新知