实验四(外设驱动程序设计)问题总结

实验四问题总结

  • 问题链接:《信息安全系统设计基础》实验四实验报告
      1. 需要修改makefile:
        #KERNELDIR = /arm2410cl/ kernel/linux-2.4.18-2410cl/
        #CROSS_COMPILE= armv4l-unknown-linux-
        由于makefile文件中KERNEL_PATH设置和真实环境有点不同,修改makefile文件中的路径就好了。
        修改后:
        KERNELDIR = /usr/src/linux
        #KERNELDIR = /arm2410cl/ kernel/linux-2.4.18-2410cl/
        INCLUDEDIR = $(KERNELDIR)/include
        #CROSS_COMPILE=armv41-unknown-linux-

      2. 在本次实验中,当实验进行当编译那一步时总是出错,无法显现出指导书上那样正确的情况。
        解决方法:在实验中,编译我们使用了make的方法。修改虚拟机中的makefie,内容如指导书。但是应该用GCC编译,补上相关语句,修改MAKEFILE即可成功。

      3. 插入驱动模块失败如下:
        [root@zxt 01_demo]# ./test_demo
        ####DEMO device open fail####
        这个主要是因为,因为手动编译代码太为繁琐,我们选择了用make的方法,将Makefile稍微修改后就可以使用,但是我们错误的默认了make使用交叉编译,而实际上是用的gcc编译,所以缺少了设备节点的建立,补上这一步骤之后就成功了。

  • 问题链接:20145231 20145205 《信息安全系统设计基础》第四次实验
    • 1、问题一:在第二次在实验室实验时配置环境出现了问题,实验箱的IP与要求的不符,经过我们将本机和虚拟机的IP改成与实验箱在同一网段(192.168.1.55以及192.168.1.234)发现不能ping通;后来才发现我们进行实验时,可能为了图快在没有完全建立超级终端(本课实验时ARM实验箱)时,就已经打开了虚拟机,这样的话在建立超级终端时可能会进行报错,内容为“超级终端:另一个程序正在使用选定的电话服务设备。请在其他程序执行完后再试一次。”。

      解决方法:最终只能换一台pc及实验箱进行实验;其实是我们先前打开的虚机占用了串口,导致串口的分配不清,进行报错,简单的解决办法是,重启一下机器(或者注销),(注意实验室内的机器重启时记得插回之前的网线,不然主控机无法给实验即分配IP地址,我们无法进入XP的实验环境),先进行超级终端的配置,之后打开虚拟机,就可以解决问题了。

      2、问题二:交叉编译器进行编译第一次输入命令出现错误(Error 1);

      解决方法:参考实验指导书

      输入命令后问题解决

      3、问题三:在使用测试程序进行测试时,多次出现device open failed提示;

      解决方法:建立设备节点,插入插件,还是显示出错,经过百度,查找到了完整的命令,成功得到实验结果。

  • 问题链接:20145328《信息安全系统设计基础》实验四 驱动程序设计
    • 编译出现问题。

      经过查看指导书,发现可能是在/usr/src 下没有建立一个linux 连接,可以使用下面的命令,解决了问题。

      [root@zxt 01_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
      对于ln指令:

      ln指令的用法是连接,使用格式是ln [options] source dist,这里我们用到的sf参数的含义是:

      -f:链接时先将与dist同档名的档案删除

      -s:进行软链接。(软链接,又称符号链接,这个文件包含了另一个文件的路径名,特点是可以链接不同文件系统的文件,甚至可以链接不存在的文件。)

  • 问题链接:20145304 20145315 《信息安全系统设计基础》 实验四 驱动程序设计
      • 模块没有插入成功
        解决方法:多试几次命令
      • 测试程序时,找不到文件夹或目录

      解决方法:可能是交叉编译时出现了问题,用gcc编译,建立设备节点后再尝试 插入驱动模块。

  • 问题链接:20145216 20145330 《信息安全系统设计基础》 实验四 模块方式驱动实验
    • 1、问题:忘记配置环境变量,需要将实验一armv4l文件夹要考到bc中

      • 解决方法:将armv4l文件夹拷贝到bc中再次输入相关命令

      输入命令./install.sb

      2、问题:在使用测试程序进行测试时,多次出现device open failed提示

      • 解决方法:怀疑是前面某一步骤漏输入或者命令输错,依次再次输入排除问题,再次输入insmod demo.o,发现插件已存在于是再次运行,依然失败,排除插件插入因素
      • 输入命令#mknod /dev/demo c 254 0 ,建立设备节点(因为第一次编译时根据指导书指示没有操作此步骤),进行运行发现成功。

  • 问题链接:20145224&20145238《信息安全系统设计基础》实验四

    • 1.宏变量定义armv4l-unknown-linux-gcc编译器编译驱动
      由于这个实验还是在实验一的环节下完成的,所以./install.sh需要成功,armv4l文件夹内容有些不同,在执行完这步之后要注意核对娄老师给的教学指导,之后就没什么问题了。

      2.makefile的改写如下:

      KERNELDIR = /usr/src/linux
      #KERNELDIR = /arm2410cl/ kernel/linux-2.4.18-2410cl/
      INCLUDEDIR = $(KERNELDIR)/include
      #CROSS_COMPILE=armv41-unknown-linux-

  • 问题链接:20145221高其&20145326蔡馨熠《信息安全系统设计基础》实验四 外设驱动程序设计
    • 这次的实验就一个问题,那就是修改makefile里面的内容!(根据实验指导书上的内容来改)

      如果修改之后再次编译还是不能成功。那是因为在/uer/src下没有建立一个linux连接,于是使用以下命令:

      [root@BC 01_demo]#cd /usr/src/
      [root@BC src]#ln –sf linux-2.4.20-8 linux
      [root@BC src]#ls
      

      •建立linux连接后,可以成功编译!

posted @ 2016-12-28 16:01  20145235李涛  阅读(255)  评论(0编辑  收藏  举报