《信息安全系统设计基础》实验过程中遇到的问题以及解决方案

13级《信息安全系统设计基础》实验过程中遇到的问题以及解决方案

实验过程中遇到的问题以及解决方案汇总

实验一

  1. (1)、arm开发板的信息一开始并没有直接显示在超级终端的窗口上,重新启动一下arm的开关就恢复正常了

    (2)、在修改xp与虚拟机的ip时刚开始错把虚拟机的ip地址都设置在了不一样的网段,认真看了指导书改了过来

    (3)、设置环境变量的时候把armv4l错输成arm4l导致无法进行,1和l太像了傻傻分不清楚。

  2. 在启动实验平台后,始终没有arm机的信息出现在超级终端的窗口中。
    解决:串口线插错位置,从标号1更改插入标号0。

  3. 在超级终端运行hello可执行文件时,无法显示结果。
    解决:检查后发现并没有进入到hello文件所在的目录下,hello文件是被挂载到host文件夹下的,于是先输入命令cd /host,再输入./hello,文件运行成功。

  4. 超级终端问题及解决方案:
    插上实验箱后超级终端显示有另一个通讯在运行。
    解决方法:注销一下。

  5. 在进行文件共享的时候,不能再虚拟机里解压文件,没有文件的访问权限。
    解决办法:在进入虚拟机用户的时候,用户名输入root,密码123456,将会获得共享文件夹里的文件访问权限,然后在虚拟机里的终端里输入解压指令即可获得相对应的文件进行试验。

  6. 交叉编译问题及解决方案
    我们一直很顺利的进行到最后一步,然而无法挂载,我重新检查了一遍实验步骤,发现还是没有明确实验箱、虚拟机Redhat、WinXP三者之间IP一定要在同一网段,但不能相同,第一次我把虚拟机与XP之间的IP设置成相同了,更改后就能正常挂载了。

  7. 问题:armv4l-unknown-linux的含义是什么?与"gcc hello.c –o hello"有什么联系?
    解决方法:armv4l-unknown-linux:这是交叉编译器(arm-linux-gcc)编译命令,用于开发板的程序编译。(交叉编译器用于以下情况:目的平台上不允许或不能够安装我们需要的编译器;目的平台上的资源贫乏,无法运行我们所需要编译器;目的平台还没有建立,没有操作系统)
    gcc hello.c –o hello:平时在Linux系统中对C程序的编译使用的是主机编译,命令为gcc hello.c 即可。

  8. 问题:在超级终端中将共享文件夹挂载好后,建立开发板与虚拟机之间的通讯时,输入了“mount -t nfs -o nolock 192.168.0.234:/root/bc /host”命令发现在超级终端中运行 hello 可执行文件失败
    解决方法:在超级终端中运行失败后,我们分析可能出现的问题是可执行文件不在root/bc目录下,于是我们查找该目录,发现该目录不存在。然后我们用了ls查找了hello的可执行文件,发现了它在home/bc下,最后运行成功

  9. 在把所需文件夹压缩拷贝到共享文件夹bc之后,进入虚拟机,在命令行输入./install.sh配置编译环境失败。显示install.sh not found。
    解决方法:我们进入到文件夹中查看文件到底是否存在,发现解压后的文件夹armv4l-tools里面还有一个armv4l-tools文件夹,所以需要进入两次文件夹才能够找到install.sh。我们输入两次cd armv4l-tools后就成功了。

  10. 在超级终端中将共享文件夹挂载好后,建立开发板与虚拟机之间的通讯时,输入了“mount -t nfs -o nolock 192.168.0.234:/root/bc /host”命令发现在超级终端中运行 hello 可执行文件失败,显示not found。
    解决方法:用ls查看了一下,没有生成hello.o文件,而是默认的执行文件名a.out,于是我们执行a.out,运行成功。

  11. 在建立超级终端于试验箱连接时,迟迟得不到试验箱的反馈

操作步骤的顺序颠倒了,现进行了arm终端的配置后进行的开发板的连接,导致开发板通电后才有正常反馈。

实验二

  1. 找不到文件
  • 文件夹压缩拷贝到共享文件夹bc之后,进入虚拟机,在命令行输入./install.sh配置编译环境失败。显示install.sh not found。

  • 我们打开的命令行所在的是系统默认位置,应该进入bc再输入命令。

  1. 执行./term错误
    图片1:
  • 在 Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下, 因为开发板中没有ttyS0这个设备, 所以我们要建立一个连接。

  • 首先在超级终端中进入/dev文件夹中。

  • 输入命令“ln –sf /dev/tts/0 /dev/ttyS0”
    图片2:

  • 注意中间的空格。

  1. 点击Debug,进行加载时总是提示关于驱动的错误(很遗憾这个错误让我们很着急,一急之下忘记了截图)
    解决:在打开AXD软件加载前,先把Uarmjtag点击,再次进行初始化配置,之后迅速点击AXD的加载键。首先,由于我们反复操作这些步骤,没有操作上的失误,其次,提示驱动错误,所以在不经意间(就快要放弃时)进行了上述操作,突然加载成功了(激动~~~)!!!

  2. 在超级终端运行term时出现错误
    在 Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下,开发板中没有ttyS0设备导致出现问题,于是我们在超级终端进入了/dev文件夹后输入:ln –sf /dev/tts/0 ttyS0后建立了开发板和超级终端的连接,最终解决了问题。

  3. 找不到文件
    文件夹压缩拷贝到共享文件夹bc之后,在虚拟机命令行中输入./install.sh显示install.sh not found,配置失败。
    命令行默认文件夹为主目录,应该进入bc再输入命令。注意空格。

  4. 遇到的问题是最后无法输出结果,解决方法是输入命令“ln –sf /dev/tts/0 /dev/ttyS0” 注意空格有些是两个。

  5. 一开始超级终端一直被占用
    解决方法:重启后即可使用

  6. 实验二在实验一环境搭建下进行得很顺利,直到最后一步,一直不成功,应该是没有输入正确命令,要严格到每一个空格,大小写完全相同,后来尝试了几遍后终于成功了。
    经过查阅资料,我明白:串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为 那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0), (4,1)等,分别对应于DOS系统下的COM1、COM2等。
    若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如, 在命令行提示符下键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。

  7. 编译多线程代码时,出现问题(忘截图了)
    解决:检查发现:将[/dev] ln –sf /dev/tts/0 ttyS0中的tty后面加了空格,修改之后:[/dev]rm ttys0 [/dev] ln –s tty0 ttyS0,则可继续执行。

  8. 端口设置
    在第二个实验里,运行term时出现了如下错误:
    /dev/ttyS0: No such file or directory

这个按照指导书的方法解决了:

[/mnt/yaffs] cd /dev

[/dev] ln –sf /dev/tts/0 ttyS0

这是因为在 Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 而在开发板中串口设备位于/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接。

用另外一台主机连接串口2 进行收发测试时同样出现了类似的错误,需要建立如下的连接:

[/mnt/yaffs] cd /dev

[/dev] ln –sf /dev/tts/0 ttyS0

[/dev] ln –sf /dev/tts/1 ttyS1

实验三

  1. 在原来的电脑上已经有安装了ads1.2只是没有进行配置,刚开始不知道原因所以导致ads1.2无论如何因为装不上去,最后将原来安装的程序资额在之后重装一遍就可以了。

  2. 点击Debug,进行加载时总是提示关于驱动的错误(很遗憾这个错误让我们很着急,一急之下忘记了截图)
    解决:在打开AXD软件加载前,先把Uarmjtag点击,再次进行初始化配置,之后迅速点击AXD的加载键。首先,由于我们反复操作这些步骤,没有操作上的失误,其次,提示驱动错误,所以在不经意间(就快要放弃时)进行了上述操作,突然加载成功了(激动~~~)!!!

  3. 无法打印图像出来:
    解决:箱子问题,换箱子后成功打印!

  4. ADS无法安装。解决:需要在exp3文件下的00-ads1.2文件夹下点击setup.exe文件

  5. 设置成ARM9后,超级终端突然从vivi模式下变成了linux模式
    解决:咨询老师后,老师说需要我们重启解决,确实解决了该问题,但不知道是什么原因。

  6. 一直到测试那一步,第一次run,程序正常的停在了main函数那里,这是再按run,在主机上的反应和指导步骤中的一样,但是,实验箱上没有反应

  7. 一直到测试那一步,第一次run,程序正常的停在了main函数那里,这是再按run,在主机上的反应和指导步骤中的一样,但是,实验箱上没有反应
    解决:在咨询老师后,老师建议我们换一个实验箱试一下,我刚好看有一个同学卡住了, 他让我帮他调,他也一直没出现正确结果,也是和我们一样,在之前都可以,但是最后 一步,实验箱没有显示波形,于是我又在他的电脑上,重新做了一遍,最后还是出现了 同样的问题,也是走到了最后一步,波形无法显示,无奈,我只好又换了一台之前已经 成功做出来过波形的机器,我又重新开机,重做了一遍。

  8. 安装JTag驱动时,运行UArmJtag2.0.exe并没有安装驱动,只是把驱动解压,最后调试失败

    解决方案:重新添加驱动,并进行仿真调试

    具体方案如下:

  9. 加载不成功,后来发现是JTag JTag 驱动安装问题:
    解决方案:卸载了重新驱动安装
    后来重新安装也不能加载成功,在接着发现在C盘中有着几个驱动,打开使用的跟安装好的不是同一个,造成一直不能加载,想通了后来就解决了。

  10. 测试中使用make进行编译链接,结果显示错误。
    解决方法:结果出现错误的原因是选择Exp11.mcp后,用make编译链接会出现Exp11_Data文件夹,所以需要先把原有的该文件夹删除。

  11. 在将终端连接到电脑后,不能在终端管理器上看到进入vivi环境
    解决:在询问老师之后重新启动计算机,再次连接终端,在管理器上按除了回车之外的键成功进入vivi环境,进行接下来的实验。

  12. 在测试的时候没有达到指导书上截图的结果
    解决:首先按照实验指导书之前的步骤重新操作一遍,确保前面没有错误后将测试代码放在了一个没有中文字符的路径下,进行尝试,仍未得到结果,之后将文件夹中一个空白文件夹删除后,成功解决问题,得到了正确的测试结果。

  13. 安装GIVEIO驱动失败。
    解决:刚开始做得太急,没有认真看清楚要求,结果只将目录下的giveio.sys文件拷贝到c:/windows/system32/drivers下,忽略了把整个GIVEIO目录拷贝到C:\WINDOWS下,导致安装失败。将整个GIVEIO文件夹里的内容直接复制在指定的目录下后就解决了问题。

  14. 打开的目录不对,导致无法成功破解安装ADS。
    解决:重新设置安装路径,打开在00-ads1.2\Crack目录下的安装文件,重新破解安装就好了。

  15. 仿真调试时加载失败。
    解决:重新再安装 JTag 驱动两遍后终于加载成功了。

  16. 打开ARM –Flash下载程序时,弹出窗口提示没有正确安装驱动。
    解决:详细阅读UarmJtag2.0使用说明.pdf后发现JTAG驱动安装方法错误。后依据该说明,安装驱动后解决问题。

  17. 按照“03-测试文档”的操作步骤执行完第四步,即已选择需要编译的文件后,点击make,编译链接失败,没有出现4个警告和15条其他信息,反而出现编译错误。
    解决方案:04-Text文件夹中的ucos-ii未删除; 04-Text文件夹的初始路径在桌面上,而在ADS软件中编译的文件不识别中文路径。
    知错后修改:将04-Text文件夹复制到F盘根目录下,重新选择需要编译的文件并点击make进行编译链接,编译后即能出现正确的编译结果。

  18. 测试中使用make进行编译链接,结果显示9处错误。
    解决方法:结果出现错误的原因是选择Exp11.mcp后,用make编译链接会出现Exp11_Data文件夹,所以需要先把原有的该文件夹删除。但我们按照指导保证代码为英文路径,并删除了代码文件夹中Exp11_Data文件夹后仍然提示出错。经仔细检查后发现我们删除的文件夹是电脑桌面上的但是实验中打开了U盘中的。我们将U盘中代码文件夹中的Exp11_Data文件夹删除后,则编译成功。

  19. 相关软件以及驱动的安装问题
    我们使用的电脑上已经安装了ADS和JTAG,这导致我们第一次试图安装ADS的时候提示是失败的,因为电脑上已有,开始没发现是这个原因,后来发现了电脑上本来就已经安上的ADS、GIVEIO和JTAG。以防万一系统中没有添加硬件设施,所以就又手动做了一遍。

  20. JTAG驱动问题
    在帮别的同学解决问题时发现,有一种情况是JTAG已经安装了,甚至已经安装了两个或以上,依然不能正确编译。解决办法是,将所有JTAG都卸载了重新安装,这是因为在安装过程中少拷贝了一些东西或者出现差错,重新正确安装后可以解决。

  21. Exp11编译失败
    这是因为代码文件夹中有Exp11_Data文件夹,删除后即可编译成功。

  22. 安装ADS时发现其已经在电脑上,但并没有破解,不能使用。
    解决:在“开始”|“程序”中找到ADS,找到“License Installation...”选项,如下图:

    然后按照文档中给出的方法进行破解即可。

  23. 问题:超级终端打开、连接成功后进入vivi控制台,可是长时间不输入指令导致其进入linux控制台;关闭硬件设备重连却出现失败,注销电脑用户重新登录也没有使连接成功。
    解决:换了一台硬件设备没有起色,后重启计算机才再次连接上,也吸取了经验,不再过早打开vivi控制台。

  24. 相关软件以及驱动的安装问题
    我们使用的电脑上已经安装了ADS和JTAG,这导致我们第一次试图安装ADS的时候因为电脑上原有,首先需要先卸载替换成新的才可以。

  25. 在点击run后,运行程序,运行了很久,一直到不了正常状态之下,后来才发现,终端要在检测安装是否正确的时候才启动。

  26. 在将终端连接到电脑后,不能在终端管理器上看到进入vivi环境
    解决:在询问老师之后重新启动计算机,再次连接终端,在管理器上按除了回车之外的键成功进入vivi环境,进行接下来的实验。

实验四

  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. 当make出现问题时,可尝试打开makefile文件查看编译程序的所在路径是否正确,是否能够成功链接,若不能,则应该加以修改。
  4. 插入驱动模块失败如下:
    [root@zxt 01_demo]# ./test_demo
    ####DEMO device open fail####
    这个主要是因为,因为手动编译代码太为繁琐,我们选择了用make的方法,将Makefile稍微修改后就可以使用,但是我们错误的默认了make使用交叉编译,而实际上是用的gcc编译,所以缺少了设备节点的建立,补上这一步骤之后就成功了。
  5. 内核地址不正确导致调试不成功,使用命令“whereis”寻找到内核地址为:/usr/src/linux-headers-3.2.0-29-generic-pae/kernel # /lib/modules/$(shell uname -r)/build/

实验五

  1. Make编译时有一行有一行编译失败手动编译解决。
  2. 虽然将07_httpd文件中全部拷贝进了bc中,文件夹中拥有Makefile文件,但是还是无法通过make得到该文件夹中copy和httpd的可执行文件。
    解决:第一次是觉得Makefile文件中的PATH路径不对,将其改成了/home/bc/07_httpd存盘退出后发现还是无法执行,第二次我们直接使用gcc对其单步进行编译:
    armv4l-unknow-linux-gcc –E copy.c –o copy.i
    armv4l-unknow-linux-gcc –S copy.i –o copy.s
    armv4l-unknow-linux-gcc –c copy.s –o copy.o
    对于httpd的编译方式同上。
    Make——工程管理器,为了减少重复工作量,“自动编译管理器”,“自动”在于它能根据文件时间戳自动发现更新过的文件而减少编译工作量,同时它通过读入makefile文件的内容来执行大量的编译工作。用户只需要编写一次简答的编译语句就可以了,也就是说以后只要敲入make即可编译全部文件,它大大提高了实际项目的工作效率,几乎所有linux下的项目编程都需要用到它。
  3. 无法Make成功:
    修改Makefile,如下:
  4. make时出现,error127。
    解决:找到了原因,环境变量配置出现问题,是拷代码时没有将一个Rules.mak的MAK类型文件一起拷过来,导致make命令不能使用,重新配置后则正常make。
  5. make出现问题通过与其他同学交流发现仅仅为最后一个生成httpd可执行文件语句出错,则补上armv4l-unknown-linux-gcc -o httpd httpd.o copy.o –lpthread即可。
  6. 虽然将07_httpd文件中全部拷贝进了bc中,文件夹中拥有Makefile文件,但是还是无法通过make得到该文件夹中copy和httpd的可执行文件。
    解决:第一次是觉得Makefile文件中的PATH路径不对,将其改成了/home/bc/07_httpd存盘退出后发现还是无法执行,第二次我们直接使用gcc对其单步进行编译:
    armv4l-unknow-linux-gcc –E copy.c –o copy.i
    armv4l-unknow-linux-gcc –S copy.i –o copy.s
    armv4l-unknow-linux-gcc –c copy.s –o copy.o
    对于httpd的编译方式同上。
    Make——工程管理器,为了减少重复工作量,“自动编译管理器”,“自动”在于它能根据文件时间戳自动发现更新过的文件而减少编译工作量,同时它通过读入makefile文件的内容来执行大量的编译工作。用户只需要编写一次简答的编译语句就可以了,也就是说以后只要敲入make即可编译全部文件,它大大提高了实际项目的工作效率,几乎所有linux下的项目编程都需要用到它。
  7. 输入的IP地址不是ARM试验机的地址
    解决方式:更改后成功显示了。
  8. Make编译问题及解决方案
    问题:我们将07_httpd文件中全部拷贝进了bc中,文件夹中拥有Makefile文件,按照实验指导书中使用make编译时,出现错误,程序无法编译。
    解决:我们直接使用gcc手动单步编译的,与实验四相似,手动输入命令行,最终成功编译。
  9. 在将httpd服务下载到开发板上这一步骤中,挂载超级终端与共享文件建立通讯时,输入“mount -t nfs -o nolock 192.168.0.234:/root/bc /host”时,提示“No such file or directory”错误提示
    解决方法:再次查看共享文件目录,确定我们并不存在/root/home/bc这一目录,将命令行修改为“mount -t nfs -o nolock 192.168.0.234:/home/bc /host”即可解决所提示错误。
  10. 后续make问题及解决方案
    解决:刚开始我以为乱码只是显示问题,并没有影响编译结果,结果发现不能运行,因为并没有生成httpd可执行文件,然后我又手动编译了最后一行的gcc代码,就生成了httpd可执行文件,然后按照正常步骤走,运行,本机浏览器上输入ARM实验机的IP就可以看到google界面。实验就成功了。
posted @ 2016-11-06 23:58  20145222黄亚奇  阅读(550)  评论(0编辑  收藏  举报