北京电子科技学院(BESTI)实验报告2

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

班级:1452、1453

姓名:(按贡献大小排名)郑凯杰 、周恩德

学号:(按贡献大小排名)20145314 、20145217

指导教师:娄嘉鹏

实验日期:2016.11.10

实验时间:10:00—12:00

仪器组次:

必修/选修:必修

实验序号:2

实验名称:固件设计

一、实验目的与要求:

  1. 了解多线程程序设计的基本原理,学习 pthread 库函数的使用。
  2. 了解在 linux 环境下串行程序设计的基本方法。
  3. 掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用。学习使用多线程来完成串口的收发处理。
  4. 熟悉linux开发环境,学会基于S3C2410的linux开发环境的配置和使用。使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程

实验仪器:

  • arm UP-TECH
  • PC机 XP系统

线程创建函数:

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)

唤醒线程等待条件变量:

 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、连接 arm 开发板

  • 将 arm 开发板电源线接好,保持开发板开关处于闭合状态。
  • 再分别将串口线,并口线和网线与 pc 机连接好。

2、建立超级终端

运行 windows XP 系统下“开始”、“所有程序”、“附件”、“通讯”、“超级终端”。新建一个通信终端,取名为 arm。

图1:

在属性对话框中,将波特率设为 115200,数据位设为 8,无奇偶校验,停止位为 1,无数据流控制,另存为在桌面。

图2:

3、启动实验平台

打开超级终端,打开 arm 机电源开关。等待一分钟, arm 机的信息会显示在超级终端的窗口中。输入 ifconfig 命令,记录下 arm 机的 ip为: 192.168.0.121。

图3:

4、修改xp系统与redhat虚拟机的ip

在 pc机中的 xp系统中,本次实验中将 pc机的 ip设为 192.168.0.55,

图4:

redhat虚拟机 ip为 192.168.0.234。

图5:

修改完 IP, 重启一下虚拟机, IP 才能启作用。 重启后在命令行中使用 ifconfig 确认修改正确。

5、安装 arm 编译器。

在 pc 机中“开始”、“运行”,输入虚拟机的 ip。 \192.168.0.234,输入用户名 bc,密码 123456 。

然后确定就可以访问虚拟机的文件了。然后把所需文件解压缩拷贝到共享文件夹 bc 中。

6、配置环境变量

在虚拟机中使用vi修改/root/.bash_profile文件中的PATH变量为PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/ (因为该文件为隐藏系统文件,所以使用ls命令不可见),存盘后执行:source/root/.bash_profile,则以后armv4l-unknown-linux-gcc 会自动搜索到,可以在终端上输入。

7、验证实验代码

1.将实验代码拷贝到共享文件夹中。

2、在虚拟机中编译代码。对于多线程相关的代码,编译时需要加-lpthread的库

下载调试在超级终端中运行可执行文件pthread!

运行可执行文件term。

tu2:

三、实验过程中遇到的问题以及解决方案。

(1)03_tty代码使用编译工具armv4l编译时无法通过

解决:代码存储路径如若包含了中文就无法通过编译,我们只需要把该文件夹放在bc下目录下,就可以完成编译了。

(2)输入命令出现错误

解决:Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接,输入ln –sf /dev/tts/0 /dev/ttyS0命令即可

四、心得体会:

实验二与实验一要采用同样的配置环境,因此我们直接往下做,从上面的第5步开始。整个过程我还没有特别的问题,只是一些编译问题。解决方案如上。

参考资料

北京电子科技学院(BESTI)实验报告2的更多相关文章

  1. 北京电子科技学院(BESTI)实验报告5

    北京电子科技学院(BESTI)实验报告5 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名) 郑凯杰.周恩德 学号:(按贡献大小排名) 20145314.20145217 ...

  2. 北京电子科技学院(BESTI)实验报告4

    北京电子科技学院(BESTI)实验报告4 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名)周恩德 .郑凯杰 学号:(按贡献大小排名)20145217 .201453 指 ...

  3. 北京电子科技学院(BESTI)实验报告1

    北京电子科技学院(BESTI)实验报告1 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名)郑凯杰 .周恩德 学号:(按贡献大小排名)20145314 .20145217 ...

  4. 北京电子科技学院(BESTI)实验报告3

    北京电子科技学院(BESTI)实验报告3 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名)周恩德 .郑凯杰 学号:(按贡献大小排名)20145217 .201453 指 ...

  5. YOU种你来丨i春秋校园行第一站北京电子科技学院

    发通告啦 i春秋互联网安全校园行即将火爆开启,第一站我们将来到北京电子科技学院.对网络安全感兴趣的大学生们注意啦,我们将走进校园送福利,Are you ready? i春秋简介 i春秋拥有全国最大的网 ...

  6. 王译潇20162314 实验报告三plus结对编程四则运算第一阶段

    北京电子科技学院BESTI实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 王译潇 学号:20162314 指导教师:娄佳鹏老师.王志强老师 实验日期:2017年5月12号 实验密级: 非 ...

  7. wyx20162314实验报告二

    北京电子科技学院BESTI实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 王译潇 学号:20162310 指导教师:娄佳鹏老师.王志强老师 实验日期:2017年3月26号 实验密级: 非 ...

  8. wyx20162314实验报告1

    北京电子科技学院BESTI实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 王译潇 学号:20162310 指导教师:娄佳鹏老师.王志强老师 实验日期:2017年3月26号 实验密级: 非 ...

  9. 20145320《Java程序设计》第五次实验报告

    20145320<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18: ...

随机推荐

  1. remote tomcat monitor---jmc--jvisualvm

    http://mspring.org/article/1229----------jmc http://doorgods.blog.163.com/blog/static/78547857201481 ...

  2. postfix邮箱服务器修改附件大小限制遇到的问题与解决

    Q1:邮件大小限制为30M,发送的附件大小为25M,发送后提示邮件大小超过限制 A:邮箱客户端在发送邮件时会把附件进行base64转码,转码之后邮件大小会超过附件+正文的大小,所以10M的附件在经过转 ...

  3. MySQL给一个字段递增赋值

    https://blog.csdn.net/kriszhang/article/details/72125203 首先设置一个变量,初始值为0: set @r:=0; 1 然后更新表中对应的ID列: ...

  4. tomcat启动报错:注释指定的bean类.与现有的冲突.相同的名称和类

    错误: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/business/config ...

  5. 手动编译安装Libvirt之后利用systemctl管理libvirtd服务

    因为要给特殊的虚拟机关联文件指定selinux标签,而默认的Libvirt没有这个功能,所以需要修改LIbvirt源代码,重新编译安装Libvirt,而手动编译安装的LIbvirt,没有办法使用sys ...

  6. 《Monitoring and Tuning the Linux Networking Stack: Receiving Data》翻译

    Overview 从宏观的角度来看,一个packet从网卡到socket接收缓冲区的路径如下所示: 驱动加载并初始化 packet到达网卡 packet通过DMA被拷贝到内核中的一个ring buff ...

  7. Spark2.0机器学习系列之10: 聚类(高斯混合模型 GMM)

    在Spark2.0版本中(不是基于RDD API的MLlib),共有四种聚类方法:      (1)K-means      (2)Latent Dirichlet allocation (LDA)  ...

  8. Linux下多个.c文件的编译和Makefile文件

    在编程的时候,我们可以把一个完整程序的每个函数分离出来,写成.c文件,最后再一起编译和链接.这样有利于程序功能模块化,也方便检查代码错误. .h文件:里面编辑该程序需要引用的头文件. #ifndef  ...

  9. sql server 复制表从一个数据库到另一个数据库

    sql server 复制表从一个数据库到另一个数据库 /*不同服务器数据库之间的数据操作*/ --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQL ...

  10. CSS实现文本超过指定长度显示省略号

    <style type="text/css"> li { width:200px;/*宽度,超过即会溢出*/ line-height:25px;/*设置行间距*/ te ...