实验二问题总结
- 问题链接:20145202、20145225、20145234 《信息安全系统设计基础》实验二 固件设计
- (1)超级终端问题及解决方案
问题:打开超级终端后,arm机的信息始终没有显示在超级终端的窗口中。
解决:找到了原因,是串口线接错了位置,不应该接1,改为接0后,超级终端就显示正常了。
(2)IP问题及解决方案
问题:需要把实验箱、虚拟机Redhat、WinXP的IP设置为同一网段。
解决:首先查看实验箱的IP地址,设置另外两个的地址使其处于同一网段,注意这里设置完后需重启,再重新查看各个IP地址,确保处于同一网段后才能接着做,否则后面的步骤也会出现问题。
(3)环境变量配置问题及解决方案
问题:用arm编译器编译的时候出现问题。
解决:找到问题来源,是在设置环境变量时出现错误,修改PATH变量时路径输入有误,导致后来使用编译命令时找不到这条命令,重新设置PATH变量后就可以进行编译了。
- 问题链接:《信息安全系统设计基础》 实验二
- 关于编译pthread.c的时候输入命令回车之后总是提示“not found”的问题:
我们小组在执行一些诸如 cd XXX,或者vi XXX命令的时候,经常遇到这样的错误提示。后来经过与实验指导书的对比,我们发现,实验指导书中的路径和实际执行时的路径是有差别的(比如,pthread文件在虚拟机中的绝对路径就是 /bc/02pthread,而不是指导书中的exp/basic/02pthread)。
- 关于编译pthread.c的时候输入命令回车之后总是提示“not found”的问题:
- 问题链接:20145239 20144303 《信息安全系统设计基础》 实验二 固件设计
-
- 在执行./term 时出现下面的错误:
/dev/ttyS0: No such file or directory
- 解决方法:
在 Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为
/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于
/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接。
首先在超级终端中进入/dev文件夹中。
输入命令:“ln –sf /dev/tts/0 /dev/ttyS0”
-
- 问题链接:20145312 《信息安全系统设计基础》实验二 固件设计
- 问题:
- make无法使用
解决:
- 这个是由于Makefile中环境变量的设置和在本机中的不同导致的,两个解决方法:
一是把其中的环境变量修改一下,这个是在别人的帮助下完成的; 二是直接手动编译即可。我们选择的是直接手动编译。
问题:
- 在超级终端窗口,进入03_tty所在目录,运行term时,出现错误
/dev/ttyS0:No such file or directory
解决:
- 这个按照指导书的方法解决了:
[/mnt/yaffs]cd /dev
[/dev] ln –sf /dev/tts/0 ttyS0 (注意字母大小写,数字为0或1)
- 这是因为在 Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 而在开发板中串口设备位于/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接。
- 问题:
- 问题链接:20145229&20145316 《信息安全系统设计基础》 实验二 固件设计
-
- 在终端执行./term出现问题
解决方式:通过上面注意,在终端中进入/dev中,后输入命令“ln –sf /dev/tts/0 /dev/ttyS0”即可得到解决
- 在终端执行./term出现问题
-
- 问题链接:20145218&20145240 《信息安全系统设计基础》实验二 固件设计
-
- 在超级终端运行term时出现错误
在 Linux 下串口文件位于/dev 下,之前的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下,开发板中没有ttyS0设备导致出现问题,于是我们在超级终端进入了/dev文件夹后输入:ln –sf /dev/tts/0 ttyS0后建立了开发板和超级终端的连接,即可解决问题。
-
- 问题链接:《信息安全系统设计基础》实验二实验报告
- 问题:在超级终端中运行代码出现错误
解决方法:代码的路径有问题,需要找到正确的代码路径才可以成功的运行代码
- 问题:在超级终端中运行代码出现错误
- 问题链接:20145219《信息安全系统设计基础》实验二 固件开发
-
- pthread.c分析
先设置一个整数的圆形缓冲区,并初始化缓冲区(初始化缓存指针信息(信号量)),再向缓冲区中写入一个整数,接着从缓冲区中读出一个整数(此步骤与写入类似),然后实现一个生产者程序:生产者线程不断顺序地将0到1000的数字写入共享的循环缓冲区,当生产-1时,程序终止;或者消费掉缓存中生产出来的数据:消费者线程不断地从共享的循环缓冲区读取数据,当消费-1时,程序终止。最后,等待生产者、消费者进程结束。
这个代码是
生产者-消费者问题模型
的实现。 - term.c分析
先通过标准的文件打开函数打开串口,接着设置串口,包括:波特率设置、效验位和停止位设置(串口的设置主要是设置struct termios结构体的各成员值),然后把串口当作文件读写,最后关闭串口。
- pthread.c分析
-
- 问题链接:20145315 20145304 《信息安全系统设计基础》实验二 固件设计
-
- 一开始我们的arm总是无连接,后来更换了实验箱
- 出现错误,可能是命令输错了,后来用tab键补全命令,解决问题。
- 问题链接:实验二-固件设计 20145213祁玮 20145222黄亚奇
-
- 关于代码阅读(互斥锁与信号量)方面:
pthread_cond_signal(&b->notfull);
pthread_mutex_unlock(&b->lock);
这两个变量的作用是否是重复的?【解答:通过查阅实验原理,我得到了如下的解释:互斥锁很明显的缺点是它只有两个状态:锁定和非锁定;而条件变量通过允许线程阻塞和等待另一个进程发送信号的方法来弥补互斥锁的不足。使用的时候,条件变量】
- 关于代码阅读(线程创建和等待函数)方面:
pthread_create(&th_a, NULL, producer, 0); pthread_create(&th_b, NULL, consumer, 0); pthread_join(th_a, &retval); pthread_join(th_b, &retval);
这两个函数各自的作用和参数含义是什么?
答:
【create和join函数是线程API函数库中很重要的函数。关于其含义和作用,我在指导书中找到了如下解释。此外,老师在课上也对此方面的内容进行了涉及。】
【另外,关于为什么main函数要调用pthreadjoin函数阻塞自己:因为main函数和producer函数、consumer函数其实是并发的三个线程,所以如果不做干预的话,它们执行结束的顺序不能确定(而我们希望看到的是main函数在另外两个函数之后结束)。所以调用pthreadjoin函数使main函数执行等待。】- 关于编译pthread.c的时候输入命令回车之后总是提示“not found”的问题:
我们小组在执行一些诸如 cd XXX,或者vi XXX命令的时候,经常遇到这样的错误提示。后来经过与实验指导书的对比,我们发现,实验指导书中的路径和实际执行时的路径是有差别的(比如,pthread文件在虚拟机中的绝对路径就是 /bc/02pthread,而不是指导书中的exp/basic/02pthread)。
- 问题链接:20145216 20145330 《信息安全系统设计基础》 实验二 固件开发
- 问题1:
- 在虚拟机中编译代码时第一次没有编译成功:command not found
- 解决方法:
- 在又重新输入命令行,排除是输入错误的因素。我们试着重新配置了环境:
- vi /root/.bash_profile
- source /root/.bash_profile
- 在又重新输入命令行,排除是输入错误的因素。我们试着重新配置了环境:
- 成功
- 文件03_tty遇到同样的问题,配置后同样成功问题解决
问题2:
- 在终端执行./term时出现错误
- 解决方法:根据实验指导书输入命令“ln –sf /dev/tts/0 /dev/ttyS0” 注意空格与字母l、数字0。
- 运行成功实验二完成
- 在虚拟机中编译代码时第一次没有编译成功:command not found
- 问题1:
- 问题链接:20145324 20145325《信息安全系统设计基础》实验二
- ①在输入包含文件名为“armv4l-tools”的命令时总是报错
原因是因为没仔细辨认“l”与“1”的区别,导致无法找到文件
使用tab键不全命令即可②在超级终端运行term时出现错误
开发板中没有ttyS0设备导致出现问题、
在超级终端进入了/dev文件夹后输入:ln –sf /dev/tts/0 ttyS0后建立了开发板和超级终端的连接
- ①在输入包含文件名为“armv4l-tools”的命令时总是报错
- 问题链接:20145221高其&20145326蔡馨熠《信息安全系统设计基础》实验二 固件设计
-
- 问题1:在超级终端运行可执行文件
term
时出错,提示/dev/ttyS0: No such file or directory。
- 解决方法:老师给的实验指导书中说:这个问题是因为在Linux下串口文件位于
/dev
下,一般在老版本的内核中串口一为/dev/ttyS0
,串口二为/dev/ttyS1
, 在我们的开发板中串口设备位于/dev/tts/
下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接。解决方法就是按照实验指导书说的在超级终端中进入/dev
文件夹中,输入命令ln –sf /dev/tts/0 ttyS0
(注意空格与字母l、数字0。)
- 问题1:在超级终端运行可执行文件
-
- 问题链接:20145223《信息安全系统设计》 实验二 固件开发
-
问题:如果在执行./term 时出现错误:/dev/ttyS0: No such file or directory No such file or directory
解决:在 Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接。
1、首先在超级终端中进入/dev文件夹中。
[/mnt/yaffs] cd /dev
2、输入命令“ln –sf /dev/tts/0 /dev/ttyS0” 注意空格与字母l、数字0。建立一个与端口tts和端口ttyS0的连接,输入指令如下:
[/dev] ln –sf /dev/tts/0 ttyS0//(注意首字母是l, 不是数字1)
-
- s