20145218&20145240 《信息安全系统设计基础》实验二 固件设计

20145218&20145240 《信息安全系统设计基础》实验二 固件设计

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

班级:1452

姓名:(按贡献大小排名)张晓涵 刘士嘉

学号:(按贡献大小排名)20145218 20145240

指导教师:娄嘉鹏

实验日期:2016.11.10

实验时间:10:00-12:30

实验序号:2

实验目的与要求:

1.熟悉 linux 开发环境,学会基于 S3C2410 的 linux 开发环境的配置和使用。

2.使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。

3.正确使用连接线等实验仪器,并注意保护实验箱。实验结束之后将实验箱送回。

一、实验原理

1、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。

2、了解多线程程序设计的基本原理。

3、学习pthread库函数的使用。

二、线程相关函数
线程创建函数:

int pthread_create (pthread_t * thread_id, __const pthread_attr_t * __attr,void *(*__start_routine) (void *),void *__restrict __arg)

获得父进程 ID:

pthread_t pthread_self (void)

测试两个线程号是否相同:

int pthread_equal (pthread_t __thread1, pthread_t __thread2)

线程退出:

void pthread_exit (void *__retval)

等待指定的线程结束:

int pthread_join (pthread_t __th, void **__thread_return)

互斥量初始化:

pthread_mutex_init (pthread_mutex_t *,__const pthread_mutexattr_t *)

销毁互斥量:

int pthread_mutex_destroy (pthread_mutex_t *__mutex)

再试一次获得对互斥量的锁定(非阻塞) :

int pthread_mutex_trylock (pthread_mutex_t *__mutex)

锁定互斥量(阻塞) :

int pthread_mutex_lock (pthread_mutex_t *__mutex)

解锁互斥量:

int pthread_mutex_unlock (pthread_mutex_t *__mutex)

条件变量初始化:

int pthread_cond_init (pthread_cond_t *__restrict __cond,__const pthread_condattr_t *__restrict __cond_attr)

销毁条件变量 COND:

int pthread_cond_destroy (pthread_cond_t *__cond)

唤醒线程等待条件变量:

int pthread_cond_signal (pthread_cond_t *__cond)

等待条件变量(阻塞) :

int pthread_cond_wait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex)

在指定的时间到达前等待条件变量:

int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict __abstime)

三、实验内容与步骤

1、开发环境的配置同实验一。

2、将实验所需代码02_pthread03_tty拷贝到共享文件夹bc

3、进入虚拟机,可通过ls命令查看所属文件夹下的文件,确保所需文件拷贝成功

4、对于多线程相关的代码,编译时需要先添加-lpthread的库,输入以下命令,运行make产生 pthread 可执行文件

5、下载调试,进入超级终端,在xp环境的超级终端中将共享文件夹挂载好,建立开发板与虚拟机之间的通讯,输入命令/host/02_pthread/pthread运行可执行文件 pthread,观察运行结果的正确性,运行程序最后一部分结果如下:

6、按照同样的方法运行03_tty的可执行文件term, 如果在执行./term 时出现下面的错误No such file or directory,可以通过方法建立一个连接来解决,输入命令ln –sf /dev/tts/0 /dev/ttyS0(注意空格和字母大小写)

7、运行结果后半部分如下,可按ctrl+c终止

四、相关问题

  • 在超级终端运行term时出现错误

在 Linux 下串口文件位于/dev 下,之前的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下,开发板中没有ttyS0设备导致出现问题,于是我们在超级终端进入了/dev文件夹后输入:ln –sf /dev/tts/0 ttyS0后建立了开发板和超级终端的连接,即可解决问题。

五、实验体会

前两个实验是一节实验课完成的,过程基本顺利,实验二在实验一配置完试验环境后就完成的很快,只需添加使用多线程程序相关的库,产生可执行文件后在超级终端中运行即可。

posted @ 2016-11-13 21:07  20145240刘士嘉  阅读(174)  评论(0编辑  收藏  举报